| File: | plugins/spell/lapiz-spell-checker-dialog.c |
| Warning: | line 416, column 25 Use of memory after it is freed |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
| 1 | /* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ | |||
| 2 | /* | |||
| 3 | * lapiz-spell-checker-dialog.c | |||
| 4 | * This file is part of lapiz | |||
| 5 | * | |||
| 6 | * Copyright (C) 2002 Paolo Maggi | |||
| 7 | * | |||
| 8 | * This program is free software; you can redistribute it and/or modify | |||
| 9 | * it under the terms of the GNU General Public License as published by | |||
| 10 | * the Free Software Foundation; either version 2 of the License, or | |||
| 11 | * (at your option) any later version. | |||
| 12 | * | |||
| 13 | * This program is distributed in the hope that it will be useful, | |||
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| 16 | * GNU General Public License for more details. | |||
| 17 | * | |||
| 18 | * You should have received a copy of the GNU General Public License | |||
| 19 | * along with this program; if not, write to the Free Software | |||
| 20 | * Foundation, Inc., 51 Franklin St, Fifth Floor, | |||
| 21 | * Boston, MA 02110-1301, USA. | |||
| 22 | */ | |||
| 23 | ||||
| 24 | /* | |||
| 25 | * Modified by the lapiz Team, 2002. See the AUTHORS file for a | |||
| 26 | * list of people on the lapiz Team. | |||
| 27 | * See the ChangeLog files for a list of changes. | |||
| 28 | */ | |||
| 29 | ||||
| 30 | #ifdef HAVE_CONFIG_H1 | |||
| 31 | #include <config.h> | |||
| 32 | #endif | |||
| 33 | ||||
| 34 | #include <string.h> | |||
| 35 | #include <glib/gi18n.h> | |||
| 36 | #include <ctk/ctk.h> | |||
| 37 | #include <lapiz/lapiz-utils.h> | |||
| 38 | #include "lapiz-spell-checker-dialog.h" | |||
| 39 | #include "lapiz-spell-marshal.h" | |||
| 40 | ||||
| 41 | struct _LapizSpellCheckerDialog | |||
| 42 | { | |||
| 43 | CtkWindow parent_instance; | |||
| 44 | ||||
| 45 | LapizSpellChecker *spell_checker; | |||
| 46 | ||||
| 47 | gchar *misspelled_word; | |||
| 48 | ||||
| 49 | CtkWidget *misspelled_word_label; | |||
| 50 | CtkWidget *word_entry; | |||
| 51 | CtkWidget *check_word_button; | |||
| 52 | CtkWidget *ignore_button; | |||
| 53 | CtkWidget *ignore_all_button; | |||
| 54 | CtkWidget *change_button; | |||
| 55 | CtkWidget *change_all_button; | |||
| 56 | CtkWidget *add_word_button; | |||
| 57 | CtkWidget *close_button; | |||
| 58 | CtkWidget *suggestions_list; | |||
| 59 | CtkWidget *language_label; | |||
| 60 | ||||
| 61 | CtkTreeModel *suggestions_list_model; | |||
| 62 | }; | |||
| 63 | ||||
| 64 | enum | |||
| 65 | { | |||
| 66 | IGNORE, | |||
| 67 | IGNORE_ALL, | |||
| 68 | CHANGE, | |||
| 69 | CHANGE_ALL, | |||
| 70 | ADD_WORD_TO_PERSONAL, | |||
| 71 | LAST_SIGNAL | |||
| 72 | }; | |||
| 73 | ||||
| 74 | enum | |||
| 75 | { | |||
| 76 | COLUMN_SUGGESTIONS, | |||
| 77 | NUM_COLUMNS | |||
| 78 | }; | |||
| 79 | ||||
| 80 | static void update_suggestions_list_model (LapizSpellCheckerDialog *dlg, | |||
| 81 | GSList *suggestions); | |||
| 82 | ||||
| 83 | static void word_entry_changed_handler (CtkEditable *editable, | |||
| 84 | LapizSpellCheckerDialog *dlg); | |||
| 85 | static void close_button_clicked_handler (CtkButton *button, | |||
| 86 | LapizSpellCheckerDialog *dlg); | |||
| 87 | static void suggestions_list_selection_changed_handler (CtkTreeSelection *selection, | |||
| 88 | LapizSpellCheckerDialog *dlg); | |||
| 89 | static void check_word_button_clicked_handler (CtkButton *button, | |||
| 90 | LapizSpellCheckerDialog *dlg); | |||
| 91 | static void add_word_button_clicked_handler (CtkButton *button, | |||
| 92 | LapizSpellCheckerDialog *dlg); | |||
| 93 | static void ignore_button_clicked_handler (CtkButton *button, | |||
| 94 | LapizSpellCheckerDialog *dlg); | |||
| 95 | static void ignore_all_button_clicked_handler (CtkButton *button, | |||
| 96 | LapizSpellCheckerDialog *dlg); | |||
| 97 | static void change_button_clicked_handler (CtkButton *button, | |||
| 98 | LapizSpellCheckerDialog *dlg); | |||
| 99 | static void change_all_button_clicked_handler (CtkButton *button, | |||
| 100 | LapizSpellCheckerDialog *dlg); | |||
| 101 | static void suggestions_list_row_activated_handler (CtkTreeView *view, | |||
| 102 | CtkTreePath *path, | |||
| 103 | CtkTreeViewColumn *column, | |||
| 104 | LapizSpellCheckerDialog *dlg); | |||
| 105 | ||||
| 106 | ||||
| 107 | static guint signals [LAST_SIGNAL] = { 0 }; | |||
| 108 | ||||
| 109 | G_DEFINE_TYPE(LapizSpellCheckerDialog, lapiz_spell_checker_dialog, CTK_TYPE_WINDOW)static void lapiz_spell_checker_dialog_init (LapizSpellCheckerDialog *self); static void lapiz_spell_checker_dialog_class_init (LapizSpellCheckerDialogClass *klass); static GType lapiz_spell_checker_dialog_get_type_once (void); static gpointer lapiz_spell_checker_dialog_parent_class = ((void*)0); static gint LapizSpellCheckerDialog_private_offset ; static void lapiz_spell_checker_dialog_class_intern_init (gpointer klass) { lapiz_spell_checker_dialog_parent_class = g_type_class_peek_parent (klass); if (LapizSpellCheckerDialog_private_offset != 0) g_type_class_adjust_private_offset (klass, &LapizSpellCheckerDialog_private_offset); lapiz_spell_checker_dialog_class_init ((LapizSpellCheckerDialogClass*) klass); } __attribute__ ((__unused__ )) static inline gpointer lapiz_spell_checker_dialog_get_instance_private (LapizSpellCheckerDialog *self) { return (((gpointer) ((guint8 *) (self) + (glong) (LapizSpellCheckerDialog_private_offset)) )); } GType lapiz_spell_checker_dialog_get_type (void) { static GType static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id) == sizeof (gpointer) , "Expression evaluates to false"); (void) (0 ? (gpointer) * ( &static_g_define_type_id) : ((void*)0)); (!(__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id) == sizeof (gpointer), "Expression evaluates to false"); __typeof__ (*(&static_g_define_type_id)) gapg_temp_newval; __typeof__ ((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id ); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5) ; gapg_temp_newval; })) && g_once_init_enter_pointer ( &static_g_define_type_id)); })) ) { GType g_define_type_id = lapiz_spell_checker_dialog_get_type_once (); (__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id) == sizeof (gpointer), "Expression evaluates to false"); 0 ? (void ) (*(&static_g_define_type_id) = (g_define_type_id)) : (void ) 0; g_once_init_leave_pointer ((&static_g_define_type_id ), (gpointer) (guintptr) (g_define_type_id)); })) ; } return static_g_define_type_id ; } __attribute__ ((__noinline__)) static GType lapiz_spell_checker_dialog_get_type_once (void) { GType g_define_type_id = g_type_register_static_simple ((ctk_window_get_type ()), g_intern_static_string ("LapizSpellCheckerDialog" ), sizeof (LapizSpellCheckerDialogClass), (GClassInitFunc)(void (*)(void)) lapiz_spell_checker_dialog_class_intern_init, sizeof (LapizSpellCheckerDialog), (GInstanceInitFunc)(void (*)(void )) lapiz_spell_checker_dialog_init, (GTypeFlags) 0); { {{};} } return g_define_type_id; } | |||
| 110 | ||||
| 111 | static void | |||
| 112 | lapiz_spell_checker_dialog_dispose (GObject *object) | |||
| 113 | { | |||
| 114 | LapizSpellCheckerDialog *dlg = LAPIZ_SPELL_CHECKER_DIALOG (object)((((LapizSpellCheckerDialog*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((object)), ((lapiz_spell_checker_dialog_get_type ())))))); | |||
| 115 | ||||
| 116 | if (dlg->spell_checker != NULL((void*)0)) | |||
| 117 | { | |||
| 118 | g_object_unref (dlg->spell_checker); | |||
| 119 | dlg->spell_checker = NULL((void*)0); | |||
| 120 | } | |||
| 121 | ||||
| 122 | if (dlg->misspelled_word != NULL((void*)0)) | |||
| 123 | { | |||
| 124 | g_free (dlg->misspelled_word); | |||
| 125 | dlg->misspelled_word = NULL((void*)0); | |||
| 126 | } | |||
| 127 | ||||
| 128 | G_OBJECT_CLASS (lapiz_spell_checker_dialog_parent_class)((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass *) ((lapiz_spell_checker_dialog_parent_class)), (((GType) ((20 ) << (2))))))))->dispose (object); | |||
| 129 | } | |||
| 130 | ||||
| 131 | static void | |||
| 132 | lapiz_spell_checker_dialog_class_init (LapizSpellCheckerDialogClass * klass) | |||
| 133 | { | |||
| 134 | GObjectClass *object_class; | |||
| 135 | ||||
| 136 | object_class = G_OBJECT_CLASS (klass)((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass *) ((klass)), (((GType) ((20) << (2)))))))); | |||
| 137 | ||||
| 138 | object_class->dispose = lapiz_spell_checker_dialog_dispose; | |||
| 139 | ||||
| 140 | signals[IGNORE] = | |||
| 141 | g_signal_new ("ignore", | |||
| 142 | G_OBJECT_CLASS_TYPE (object_class)((((GTypeClass*) (object_class))->g_type)), | |||
| 143 | G_SIGNAL_RUN_LAST, | |||
| 144 | G_STRUCT_OFFSET (LapizSpellCheckerDialogClass, ignore)((glong) __builtin_offsetof(LapizSpellCheckerDialogClass, ignore )), | |||
| 145 | NULL((void*)0), NULL((void*)0), | |||
| 146 | lapiz_marshal_VOID__STRINGg_cclosure_marshal_VOID__STRING, | |||
| 147 | G_TYPE_NONE((GType) ((1) << (2))), | |||
| 148 | 1, | |||
| 149 | G_TYPE_STRING((GType) ((16) << (2)))); | |||
| 150 | ||||
| 151 | signals[IGNORE_ALL] = | |||
| 152 | g_signal_new ("ignore_all", | |||
| 153 | G_OBJECT_CLASS_TYPE (object_class)((((GTypeClass*) (object_class))->g_type)), | |||
| 154 | G_SIGNAL_RUN_LAST, | |||
| 155 | G_STRUCT_OFFSET (LapizSpellCheckerDialogClass, ignore_all)((glong) __builtin_offsetof(LapizSpellCheckerDialogClass, ignore_all )), | |||
| 156 | NULL((void*)0), NULL((void*)0), | |||
| 157 | lapiz_marshal_VOID__STRINGg_cclosure_marshal_VOID__STRING, | |||
| 158 | G_TYPE_NONE((GType) ((1) << (2))), | |||
| 159 | 1, | |||
| 160 | G_TYPE_STRING((GType) ((16) << (2)))); | |||
| 161 | ||||
| 162 | signals[CHANGE] = | |||
| 163 | g_signal_new ("change", | |||
| 164 | G_OBJECT_CLASS_TYPE (object_class)((((GTypeClass*) (object_class))->g_type)), | |||
| 165 | G_SIGNAL_RUN_LAST, | |||
| 166 | G_STRUCT_OFFSET (LapizSpellCheckerDialogClass, change)((glong) __builtin_offsetof(LapizSpellCheckerDialogClass, change )), | |||
| 167 | NULL((void*)0), NULL((void*)0), | |||
| 168 | lapiz_marshal_VOID__STRING_STRING, | |||
| 169 | G_TYPE_NONE((GType) ((1) << (2))), | |||
| 170 | 2, | |||
| 171 | G_TYPE_STRING((GType) ((16) << (2))), | |||
| 172 | G_TYPE_STRING((GType) ((16) << (2)))); | |||
| 173 | ||||
| 174 | signals[CHANGE_ALL] = | |||
| 175 | g_signal_new ("change_all", | |||
| 176 | G_OBJECT_CLASS_TYPE (object_class)((((GTypeClass*) (object_class))->g_type)), | |||
| 177 | G_SIGNAL_RUN_LAST, | |||
| 178 | G_STRUCT_OFFSET (LapizSpellCheckerDialogClass, change_all)((glong) __builtin_offsetof(LapizSpellCheckerDialogClass, change_all )), | |||
| 179 | NULL((void*)0), NULL((void*)0), | |||
| 180 | lapiz_marshal_VOID__STRING_STRING, | |||
| 181 | G_TYPE_NONE((GType) ((1) << (2))), | |||
| 182 | 2, | |||
| 183 | G_TYPE_STRING((GType) ((16) << (2))), | |||
| 184 | G_TYPE_STRING((GType) ((16) << (2)))); | |||
| 185 | ||||
| 186 | signals[ADD_WORD_TO_PERSONAL] = | |||
| 187 | g_signal_new ("add_word_to_personal", | |||
| 188 | G_OBJECT_CLASS_TYPE (object_class)((((GTypeClass*) (object_class))->g_type)), | |||
| 189 | G_SIGNAL_RUN_LAST, | |||
| 190 | G_STRUCT_OFFSET (LapizSpellCheckerDialogClass, add_word_to_personal)((glong) __builtin_offsetof(LapizSpellCheckerDialogClass, add_word_to_personal )), | |||
| 191 | NULL((void*)0), NULL((void*)0), | |||
| 192 | lapiz_marshal_VOID__STRINGg_cclosure_marshal_VOID__STRING, | |||
| 193 | G_TYPE_NONE((GType) ((1) << (2))), | |||
| 194 | 1, | |||
| 195 | G_TYPE_STRING((GType) ((16) << (2)))); | |||
| 196 | } | |||
| 197 | ||||
| 198 | static void | |||
| 199 | create_dialog (LapizSpellCheckerDialog *dlg, | |||
| 200 | const gchar *data_dir) | |||
| 201 | { | |||
| 202 | CtkWidget *error_widget; | |||
| 203 | CtkWidget *content; | |||
| 204 | CtkTreeViewColumn *column; | |||
| 205 | CtkCellRenderer *cell; | |||
| 206 | CtkTreeSelection *selection; | |||
| 207 | gchar *root_objects[] = { | |||
| 208 | "content", | |||
| 209 | "check_word_image", | |||
| 210 | "add_word_image", | |||
| 211 | "ignore_image", | |||
| 212 | "change_image", | |||
| 213 | "ignore_all_image", | |||
| 214 | "change_all_image", | |||
| 215 | NULL((void*)0) | |||
| 216 | }; | |||
| 217 | gboolean ret; | |||
| 218 | gchar *ui_file; | |||
| 219 | ||||
| 220 | g_return_if_fail (dlg != NULL)do { if ((dlg != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "dlg != NULL"); return ; } } while (0); | |||
| 221 | ||||
| 222 | dlg->spell_checker = NULL((void*)0); | |||
| 223 | dlg->misspelled_word = NULL((void*)0); | |||
| 224 | ||||
| 225 | ui_file = g_build_filename (data_dir, "spell-checker.ui", NULL((void*)0)); | |||
| 226 | ret = lapiz_utils_get_ui_objects (ui_file, | |||
| 227 | root_objects, | |||
| 228 | &error_widget, | |||
| 229 | ||||
| 230 | "content", &content, | |||
| 231 | "misspelled_word_label", &dlg->misspelled_word_label, | |||
| 232 | "word_entry", &dlg->word_entry, | |||
| 233 | "check_word_button", &dlg->check_word_button, | |||
| 234 | "ignore_button", &dlg->ignore_button, | |||
| 235 | "ignore_all_button", &dlg->ignore_all_button, | |||
| 236 | "change_button", &dlg->change_button, | |||
| 237 | "change_all_button", &dlg->change_all_button, | |||
| 238 | "add_word_button", &dlg->add_word_button, | |||
| 239 | "close_button", &dlg->close_button, | |||
| 240 | "suggestions_list", &dlg->suggestions_list, | |||
| 241 | "language_label", &dlg->language_label, | |||
| 242 | NULL((void*)0)); | |||
| 243 | g_free (ui_file); | |||
| 244 | ||||
| 245 | if (!ret) | |||
| 246 | { | |||
| 247 | ctk_widget_show (error_widget); | |||
| 248 | ||||
| 249 | ctk_box_pack_start (CTK_BOX (ctk_dialog_get_content_area (CTK_DIALOG (dlg)))((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_dialog_get_content_area (((((CtkDialog*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((dlg)), ((ctk_dialog_get_type ()))))))))) , ((ctk_box_get_type ())))))), | |||
| 250 | error_widget, TRUE(!(0)), TRUE(!(0)), 0); | |||
| 251 | ||||
| 252 | return; | |||
| 253 | } | |||
| 254 | ||||
| 255 | ctk_label_set_label (CTK_LABEL (dlg->misspelled_word_label)((((CtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->misspelled_word_label)), ((ctk_label_get_type () )))))), ""); | |||
| 256 | ctk_widget_set_sensitive (dlg->word_entry, FALSE(0)); | |||
| 257 | ctk_widget_set_sensitive (dlg->check_word_button, FALSE(0)); | |||
| 258 | ctk_widget_set_sensitive (dlg->ignore_button, FALSE(0)); | |||
| 259 | ctk_widget_set_sensitive (dlg->ignore_all_button, FALSE(0)); | |||
| 260 | ctk_widget_set_sensitive (dlg->change_button, FALSE(0)); | |||
| 261 | ctk_widget_set_sensitive (dlg->change_all_button, FALSE(0)); | |||
| 262 | ctk_widget_set_sensitive (dlg->add_word_button, FALSE(0)); | |||
| 263 | ||||
| 264 | ctk_label_set_label (CTK_LABEL (dlg->language_label)((((CtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->language_label)), ((ctk_label_get_type ())))))), ""); | |||
| 265 | ||||
| 266 | ctk_container_add (CTK_CONTAINER (dlg)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), ((ctk_container_get_type ())))))), content); | |||
| 267 | g_object_unref (content); | |||
| 268 | ||||
| 269 | ctk_window_set_resizable (CTK_WINDOW (dlg)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), ((ctk_window_get_type ())))))), FALSE(0)); | |||
| 270 | ctk_window_set_title (CTK_WINDOW (dlg)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), ((ctk_window_get_type ())))))), _("Check Spelling")gettext ("Check Spelling")); | |||
| 271 | ||||
| 272 | /* Suggestion list */ | |||
| 273 | dlg->suggestions_list_model = CTK_TREE_MODEL (((((CtkTreeModel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_list_store_new (NUM_COLUMNS, ((GType) ((16) << (2)))))), ((ctk_tree_model_get_type ())))))) | |||
| 274 | ctk_list_store_new (NUM_COLUMNS, G_TYPE_STRING))((((CtkTreeModel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_list_store_new (NUM_COLUMNS, ((GType) ((16) << (2)))))), ((ctk_tree_model_get_type ())))))); | |||
| 275 | ||||
| 276 | ctk_tree_view_set_model (CTK_TREE_VIEW (dlg->suggestions_list)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->suggestions_list)), ((ctk_tree_view_get_type ()) ))))), | |||
| 277 | dlg->suggestions_list_model); | |||
| 278 | ||||
| 279 | /* Add the suggestions column */ | |||
| 280 | cell = ctk_cell_renderer_text_new (); | |||
| 281 | column = ctk_tree_view_column_new_with_attributes (_("Suggestions")gettext ("Suggestions"), cell, | |||
| 282 | "text", COLUMN_SUGGESTIONS, NULL((void*)0)); | |||
| 283 | ||||
| 284 | ctk_tree_view_append_column (CTK_TREE_VIEW (dlg->suggestions_list)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->suggestions_list)), ((ctk_tree_view_get_type ()) ))))), column); | |||
| 285 | ||||
| 286 | ctk_tree_view_set_search_column (CTK_TREE_VIEW (dlg->suggestions_list)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->suggestions_list)), ((ctk_tree_view_get_type ()) ))))), | |||
| 287 | COLUMN_SUGGESTIONS); | |||
| 288 | ||||
| 289 | selection = ctk_tree_view_get_selection (CTK_TREE_VIEW (dlg->suggestions_list)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->suggestions_list)), ((ctk_tree_view_get_type ()) )))))); | |||
| 290 | ||||
| 291 | ctk_tree_selection_set_mode (selection, CTK_SELECTION_SINGLE); | |||
| 292 | ||||
| 293 | /* Set default button */ | |||
| 294 | ctk_widget_set_can_default (dlg->change_button, TRUE(!(0))); | |||
| 295 | ctk_widget_grab_default (dlg->change_button); | |||
| 296 | ||||
| 297 | ctk_entry_set_activates_default (CTK_ENTRY (dlg->word_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->word_entry)), ((ctk_entry_get_type ())))))), TRUE(!(0))); | |||
| 298 | ||||
| 299 | ctk_button_set_image (CTK_BUTTON (dlg->close_button)((((CtkButton*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->close_button)), ((ctk_button_get_type ())))))), | |||
| 300 | ctk_image_new_from_icon_name ("window-close", CTK_ICON_SIZE_BUTTON)); | |||
| 301 | ||||
| 302 | /* Connect signals */ | |||
| 303 | g_signal_connect (dlg->word_entry, "changed",g_signal_connect_data ((dlg->word_entry), ("changed"), ((( GCallback) (word_entry_changed_handler))), (dlg), ((void*)0), (GConnectFlags) 0) | |||
| 304 | G_CALLBACK (word_entry_changed_handler), dlg)g_signal_connect_data ((dlg->word_entry), ("changed"), ((( GCallback) (word_entry_changed_handler))), (dlg), ((void*)0), (GConnectFlags) 0); | |||
| 305 | g_signal_connect (dlg->close_button, "clicked",g_signal_connect_data ((dlg->close_button), ("clicked"), ( ((GCallback) (close_button_clicked_handler))), (dlg), ((void* )0), (GConnectFlags) 0) | |||
| 306 | G_CALLBACK (close_button_clicked_handler), dlg)g_signal_connect_data ((dlg->close_button), ("clicked"), ( ((GCallback) (close_button_clicked_handler))), (dlg), ((void* )0), (GConnectFlags) 0); | |||
| 307 | g_signal_connect (selection, "changed",g_signal_connect_data ((selection), ("changed"), (((GCallback ) (suggestions_list_selection_changed_handler))), (dlg), ((void *)0), (GConnectFlags) 0) | |||
| 308 | G_CALLBACK (suggestions_list_selection_changed_handler),g_signal_connect_data ((selection), ("changed"), (((GCallback ) (suggestions_list_selection_changed_handler))), (dlg), ((void *)0), (GConnectFlags) 0) | |||
| 309 | dlg)g_signal_connect_data ((selection), ("changed"), (((GCallback ) (suggestions_list_selection_changed_handler))), (dlg), ((void *)0), (GConnectFlags) 0); | |||
| 310 | g_signal_connect (dlg->check_word_button, "clicked",g_signal_connect_data ((dlg->check_word_button), ("clicked" ), (((GCallback) (check_word_button_clicked_handler))), (dlg) , ((void*)0), (GConnectFlags) 0) | |||
| 311 | G_CALLBACK (check_word_button_clicked_handler), dlg)g_signal_connect_data ((dlg->check_word_button), ("clicked" ), (((GCallback) (check_word_button_clicked_handler))), (dlg) , ((void*)0), (GConnectFlags) 0); | |||
| 312 | g_signal_connect (dlg->add_word_button, "clicked",g_signal_connect_data ((dlg->add_word_button), ("clicked") , (((GCallback) (add_word_button_clicked_handler))), (dlg), ( (void*)0), (GConnectFlags) 0) | |||
| 313 | G_CALLBACK (add_word_button_clicked_handler), dlg)g_signal_connect_data ((dlg->add_word_button), ("clicked") , (((GCallback) (add_word_button_clicked_handler))), (dlg), ( (void*)0), (GConnectFlags) 0); | |||
| 314 | g_signal_connect (dlg->ignore_button, "clicked",g_signal_connect_data ((dlg->ignore_button), ("clicked"), ( ((GCallback) (ignore_button_clicked_handler))), (dlg), ((void *)0), (GConnectFlags) 0) | |||
| 315 | G_CALLBACK (ignore_button_clicked_handler), dlg)g_signal_connect_data ((dlg->ignore_button), ("clicked"), ( ((GCallback) (ignore_button_clicked_handler))), (dlg), ((void *)0), (GConnectFlags) 0); | |||
| 316 | g_signal_connect (dlg->ignore_all_button, "clicked",g_signal_connect_data ((dlg->ignore_all_button), ("clicked" ), (((GCallback) (ignore_all_button_clicked_handler))), (dlg) , ((void*)0), (GConnectFlags) 0) | |||
| 317 | G_CALLBACK (ignore_all_button_clicked_handler), dlg)g_signal_connect_data ((dlg->ignore_all_button), ("clicked" ), (((GCallback) (ignore_all_button_clicked_handler))), (dlg) , ((void*)0), (GConnectFlags) 0); | |||
| 318 | g_signal_connect (dlg->change_button, "clicked",g_signal_connect_data ((dlg->change_button), ("clicked"), ( ((GCallback) (change_button_clicked_handler))), (dlg), ((void *)0), (GConnectFlags) 0) | |||
| 319 | G_CALLBACK (change_button_clicked_handler), dlg)g_signal_connect_data ((dlg->change_button), ("clicked"), ( ((GCallback) (change_button_clicked_handler))), (dlg), ((void *)0), (GConnectFlags) 0); | |||
| 320 | g_signal_connect (dlg->change_all_button, "clicked",g_signal_connect_data ((dlg->change_all_button), ("clicked" ), (((GCallback) (change_all_button_clicked_handler))), (dlg) , ((void*)0), (GConnectFlags) 0) | |||
| 321 | G_CALLBACK (change_all_button_clicked_handler), dlg)g_signal_connect_data ((dlg->change_all_button), ("clicked" ), (((GCallback) (change_all_button_clicked_handler))), (dlg) , ((void*)0), (GConnectFlags) 0); | |||
| 322 | g_signal_connect (dlg->suggestions_list, "row-activated",g_signal_connect_data ((dlg->suggestions_list), ("row-activated" ), (((GCallback) (suggestions_list_row_activated_handler))), ( dlg), ((void*)0), (GConnectFlags) 0) | |||
| 323 | G_CALLBACK (suggestions_list_row_activated_handler), dlg)g_signal_connect_data ((dlg->suggestions_list), ("row-activated" ), (((GCallback) (suggestions_list_row_activated_handler))), ( dlg), ((void*)0), (GConnectFlags) 0); | |||
| 324 | } | |||
| 325 | ||||
| 326 | static void | |||
| 327 | lapiz_spell_checker_dialog_init (LapizSpellCheckerDialog *dlg G_GNUC_UNUSED__attribute__ ((__unused__))) | |||
| 328 | { | |||
| 329 | } | |||
| 330 | ||||
| 331 | CtkWidget * | |||
| 332 | lapiz_spell_checker_dialog_new (const gchar *data_dir) | |||
| 333 | { | |||
| 334 | LapizSpellCheckerDialog *dlg; | |||
| 335 | ||||
| 336 | dlg = LAPIZ_SPELL_CHECKER_DIALOG (((((LapizSpellCheckerDialog*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((g_object_new ((lapiz_spell_checker_dialog_get_type ()), ((void*)0)))), ((lapiz_spell_checker_dialog_get_type () )))))) | |||
| 337 | g_object_new (LAPIZ_TYPE_SPELL_CHECKER_DIALOG, NULL))((((LapizSpellCheckerDialog*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((g_object_new ((lapiz_spell_checker_dialog_get_type ()), ((void*)0)))), ((lapiz_spell_checker_dialog_get_type () )))))); | |||
| 338 | ||||
| 339 | g_return_val_if_fail (dlg != NULL, NULL)do { if ((dlg != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "dlg != NULL"); return (((void*)0)); } } while (0); | |||
| 340 | ||||
| 341 | create_dialog (dlg, data_dir); | |||
| 342 | ||||
| 343 | return CTK_WIDGET (dlg)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), ((ctk_widget_get_type ())))))); | |||
| 344 | } | |||
| 345 | ||||
| 346 | CtkWidget * | |||
| 347 | lapiz_spell_checker_dialog_new_from_spell_checker (LapizSpellChecker *spell, | |||
| 348 | const gchar *data_dir) | |||
| 349 | { | |||
| 350 | LapizSpellCheckerDialog *dlg; | |||
| 351 | ||||
| 352 | g_return_val_if_fail (spell != NULL, NULL)do { if ((spell != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "spell != NULL"); return (((void*)0)); } } while (0); | |||
| ||||
| 353 | ||||
| 354 | dlg = LAPIZ_SPELL_CHECKER_DIALOG (((((LapizSpellCheckerDialog*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((g_object_new ((lapiz_spell_checker_dialog_get_type ()), ((void*)0)))), ((lapiz_spell_checker_dialog_get_type () )))))) | |||
| 355 | g_object_new (LAPIZ_TYPE_SPELL_CHECKER_DIALOG, NULL))((((LapizSpellCheckerDialog*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((g_object_new ((lapiz_spell_checker_dialog_get_type ()), ((void*)0)))), ((lapiz_spell_checker_dialog_get_type () )))))); | |||
| 356 | ||||
| 357 | g_return_val_if_fail (dlg != NULL, NULL)do { if ((dlg != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "dlg != NULL"); return (((void*)0)); } } while (0); | |||
| 358 | ||||
| 359 | create_dialog (dlg, data_dir); | |||
| 360 | ||||
| 361 | lapiz_spell_checker_dialog_set_spell_checker (dlg, spell); | |||
| 362 | ||||
| 363 | return CTK_WIDGET (dlg)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), ((ctk_widget_get_type ())))))); | |||
| 364 | } | |||
| 365 | ||||
| 366 | void | |||
| 367 | lapiz_spell_checker_dialog_set_spell_checker (LapizSpellCheckerDialog *dlg, LapizSpellChecker *spell) | |||
| 368 | { | |||
| 369 | const LapizSpellCheckerLanguage* language; | |||
| 370 | const gchar *lang; | |||
| 371 | gchar *tmp; | |||
| 372 | ||||
| 373 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 374 | g_return_if_fail (spell != NULL)do { if ((spell != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "spell != NULL"); return; } } while (0); | |||
| 375 | ||||
| 376 | if (dlg->spell_checker != NULL((void*)0)) | |||
| 377 | g_object_unref (dlg->spell_checker); | |||
| 378 | ||||
| 379 | dlg->spell_checker = spell; | |||
| 380 | g_object_ref (dlg->spell_checker)((__typeof__ (dlg->spell_checker)) (g_object_ref) (dlg-> spell_checker)); | |||
| 381 | ||||
| 382 | language = lapiz_spell_checker_get_language (dlg->spell_checker); | |||
| 383 | ||||
| 384 | lang = lapiz_spell_checker_language_to_string (language); | |||
| 385 | tmp = g_strdup_printf("<b>%s</b>", lang); | |||
| 386 | ||||
| 387 | ctk_label_set_label (CTK_LABEL (dlg->language_label)((((CtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->language_label)), ((ctk_label_get_type ())))))), tmp); | |||
| 388 | g_free (tmp); | |||
| 389 | ||||
| 390 | if (dlg->misspelled_word != NULL((void*)0)) | |||
| 391 | lapiz_spell_checker_dialog_set_misspelled_word (dlg, dlg->misspelled_word, -1); | |||
| 392 | else | |||
| 393 | ctk_list_store_clear (CTK_LIST_STORE (dlg->suggestions_list_model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->suggestions_list_model)), ((ctk_list_store_get_type ()))))))); | |||
| 394 | ||||
| 395 | /* TODO: reset all widgets */ | |||
| 396 | } | |||
| 397 | ||||
| 398 | void | |||
| 399 | lapiz_spell_checker_dialog_set_misspelled_word (LapizSpellCheckerDialog *dlg, | |||
| 400 | const gchar *word, | |||
| 401 | gint len G_GNUC_UNUSED__attribute__ ((__unused__))) | |||
| 402 | { | |||
| 403 | gchar *tmp; | |||
| 404 | GSList *sug; | |||
| 405 | ||||
| 406 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 407 | g_return_if_fail (word != NULL)do { if ((word != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "word != NULL"); return ; } } while (0); | |||
| 408 | ||||
| 409 | g_return_if_fail (dlg->spell_checker != NULL)do { if ((dlg->spell_checker != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "dlg->spell_checker != NULL" ); return; } } while (0); | |||
| 410 | g_return_if_fail (!lapiz_spell_checker_check_word (dlg->spell_checker, word, -1))do { if ((!lapiz_spell_checker_check_word (dlg->spell_checker , word, -1))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "!lapiz_spell_checker_check_word (dlg->spell_checker, word, -1)" ); return; } } while (0); | |||
| 411 | ||||
| 412 | /* build_suggestions_list */ | |||
| 413 | if (dlg->misspelled_word
| |||
| 414 | g_free (dlg->misspelled_word); | |||
| 415 | ||||
| 416 | dlg->misspelled_word = g_strdup (word)g_strdup_inline (word); | |||
| ||||
| 417 | ||||
| 418 | tmp = g_strdup_printf("<b>%s</b>", word); | |||
| 419 | ctk_label_set_label (CTK_LABEL (dlg->misspelled_word_label)((((CtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->misspelled_word_label)), ((ctk_label_get_type () )))))), tmp); | |||
| 420 | g_free (tmp); | |||
| 421 | ||||
| 422 | sug = lapiz_spell_checker_get_suggestions (dlg->spell_checker, | |||
| 423 | dlg->misspelled_word, | |||
| 424 | -1); | |||
| 425 | ||||
| 426 | update_suggestions_list_model (dlg, sug); | |||
| 427 | ||||
| 428 | /* free the suggestion list */ | |||
| 429 | g_slist_foreach (sug, (GFunc)g_free, NULL((void*)0)); | |||
| 430 | g_slist_free (sug); | |||
| 431 | ||||
| 432 | ctk_widget_set_sensitive (dlg->ignore_button, TRUE(!(0))); | |||
| 433 | ctk_widget_set_sensitive (dlg->ignore_all_button, TRUE(!(0))); | |||
| 434 | ctk_widget_set_sensitive (dlg->add_word_button, TRUE(!(0))); | |||
| 435 | } | |||
| 436 | ||||
| 437 | static void | |||
| 438 | update_suggestions_list_model (LapizSpellCheckerDialog *dlg, GSList *suggestions) | |||
| 439 | { | |||
| 440 | CtkListStore *store; | |||
| 441 | CtkTreeIter iter; | |||
| 442 | CtkTreeSelection *sel; | |||
| 443 | ||||
| 444 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 445 | g_return_if_fail (CTK_IS_LIST_STORE (dlg->suggestions_list_model))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg->suggestions_list_model)); GType __t = ((ctk_list_store_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "CTK_IS_LIST_STORE (dlg->suggestions_list_model)" ); return; } } while (0); | |||
| 446 | ||||
| 447 | store = CTK_LIST_STORE (dlg->suggestions_list_model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->suggestions_list_model)), ((ctk_list_store_get_type ())))))); | |||
| 448 | ctk_list_store_clear (store); | |||
| 449 | ||||
| 450 | ctk_widget_set_sensitive (dlg->word_entry, TRUE(!(0))); | |||
| 451 | ||||
| 452 | if (suggestions == NULL((void*)0)) | |||
| 453 | { | |||
| 454 | ctk_list_store_append (store, &iter); | |||
| 455 | ctk_list_store_set (store, &iter, | |||
| 456 | /* Translators: Displayed in the "Check Spelling" dialog if there are no suggestions | |||
| 457 | * for the current misspelled word */ | |||
| 458 | COLUMN_SUGGESTIONS, _("(no suggested words)")gettext ("(no suggested words)"), | |||
| 459 | -1); | |||
| 460 | ||||
| 461 | ctk_entry_set_text (CTK_ENTRY (dlg->word_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->word_entry)), ((ctk_entry_get_type ())))))), ""); | |||
| 462 | ||||
| 463 | ctk_widget_set_sensitive (dlg->suggestions_list, FALSE(0)); | |||
| 464 | ||||
| 465 | return; | |||
| 466 | } | |||
| 467 | ||||
| 468 | ctk_widget_set_sensitive (dlg->suggestions_list, TRUE(!(0))); | |||
| 469 | ||||
| 470 | ctk_entry_set_text (CTK_ENTRY (dlg->word_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->word_entry)), ((ctk_entry_get_type ())))))), (gchar*)suggestions->data); | |||
| 471 | ||||
| 472 | while (suggestions != NULL((void*)0)) | |||
| 473 | { | |||
| 474 | ctk_list_store_append (store, &iter); | |||
| 475 | ctk_list_store_set (store, &iter, | |||
| 476 | COLUMN_SUGGESTIONS, (gchar*)suggestions->data, | |||
| 477 | -1); | |||
| 478 | ||||
| 479 | suggestions = g_slist_next (suggestions)((suggestions) ? (((GSList *)(suggestions))->next) : ((void *)0)); | |||
| 480 | } | |||
| 481 | ||||
| 482 | sel = ctk_tree_view_get_selection (CTK_TREE_VIEW (dlg->suggestions_list)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->suggestions_list)), ((ctk_tree_view_get_type ()) )))))); | |||
| 483 | ctk_tree_model_get_iter_first (dlg->suggestions_list_model, &iter); | |||
| 484 | ctk_tree_selection_select_iter (sel, &iter); | |||
| 485 | } | |||
| 486 | ||||
| 487 | static void | |||
| 488 | word_entry_changed_handler (CtkEditable *editable G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 489 | LapizSpellCheckerDialog *dlg) | |||
| 490 | { | |||
| 491 | const gchar *text; | |||
| 492 | ||||
| 493 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 494 | ||||
| 495 | text = ctk_entry_get_text (CTK_ENTRY (dlg->word_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->word_entry)), ((ctk_entry_get_type ()))))))); | |||
| 496 | ||||
| 497 | if (g_utf8_strlen (text, -1) > 0) | |||
| 498 | { | |||
| 499 | ctk_widget_set_sensitive (dlg->check_word_button, TRUE(!(0))); | |||
| 500 | ctk_widget_set_sensitive (dlg->change_button, TRUE(!(0))); | |||
| 501 | ctk_widget_set_sensitive (dlg->change_all_button, TRUE(!(0))); | |||
| 502 | } | |||
| 503 | else | |||
| 504 | { | |||
| 505 | ctk_widget_set_sensitive (dlg->check_word_button, FALSE(0)); | |||
| 506 | ctk_widget_set_sensitive (dlg->change_button, FALSE(0)); | |||
| 507 | ctk_widget_set_sensitive (dlg->change_all_button, FALSE(0)); | |||
| 508 | } | |||
| 509 | } | |||
| 510 | ||||
| 511 | static void | |||
| 512 | close_button_clicked_handler (CtkButton *button G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 513 | LapizSpellCheckerDialog *dlg) | |||
| 514 | { | |||
| 515 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 516 | ||||
| 517 | ctk_widget_destroy (CTK_WIDGET (dlg)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), ((ctk_widget_get_type ()))))))); | |||
| 518 | } | |||
| 519 | ||||
| 520 | static void | |||
| 521 | suggestions_list_selection_changed_handler (CtkTreeSelection *selection, | |||
| 522 | LapizSpellCheckerDialog *dlg) | |||
| 523 | { | |||
| 524 | CtkTreeIter iter; | |||
| 525 | GValue value = {0, }; | |||
| 526 | const gchar *text; | |||
| 527 | ||||
| 528 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 529 | ||||
| 530 | if (! ctk_tree_selection_get_selected (selection, NULL((void*)0), &iter)) | |||
| 531 | return; | |||
| 532 | ||||
| 533 | ctk_tree_model_get_value (dlg->suggestions_list_model, &iter, | |||
| 534 | COLUMN_SUGGESTIONS, | |||
| 535 | &value); | |||
| 536 | ||||
| 537 | text = g_value_get_string (&value); | |||
| 538 | ||||
| 539 | ctk_entry_set_text (CTK_ENTRY (dlg->word_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->word_entry)), ((ctk_entry_get_type ())))))), text); | |||
| 540 | ||||
| 541 | g_value_unset (&value); | |||
| 542 | } | |||
| 543 | ||||
| 544 | static void | |||
| 545 | check_word_button_clicked_handler (CtkButton *button G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 546 | LapizSpellCheckerDialog *dlg) | |||
| 547 | { | |||
| 548 | const gchar *word; | |||
| 549 | gssize len; | |||
| 550 | ||||
| 551 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 552 | ||||
| 553 | word = ctk_entry_get_text (CTK_ENTRY (dlg->word_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->word_entry)), ((ctk_entry_get_type ()))))))); | |||
| 554 | len = strlen (word); | |||
| 555 | g_return_if_fail (len > 0)do { if ((len > 0)) { } else { g_return_if_fail_warning (( (gchar*) 0), ((const char*) (__func__)), "len > 0"); return ; } } while (0); | |||
| 556 | ||||
| 557 | if (lapiz_spell_checker_check_word (dlg->spell_checker, word, len)) | |||
| 558 | { | |||
| 559 | CtkListStore *store; | |||
| 560 | CtkTreeIter iter; | |||
| 561 | ||||
| 562 | store = CTK_LIST_STORE (dlg->suggestions_list_model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->suggestions_list_model)), ((ctk_list_store_get_type ())))))); | |||
| 563 | ctk_list_store_clear (store); | |||
| 564 | ||||
| 565 | ctk_list_store_append (store, &iter); | |||
| 566 | ctk_list_store_set (store, &iter, | |||
| 567 | /* Translators: Displayed in the "Check Spelling" dialog if the current word isn't misspelled */ | |||
| 568 | COLUMN_SUGGESTIONS, _("(correct spelling)")gettext ("(correct spelling)"), | |||
| 569 | -1); | |||
| 570 | ||||
| 571 | ctk_widget_set_sensitive (dlg->suggestions_list, FALSE(0)); | |||
| 572 | } | |||
| 573 | else | |||
| 574 | { | |||
| 575 | GSList *sug; | |||
| 576 | ||||
| 577 | sug = lapiz_spell_checker_get_suggestions (dlg->spell_checker, | |||
| 578 | word, | |||
| 579 | len); | |||
| 580 | ||||
| 581 | update_suggestions_list_model (dlg, sug); | |||
| 582 | ||||
| 583 | /* free the suggestion list */ | |||
| 584 | g_slist_foreach (sug, (GFunc)g_free, NULL((void*)0)); | |||
| 585 | g_slist_free (sug); | |||
| 586 | } | |||
| 587 | } | |||
| 588 | ||||
| 589 | static void | |||
| 590 | add_word_button_clicked_handler (CtkButton *button G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 591 | LapizSpellCheckerDialog *dlg) | |||
| 592 | { | |||
| 593 | gchar *word; | |||
| 594 | ||||
| 595 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 596 | g_return_if_fail (dlg->misspelled_word != NULL)do { if ((dlg->misspelled_word != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "dlg->misspelled_word != NULL" ); return; } } while (0); | |||
| 597 | ||||
| 598 | lapiz_spell_checker_add_word_to_personal (dlg->spell_checker, | |||
| 599 | dlg->misspelled_word, | |||
| 600 | -1); | |||
| 601 | ||||
| 602 | word = g_strdup (dlg->misspelled_word)g_strdup_inline (dlg->misspelled_word); | |||
| 603 | ||||
| 604 | g_signal_emit (G_OBJECT (dlg)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), (((GType) ((20) << (2)))))))), signals [ADD_WORD_TO_PERSONAL], 0, word); | |||
| 605 | ||||
| 606 | g_free (word); | |||
| 607 | } | |||
| 608 | ||||
| 609 | static void | |||
| 610 | ignore_button_clicked_handler (CtkButton *button G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 611 | LapizSpellCheckerDialog *dlg) | |||
| 612 | { | |||
| 613 | gchar *word; | |||
| 614 | ||||
| 615 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 616 | g_return_if_fail (dlg->misspelled_word != NULL)do { if ((dlg->misspelled_word != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "dlg->misspelled_word != NULL" ); return; } } while (0); | |||
| 617 | ||||
| 618 | word = g_strdup (dlg->misspelled_word)g_strdup_inline (dlg->misspelled_word); | |||
| 619 | ||||
| 620 | g_signal_emit (G_OBJECT (dlg)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), (((GType) ((20) << (2)))))))), signals [IGNORE], 0, word); | |||
| 621 | ||||
| 622 | g_free (word); | |||
| 623 | } | |||
| 624 | ||||
| 625 | static void | |||
| 626 | ignore_all_button_clicked_handler (CtkButton *button G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 627 | LapizSpellCheckerDialog *dlg) | |||
| 628 | { | |||
| 629 | gchar *word; | |||
| 630 | ||||
| 631 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 632 | g_return_if_fail (dlg->misspelled_word != NULL)do { if ((dlg->misspelled_word != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "dlg->misspelled_word != NULL" ); return; } } while (0); | |||
| 633 | ||||
| 634 | lapiz_spell_checker_add_word_to_session (dlg->spell_checker, | |||
| 635 | dlg->misspelled_word, | |||
| 636 | -1); | |||
| 637 | ||||
| 638 | word = g_strdup (dlg->misspelled_word)g_strdup_inline (dlg->misspelled_word); | |||
| 639 | ||||
| 640 | g_signal_emit (G_OBJECT (dlg)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), (((GType) ((20) << (2)))))))), signals [IGNORE_ALL], 0, word); | |||
| 641 | ||||
| 642 | g_free (word); | |||
| 643 | } | |||
| 644 | ||||
| 645 | static void | |||
| 646 | change_button_clicked_handler (CtkButton *button G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 647 | LapizSpellCheckerDialog *dlg) | |||
| 648 | { | |||
| 649 | const gchar *entry_text; | |||
| 650 | gchar *change; | |||
| 651 | gchar *word; | |||
| 652 | ||||
| 653 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 654 | g_return_if_fail (dlg->misspelled_word != NULL)do { if ((dlg->misspelled_word != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "dlg->misspelled_word != NULL" ); return; } } while (0); | |||
| 655 | ||||
| 656 | entry_text = ctk_entry_get_text (CTK_ENTRY (dlg->word_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->word_entry)), ((ctk_entry_get_type ()))))))); | |||
| 657 | g_return_if_fail (entry_text != NULL)do { if ((entry_text != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "entry_text != NULL" ); return; } } while (0); | |||
| 658 | g_return_if_fail (*entry_text != '\0')do { if ((*entry_text != '\0')) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "*entry_text != '\\0'" ); return; } } while (0); | |||
| 659 | change = g_strdup (entry_text)g_strdup_inline (entry_text); | |||
| 660 | ||||
| 661 | lapiz_spell_checker_set_correction (dlg->spell_checker, | |||
| 662 | dlg->misspelled_word, -1, | |||
| 663 | change, -1); | |||
| 664 | ||||
| 665 | word = g_strdup (dlg->misspelled_word)g_strdup_inline (dlg->misspelled_word); | |||
| 666 | ||||
| 667 | g_signal_emit (G_OBJECT (dlg)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), (((GType) ((20) << (2)))))))), signals [CHANGE], 0, word, change); | |||
| 668 | ||||
| 669 | g_free (word); | |||
| 670 | g_free (change); | |||
| 671 | } | |||
| 672 | ||||
| 673 | /* double click on one of the suggestions is like clicking on "change" */ | |||
| 674 | static void | |||
| 675 | suggestions_list_row_activated_handler (CtkTreeView *view G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 676 | CtkTreePath *path G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 677 | CtkTreeViewColumn *column G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 678 | LapizSpellCheckerDialog *dlg) | |||
| 679 | { | |||
| 680 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 681 | ||||
| 682 | change_button_clicked_handler (CTK_BUTTON (dlg->change_button)((((CtkButton*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->change_button)), ((ctk_button_get_type ())))))), dlg); | |||
| 683 | } | |||
| 684 | ||||
| 685 | static void | |||
| 686 | change_all_button_clicked_handler (CtkButton *button G_GNUC_UNUSED__attribute__ ((__unused__)), | |||
| 687 | LapizSpellCheckerDialog *dlg) | |||
| 688 | { | |||
| 689 | const gchar *entry_text; | |||
| 690 | gchar *change; | |||
| 691 | gchar *word; | |||
| 692 | ||||
| 693 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 694 | g_return_if_fail (dlg->misspelled_word != NULL)do { if ((dlg->misspelled_word != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "dlg->misspelled_word != NULL" ); return; } } while (0); | |||
| 695 | ||||
| 696 | entry_text = ctk_entry_get_text (CTK_ENTRY (dlg->word_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->word_entry)), ((ctk_entry_get_type ()))))))); | |||
| 697 | g_return_if_fail (entry_text != NULL)do { if ((entry_text != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "entry_text != NULL" ); return; } } while (0); | |||
| 698 | g_return_if_fail (*entry_text != '\0')do { if ((*entry_text != '\0')) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "*entry_text != '\\0'" ); return; } } while (0); | |||
| 699 | change = g_strdup (entry_text)g_strdup_inline (entry_text); | |||
| 700 | ||||
| 701 | lapiz_spell_checker_set_correction (dlg->spell_checker, | |||
| 702 | dlg->misspelled_word, -1, | |||
| 703 | change, -1); | |||
| 704 | ||||
| 705 | word = g_strdup (dlg->misspelled_word)g_strdup_inline (dlg->misspelled_word); | |||
| 706 | ||||
| 707 | g_signal_emit (G_OBJECT (dlg)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg)), (((GType) ((20) << (2)))))))), signals [CHANGE_ALL], 0, word, change); | |||
| 708 | ||||
| 709 | g_free (word); | |||
| 710 | g_free (change); | |||
| 711 | } | |||
| 712 | ||||
| 713 | void | |||
| 714 | lapiz_spell_checker_dialog_set_completed (LapizSpellCheckerDialog *dlg) | |||
| 715 | { | |||
| 716 | gchar *tmp; | |||
| 717 | ||||
| 718 | g_return_if_fail (LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((dlg)); GType __t = ((lapiz_spell_checker_dialog_get_type ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-> g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0 ), ((const char*) (__func__)), "LAPIZ_IS_SPELL_CHECKER_DIALOG (dlg)" ); return; } } while (0); | |||
| 719 | ||||
| 720 | tmp = g_strdup_printf("<b>%s</b>", _("Completed spell checking")gettext ("Completed spell checking")); | |||
| 721 | ctk_label_set_label (CTK_LABEL (dlg->misspelled_word_label)((((CtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->misspelled_word_label)), ((ctk_label_get_type () )))))), | |||
| 722 | tmp); | |||
| 723 | g_free (tmp); | |||
| 724 | ||||
| 725 | ctk_list_store_clear (CTK_LIST_STORE (dlg->suggestions_list_model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->suggestions_list_model)), ((ctk_list_store_get_type ()))))))); | |||
| 726 | ctk_entry_set_text (CTK_ENTRY (dlg->word_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dlg->word_entry)), ((ctk_entry_get_type ())))))), ""); | |||
| 727 | ||||
| 728 | ctk_widget_set_sensitive (dlg->word_entry, FALSE(0)); | |||
| 729 | ctk_widget_set_sensitive (dlg->check_word_button, FALSE(0)); | |||
| 730 | ctk_widget_set_sensitive (dlg->ignore_button, FALSE(0)); | |||
| 731 | ctk_widget_set_sensitive (dlg->ignore_all_button, FALSE(0)); | |||
| 732 | ctk_widget_set_sensitive (dlg->change_button, FALSE(0)); | |||
| 733 | ctk_widget_set_sensitive (dlg->change_all_button, FALSE(0)); | |||
| 734 | ctk_widget_set_sensitive (dlg->add_word_button, FALSE(0)); | |||
| 735 | ctk_widget_set_sensitive (dlg->suggestions_list, FALSE(0)); | |||
| 736 | } | |||
| 737 |