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); }
GwSpellcheck* gw_spellcheck_new (GwApplication *application) { GwSpellcheck *spellcheck; spellcheck = GW_SPELLCHECK (g_object_new (GW_TYPE_SPELLCHECK, "application", application, NULL)); return spellcheck; }
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); }
gboolean gw_spellcheck_update_timeout (gpointer data) { //Declarations GwSpellcheck *spellcheck; //Initializaitons spellcheck = GW_SPELLCHECK (data); return gw_spellcheck_update (spellcheck); }
G_MODULE_EXPORT void gw_spellcheck_queue_cb (GtkEditable *editable, gpointer data) { //Declarations GwSpellcheck *spellcheck; //Initializations spellcheck = GW_SPELLCHECK (data); gw_spellcheck_queue (spellcheck); }
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; }
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; }
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); }
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); }
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; }
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; } }
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); }