Пример #1
0
G_MODULE_EXPORT void 
gw_spellcheck_populate_popup_cb (GtkEntry *entry, GtkMenu *menu, gpointer data)
{
    GwSpellcheck *spellcheck;

    spellcheck = GW_SPELLCHECK (data);

    gw_spellcheck_populate_popup (spellcheck, menu);
}
Пример #2
0
GwSpellcheck*
gw_spellcheck_new (GwApplication *application)
{
    GwSpellcheck *spellcheck;

    spellcheck = GW_SPELLCHECK (g_object_new (GW_TYPE_SPELLCHECK, "application", application, NULL));

    return spellcheck;
}
Пример #3
0
G_MODULE_EXPORT void
gw_spellcheck_sync_dictionary_cb (GSettings *settings, gchar *key, gpointer data)
{
    GwSpellcheck *spellcheck;

    spellcheck = GW_SPELLCHECK (data);

    gw_spellcheck_load_dictionary (spellcheck);
    gw_spellcheck_queue (spellcheck);
}
Пример #4
0
gboolean 
gw_spellcheck_update_timeout (gpointer data)
{
    //Declarations
    GwSpellcheck *spellcheck;

    //Initializaitons
    spellcheck = GW_SPELLCHECK (data);

    return gw_spellcheck_update (spellcheck);
}
Пример #5
0
G_MODULE_EXPORT void 
gw_spellcheck_queue_cb (GtkEditable *editable, gpointer data)
{
    //Declarations
    GwSpellcheck *spellcheck;

    //Initializations
    spellcheck = GW_SPELLCHECK (data);

    gw_spellcheck_queue (spellcheck);
}
Пример #6
0
G_MODULE_EXPORT gboolean 
gw_spellcheck_button_press_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
{
    GwSpellcheck *spellcheck;

    spellcheck = GW_SPELLCHECK (data);

    gw_spellcheck_record_mouse_cordinates (spellcheck, event);

    return FALSE;
}
Пример #7
0
G_MODULE_EXPORT void 
gw_spellcheck_sync_rk_conv_cb (GSettings *settings, gchar *key, gpointer data)
{
    //Declarations
    GwSpellcheck *spellcheck;
    GwSpellcheckPrivate *priv;
    gint request;

    spellcheck = GW_SPELLCHECK (data);
    priv = spellcheck->priv;

    request = lw_preferences_get_int (settings, key);

    priv->rk_conv_setting = request;
}
Пример #8
0
static void
gw_spellcheck_finalize (GObject *object)
{
    GwSpellcheck *spellcheck;
    GwSpellcheckPrivate *priv;

    spellcheck = GW_SPELLCHECK (object);
    priv = spellcheck->priv;

    gw_spellcheck_remove_signals (spellcheck);
    gw_spellcheck_clear (spellcheck);

    if (priv->entry != NULL) gtk_widget_queue_draw (GTK_WIDGET (priv->entry));

    G_OBJECT_CLASS (gw_spellcheck_parent_class)->finalize (object);
}
Пример #9
0
void
gw_spellcheck_add_menuitem_activated_cb (GtkWidget *widget, gpointer data)
{
    GwSpellcheck *spellcheck;
    GwSpellcheckPrivate *priv;
    gchar *word;

    spellcheck = GW_SPELLCHECK (data);
    priv = spellcheck->priv;
    word = (gchar*) g_object_get_data (G_OBJECT (widget), "word");

    if (priv->handle == NULL) return;

    Hunspell_add (priv->handle, word);
    gw_spellcheck_queue (spellcheck);
}
Пример #10
0
G_MODULE_EXPORT gboolean 
gw_spellcheck_draw_underline_cb (GtkWidget *widget, cairo_t *cr, gpointer data)
{
    //Declarations
    GwSpellcheck *spellcheck;
    GwSpellcheckPrivate *priv;
    gint x, y, x2, y2;
    GList *link;
    gchar **iter;
    gint start_offset, end_offset;
    gint start_layout_offset, end_layout_offset;

    //Initializations
    spellcheck = GW_SPELLCHECK (data);
    priv = spellcheck->priv;
    iter = priv->tolkens;
    start_offset = end_offset = 0;

    for (link = priv->misspelled; link != NULL && *iter != NULL; link = link->next)
    {
      //Get the letter offsets
      while (*iter != NULL && *iter != (gchar*) link->data)
      {
        start_offset += strlen(*iter) + 1;
        iter++;
      }
      if (*iter != NULL) end_offset = start_offset + strlen(*iter);
      else end_offset = start_offset;

      //Convert it to the layout offset
      start_layout_offset = gtk_entry_text_index_to_layout_index (GTK_ENTRY (widget), start_offset);
      end_layout_offset = gtk_entry_text_index_to_layout_index (GTK_ENTRY (widget), end_offset);

      //Calculate the line
      if (gw_spellcheck_get_line_coordinates (spellcheck, start_layout_offset, end_layout_offset, &x, &y, &x2, &y2))
      {
        gw_spellcheck_draw_line (cr, x, y, x2, y2);
      }
    }

    return FALSE;
}
Пример #11
0
static void 
gw_spellcheck_get_property (GObject      *object,
                            guint         property_id,
                            GValue       *value,
                            GParamSpec   *pspec)
{
    GwSpellcheck *spellcheck;
    GwSpellcheckPrivate *priv;

    spellcheck = GW_SPELLCHECK (object);
    priv = spellcheck->priv;

    switch (property_id)
    {
      case PROP_APPLICATION:
        g_value_set_object (value, priv->application);
        break;
      default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
        break;
    }
}
Пример #12
0
void 
gw_spellcheck_menuitem_activated_cb (GtkWidget *widget, gpointer data)
{
    //Declarations
    GwSpellcheck *spellcheck;
    GwSpellcheckPrivate *priv;
    const gchar *query;
    const gchar *replacement;
    gchar *buffer;
    gint start_offset;
    gint end_offset;
    gint index;

    //Initializations
    spellcheck = GW_SPELLCHECK (data);
    priv = spellcheck->priv;
    query = gtk_entry_get_text (priv->entry);
    start_offset = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "start-offset"));
    end_offset = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "end-offset"));
    replacement = gtk_menu_item_get_label (GTK_MENU_ITEM (widget));
    buffer = g_new (gchar, strlen(replacement) + strlen(query));
    index = gtk_editable_get_position (GTK_EDITABLE (priv->entry));

    //Build the replacement query string
    strncpy(buffer, query, start_offset);
    strcpy (buffer + start_offset, replacement);
    strcat (buffer, query + end_offset);

    //Update where the cursor should be relative to the replacement word length
    if (index >= start_offset + strlen(replacement))
      index += strlen(buffer) - strlen(query);

    //Showtime
    gtk_entry_set_text (GTK_ENTRY (priv->entry), buffer);
    gtk_editable_set_position (GTK_EDITABLE (priv->entry), index);

    //Cleanup
    g_free (buffer);
}