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 |