1 /*******************************************************************************
2 This file is part of WhiteStork.
4 WhiteStork is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 WhiteStork is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with WhiteStork; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 Copyright 2006 ComArch S.A.
19 *******************************************************************************/
20 #include <ws_gui_layout.h>
22 #include <ws_gui_callbacks.h>
27 /** this function creates main window and it components; moreover there are
30 * @param user_data - data set when the signal handler was connected
32 void ws_gui_create_window(gpointer user_data)
34 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
36 ws_gui_app->welcome_note = g_strconcat("<br><br><center><font size=+3>",
37 _("ws_ni_welcome"), "<br><IMG SRC=file:/usr/share/pixmaps/whitestork.png>",
40 ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string =
41 (ws_gui_app->welcome_note);
43 GArray *array_tmp = g_array_new (TRUE, TRUE, sizeof(gchar*));
44 ws_gui_app->raw_translation = g_string_new(" ");
45 ws_gui_app->last_searched = NULL;
46 ws_gui_app->last_searched_in_book = NULL;
47 ws_gui_app->last_word = NULL;
49 ws_gui_app->ws_gui_banner_flag = FALSE;
50 ws_gui_app->ws_gui_full_screen_flag = FALSE;
51 ws_gui_app->caching_flag = FALSE;
52 ws_gui_app->ws_gui_double_click = FALSE;
53 ws_gui_app->ws_gui_sel_flag = FALSE;
54 ws_gui_app->bookmark_mode = FALSE;
55 ws_gui_app->bookmark_avail = TRUE;
56 ws_gui_app->html_flag = TRUE;
58 ws_gui_app->zoom = ZOOM_DEFAULT;
60 ws_gui_app->timer = g_timer_new();
61 g_timer_stop(ws_gui_app->timer);
63 ws_gui_app->ws_gui_history = g_array_new(TRUE, TRUE, sizeof(gchar*));
64 ws_gui_app->ws_gui_history_list = g_array_new(TRUE, TRUE, sizeof(gchar*));
65 ws_gui_app->ws_gui_history_iter = g_array_new(TRUE, TRUE, sizeof(gchar*));
66 ws_gui_app->ws_gui_history_bookmarks = g_array_new(TRUE, TRUE, sizeof(gchar*));
67 ws_gui_app->history_flag = FALSE;
68 ws_gui_app->ws_gui_history_cur_pos = -1;
69 ws_gui_app->history_mode = 0;
71 ws_gui_app->ws_gui_hildon_program =
72 HILDON_PROGRAM(hildon_program_get_instance());
74 g_set_application_name("WhiteStork");
76 ws_gui_app->ws_gui_hildon_window = HILDON_WINDOW(hildon_window_new());
78 hildon_program_add_window(ws_gui_app->ws_gui_hildon_program,
79 ws_gui_app->ws_gui_hildon_window);
81 ws_gui_create_main_menu(ws_gui_app);
82 ws_gui_create_find_toolbar(ws_gui_app);
84 ws_gui_app->ws_gui_hpane = gtk_hpaned_new();
86 ws_gui_app->ws_gui_scrolledwindow_left =
87 gtk_scrolled_window_new (NULL, NULL);
89 gtk_scrolled_window_set_policy(
90 GTK_SCROLLED_WINDOW (ws_gui_app->ws_gui_scrolledwindow_left),
92 GTK_POLICY_AUTOMATIC);
94 gtk_paned_set_position(GTK_PANED(ws_gui_app->ws_gui_hpane), 100);
96 gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW
97 (ws_gui_app->ws_gui_scrolledwindow_left),
100 ws_gui_app->ws_gui_scrolledwindow_right =
101 gtk_scrolled_window_new (NULL, NULL);
103 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
104 (ws_gui_app->ws_gui_scrolledwindow_right),
106 GTK_POLICY_AUTOMATIC);
108 ws_gui_app->ws_gui_w_list->ws_gui_store =
109 gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
111 ws_gui_app->ws_gui_w_list->ws_gui_view =
112 create_view_and_model(array_tmp, ws_gui_app);
113 ws_gui_app->ws_gui_w_list->path = gtk_tree_path_new();
115 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
117 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
118 (ws_gui_app->ws_gui_scrolledwindow_left),
119 ws_gui_app->ws_gui_w_list->ws_gui_view);
121 ws_gui_app->ws_gui_html = gtk_html_new();
123 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
124 gtk_widget_modify_font(GTK_WIDGET(
125 ws_gui_app->ws_gui_html),ws_gui_app->p);
127 g_signal_connect(GTK_OBJECT (ws_gui_app->ws_gui_html),
129 G_CALLBACK(ws_gui_url_requested),
132 gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
133 ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string,
136 gtk_html_set_magnification(GTK_HTML(ws_gui_app->ws_gui_html), ws_gui_app->zoom);
138 /*gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
139 _("WhiteStork_Welcome_Note"),
143 gtk_html_set_editable(GTK_HTML(ws_gui_app->ws_gui_html), FALSE);
144 gtk_html_allow_selection(GTK_HTML(ws_gui_app->ws_gui_html), TRUE);
146 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
147 (ws_gui_app->ws_gui_scrolledwindow_right),
148 ws_gui_app->ws_gui_html);
150 gtk_paned_pack1(GTK_PANED(ws_gui_app->ws_gui_hpane),
151 ws_gui_app->ws_gui_scrolledwindow_left,
154 gtk_paned_pack2(GTK_PANED(ws_gui_app->ws_gui_hpane),
155 ws_gui_app->ws_gui_scrolledwindow_right,
159 gtk_container_add(GTK_CONTAINER(ws_gui_app->ws_gui_hildon_window),
160 ws_gui_app->ws_gui_hpane);
162 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_hildon_window));
164 ws_gui_app->ws_gui_w_list->ws_gui_selection =
165 gtk_tree_view_get_selection (GTK_TREE_VIEW
166 (ws_gui_app->ws_gui_w_list->ws_gui_view));
168 gtk_tree_selection_set_mode(
169 ws_gui_app->ws_gui_w_list->ws_gui_selection,
170 GTK_SELECTION_SINGLE);
172 ws_gui_app->directories = g_slist_alloc();
173 ws_gui_set_bookmarks_sensitivity(ws_gui_app);
175 ws_gui_app->ws_gui_banner = hildon_banner_show_animation(
176 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
178 _("ws_ab_searching"));
180 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner));
181 g_free(ws_gui_app->welcome_note);
184 /** this function creates a find toolbar and connects signals to the tollbars
187 * @param user_data - set when the signal handler was connected
189 void ws_gui_create_find_toolbar(gpointer user_data)
191 WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;
194 ws_gui_app->ws_gui_hildon_find_toolbar =
195 HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("ws_me_search_find")));
197 ws_gui_app->ws_gui_toobar_button_hide =
198 gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
199 ws_gui_app->ws_gui_toobar_button_back =
200 gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
201 ws_gui_app->ws_gui_toobar_button_forward =
202 gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
203 ws_gui_app->ws_gui_toobar_button_stop =
204 gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
205 space = gtk_separator_tool_item_new();
207 ws_gui_app->ws_gui_toobar_button_close =
208 gtk_toolbar_get_nth_item(GTK_TOOLBAR(
209 ws_gui_app->ws_gui_hildon_find_toolbar),
212 gtk_tool_item_set_visible_horizontal(
213 ws_gui_app->ws_gui_toobar_button_close,
216 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
217 ws_gui_app->ws_gui_toobar_button_hide,
219 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
220 ws_gui_app->ws_gui_toobar_button_back,
222 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
223 ws_gui_app->ws_gui_toobar_button_forward,
225 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
228 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
229 ws_gui_app->ws_gui_toobar_button_stop,
232 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
234 G_CALLBACK(ws_gui_search),
237 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_hide),
239 G_CALLBACK(ws_gui_words_list_hide),
242 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_back),
244 G_CALLBACK(ws_gui_history_back),
247 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_forward),
249 G_CALLBACK(ws_gui_history_next),
251 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_stop),
253 G_CALLBACK(ws_gui_search_stop),
256 gtk_widget_set_sensitive(
257 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
259 gtk_widget_set_sensitive(
260 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
262 gtk_widget_set_sensitive(
263 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop),
266 hildon_window_add_toolbar(ws_gui_app->ws_gui_hildon_window,
267 GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar));
270 /** this function creates application menu and its items and connect signals to
273 * @param user_data - set when the signal handler was connected
275 void ws_gui_create_main_menu (gpointer user_data)
277 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
279 ws_gui_app->ws_gui_menu->ws_gui_submenu_0 = gtk_menu_new();
280 ws_gui_app->ws_gui_menu->ws_gui_submenu_1 = gtk_menu_new();
281 ws_gui_app->ws_gui_menu->ws_gui_submenu_2 = gtk_menu_new();
282 ws_gui_app->ws_gui_menu->ws_gui_submenu_3 = gtk_menu_new();
283 ws_gui_app->ws_gui_menu->ws_gui_submenu_4 = gtk_menu_new();
284 ws_gui_app->ws_gui_menu->ws_gui_main_menu = gtk_menu_new();
286 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries =
287 gtk_menu_item_new_with_label(_("ws_me_dictionaries"));
288 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks =
289 gtk_menu_item_new_with_label(_("ws_me_bookmarks"));
290 ws_gui_app->ws_gui_menu->ws_gui_menu_edit =
291 gtk_menu_item_new_with_label(_("ws_me_edit"));
292 ws_gui_app->ws_gui_menu->ws_gui_menu_view =
293 gtk_menu_item_new_with_label(_("ws_me_view"));
294 ws_gui_app->ws_gui_menu->ws_gui_menu_search =
295 gtk_menu_item_new_with_label(_("ws_me_search"));
296 ws_gui_app->ws_gui_menu->ws_gui_menu_about =
297 gtk_menu_item_new_with_label(_("ws_me_about"));
298 ws_gui_app->ws_gui_menu->ws_gui_menu_close =
299 gtk_menu_item_new_with_label(_("ws_me_close"));
300 ws_gui_app->ws_gui_menu->ws_gui_separator =
301 gtk_separator_menu_item_new();
302 ws_gui_app->ws_gui_menu->ws_gui_separator1 =
303 gtk_separator_menu_item_new();
305 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict =
306 gtk_menu_item_new_with_label(_("ws_me_dictionaries_load"));
307 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict =
308 gtk_menu_item_new_with_label(_("ws_me_dictionaries_select"));
309 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict =
310 gtk_menu_item_new_with_label(_("ws_me_dictionaries_remove"));
311 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict =
312 gtk_menu_item_new_with_label(_("ws_me_dictionaries_optimize"));
314 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
315 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict);
316 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
317 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict);
318 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
319 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict);
320 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
321 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict);
323 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark =
324 gtk_menu_item_new_with_label(_("ws_me_bookmarks_open"));
325 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark =
326 gtk_menu_item_new_with_label(_("ws_me_bookmarks_close"));
327 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark =
328 gtk_menu_item_new_with_label(_("ws_me_bookmarks_add"));
329 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark =
330 gtk_menu_item_new_with_label(_("ws_me_bookmarks_remove"));
332 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
333 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark);
334 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
335 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark);
336 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
337 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark);
338 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
339 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark);
341 ws_gui_app->ws_gui_menu->ws_gui_menu_copy =
342 gtk_menu_item_new_with_label(_("ws_me_edit_copy"));
343 ws_gui_app->ws_gui_menu->ws_gui_menu_paste =
344 gtk_menu_item_new_with_label(_("ws_me_edit_paste"));
345 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all =
346 gtk_menu_item_new_with_label(_("ws_me_edit_select_all"));
347 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
348 ws_gui_app->ws_gui_menu->ws_gui_menu_copy);
349 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
350 ws_gui_app->ws_gui_menu->ws_gui_menu_paste);
351 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
352 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all);
354 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list =
355 gtk_check_menu_item_new_with_label(_("ws_me_view_hide_words_list"));
356 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in =
357 gtk_menu_item_new_with_label(_("ws_me_view_zoom_in"));
358 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out =
359 gtk_menu_item_new_with_label(_("ws_me_view_zoom_out"));
360 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen =
361 gtk_check_menu_item_new_with_label(_("ws_me_view_fullscreen"));
362 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
363 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list);
364 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
365 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in);
366 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
367 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out);
368 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
369 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen);
371 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word =
372 gtk_menu_item_new_with_label(_("ws_me_search_find"));
373 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next =
374 gtk_menu_item_new_with_label(_("ws_me_search_find_next"));
375 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev =
376 gtk_menu_item_new_with_label(_("ws_me_search_find_prev"));
377 ws_gui_app->ws_gui_menu->ws_gui_menu_stop =
378 gtk_menu_item_new_with_label(_("ws_me_search_stop"));
379 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
380 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word);
381 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
382 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next);
383 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
384 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev);
385 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
386 ws_gui_app->ws_gui_menu->ws_gui_menu_stop);
389 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
390 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries);
391 gtk_menu_item_set_submenu(GTK_MENU_ITEM
392 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
393 ws_gui_app->ws_gui_menu->ws_gui_submenu_0);
395 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
396 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks);
397 gtk_menu_item_set_submenu(GTK_MENU_ITEM
398 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
399 ws_gui_app->ws_gui_menu->ws_gui_submenu_4);
401 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
402 ws_gui_app->ws_gui_menu->ws_gui_separator1);
404 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
405 ws_gui_app->ws_gui_menu->ws_gui_menu_edit);
406 gtk_menu_item_set_submenu(GTK_MENU_ITEM
407 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
408 ws_gui_app->ws_gui_menu->ws_gui_submenu_1);
410 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
411 ws_gui_app->ws_gui_menu->ws_gui_menu_view);
412 gtk_menu_item_set_submenu(GTK_MENU_ITEM
413 (ws_gui_app->ws_gui_menu->ws_gui_menu_view),
414 ws_gui_app->ws_gui_menu->ws_gui_submenu_2);
416 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
417 ws_gui_app->ws_gui_menu->ws_gui_menu_search);
418 gtk_menu_item_set_submenu(GTK_MENU_ITEM
419 (ws_gui_app->ws_gui_menu->ws_gui_menu_search),
420 ws_gui_app->ws_gui_menu->ws_gui_submenu_3);
422 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
423 ws_gui_app->ws_gui_menu->ws_gui_separator);
424 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
425 ws_gui_app->ws_gui_menu->ws_gui_menu_about);
426 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
427 ws_gui_app->ws_gui_menu->ws_gui_menu_close);
429 g_signal_connect(G_OBJECT
430 (ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict),
432 G_CALLBACK(ws_gui_dictionary_loader),
434 g_signal_connect(G_OBJECT(
435 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
437 G_CALLBACK(ws_gui_dictionary_chooser),
439 g_signal_connect(G_OBJECT
440 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
442 G_CALLBACK(ws_gui_dictionary_remover),
444 g_signal_connect(G_OBJECT
445 (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
447 G_CALLBACK(ws_gui_dictionary_optimizer), ws_gui_app);
448 g_signal_connect(G_OBJECT
449 (ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark),
451 G_CALLBACK(ws_gui_dictionary_open_bookmark),
453 g_signal_connect(G_OBJECT
454 (ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark),
456 G_CALLBACK(ws_gui_dictionary_close_bookmark),
458 g_signal_connect(G_OBJECT
459 (ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark),
461 G_CALLBACK(ws_gui_dictionary_add_bookmark),
463 g_signal_connect(G_OBJECT
464 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark),
466 G_CALLBACK(ws_gui_dictionary_remove_bookmark),
468 g_signal_connect(G_OBJECT
469 (ws_gui_app->ws_gui_menu->ws_gui_menu_copy),
471 GTK_SIGNAL_FUNC(ws_gui_html_copy),
473 g_signal_connect(G_OBJECT
474 (ws_gui_app->ws_gui_menu->ws_gui_menu_paste),
476 GTK_SIGNAL_FUNC(ws_gui_html_paste),
478 g_signal_connect(G_OBJECT
479 (ws_gui_app->ws_gui_menu->ws_gui_menu_select_all),
481 GTK_SIGNAL_FUNC(ws_gui_html_select_all),
483 g_signal_connect(G_OBJECT
484 (ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list),
486 GTK_SIGNAL_FUNC(ws_gui_words_list_hide_from_menu),
488 g_signal_connect(G_OBJECT
489 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in),
491 G_CALLBACK(ws_gui_html_zoom_in),
493 g_signal_connect(G_OBJECT
494 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out),
496 G_CALLBACK(ws_gui_html_zoom_out),
498 g_signal_connect(G_OBJECT
499 (ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen),
501 GTK_SIGNAL_FUNC(ws_gui_full_screen),
503 g_signal_connect(G_OBJECT
504 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_word),
506 GTK_SIGNAL_FUNC(ws_gui_search),
508 g_signal_connect(G_OBJECT
509 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
511 GTK_SIGNAL_FUNC(ws_gui_history_next),
513 g_signal_connect(G_OBJECT
514 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
516 GTK_SIGNAL_FUNC(ws_gui_history_back),
518 g_signal_connect(G_OBJECT
519 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
521 GTK_SIGNAL_FUNC(ws_gui_search_stop),
523 g_signal_connect(G_OBJECT
524 (ws_gui_app->ws_gui_menu->ws_gui_menu_about),
526 G_CALLBACK(ws_gui_about_application),
528 g_signal_connect(G_OBJECT
529 (ws_gui_app->ws_gui_menu->ws_gui_menu_close),
531 G_CALLBACK(ws_gui_menu_quit),
534 g_signal_connect(G_OBJECT
535 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
537 GTK_SIGNAL_FUNC(ws_gui_check_clipboard),
540 g_signal_connect(G_OBJECT
541 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
543 GTK_SIGNAL_FUNC(ws_gui_dict_availablity),
546 g_signal_connect(G_OBJECT
547 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
549 GTK_SIGNAL_FUNC(ws_gui_set_bookmark_menu_items),
552 hildon_window_set_menu(HILDON_WINDOW(ws_gui_app->ws_gui_hildon_window),
554 ws_gui_app->ws_gui_menu->ws_gui_main_menu));
556 gtk_widget_set_sensitive(GTK_WIDGET
557 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
559 gtk_widget_set_sensitive(GTK_WIDGET
560 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
562 gtk_widget_set_sensitive(GTK_WIDGET
563 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
568 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_main_menu);
572 /** this function creates contex popup menu and its items and connect signals to
575 * @param user_data - set when the signal handler was connected
577 void ws_gui_create_popup_menu (gpointer user_data)
579 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
581 ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
582 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
583 ws_gui_app->ws_gui_menu->ws_gui_separator =
584 gtk_separator_menu_item_new();
586 ws_gui_app->ws_gui_menu->ws_gui_popup_search =
587 gtk_menu_item_new_with_label(_("ws_mp_search"));
588 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
589 ws_gui_app->ws_gui_menu->ws_gui_popup_search);
590 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
591 gtk_separator_menu_item_new());
592 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark =
593 gtk_menu_item_new_with_label(_("ws_mp_add_bookmark"));
594 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
595 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark);
597 ws_gui_app->ws_gui_menu->ws_gui_popup_copy =
598 gtk_menu_item_new_with_label(_("ws_mp_edit_copy"));
599 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
600 ws_gui_app->ws_gui_menu->ws_gui_popup_copy);
602 ws_gui_app->ws_gui_menu->ws_gui_popup_paste =
603 gtk_menu_item_new_with_label(_("ws_mp_edit_paste"));
604 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
605 ws_gui_app->ws_gui_menu->ws_gui_popup_paste);
607 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all =
608 gtk_menu_item_new_with_label(_("ws_mp_edit_select_all"));
609 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
610 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all);
612 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
614 ws_gui_app->ws_gui_menu->ws_gui_popup_edit =
615 gtk_menu_item_new_with_label (_("ws_mp_edit"));
616 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
617 ws_gui_app->ws_gui_menu->ws_gui_popup_edit);
619 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
620 ws_gui_app->ws_gui_menu->ws_gui_separator);
622 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in =
623 gtk_menu_item_new_with_label (_("ws_mp_zoom_in"));
624 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
625 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in);
627 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out =
628 gtk_menu_item_new_with_label (_("ws_mp_zoom_out"));
629 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
630 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out);
632 gtk_menu_item_set_submenu(GTK_MENU_ITEM
633 (ws_gui_app->ws_gui_menu->ws_gui_popup_edit),
634 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
636 struct _GtkHTML *tmp = (struct _GtkHTML *)(ws_gui_app->ws_gui_html);
638 if (html_engine_is_selection_active(tmp->engine) == TRUE)
640 gtk_widget_set_sensitive(GTK_WIDGET
641 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
643 gtk_widget_set_sensitive(GTK_WIDGET
644 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
649 gtk_widget_set_sensitive(GTK_WIDGET
650 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
652 gtk_widget_set_sensitive(GTK_WIDGET
653 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
657 if (ws_gui_app->html_flag == FALSE)
659 gtk_widget_set_sensitive(GTK_WIDGET
660 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
665 gtk_widget_set_sensitive(GTK_WIDGET
666 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
670 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_menu);
673 g_signal_connect(G_OBJECT
674 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
676 G_CALLBACK(ws_gui_popup_search),
679 g_signal_connect(G_OBJECT
680 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
682 G_CALLBACK(ws_gui_dictionary_add_bookmark),
685 g_signal_connect(G_OBJECT
686 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
688 G_CALLBACK(ws_gui_html_copy),
690 g_signal_connect(G_OBJECT
691 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
693 G_CALLBACK(ws_gui_html_paste),
695 g_signal_connect(G_OBJECT
696 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
698 G_CALLBACK(ws_gui_html_select_all),
700 g_signal_connect(G_OBJECT
701 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in),
703 G_CALLBACK(ws_gui_html_zoom_in), ws_gui_app);
704 g_signal_connect(G_OBJECT
705 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out),
707 G_CALLBACK(ws_gui_html_zoom_out),
710 if (gtk_clipboard_wait_for_text(ws_gui_app->ws_gui_clipboard) != NULL)
712 gtk_widget_set_sensitive(GTK_WIDGET
713 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
718 gtk_widget_set_sensitive(GTK_WIDGET
719 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
724 if (ws_gui_app->bookmark_avail == FALSE)
726 gtk_widget_set_sensitive(GTK_WIDGET
727 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
733 if (ws_gui_app->bookmark_mode == TRUE)
735 gtk_widget_set_sensitive(GTK_WIDGET
736 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
741 if (ws_gui_app->last_word != NULL)
743 gtk_widget_set_sensitive(GTK_WIDGET
744 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
749 gtk_widget_set_sensitive(GTK_WIDGET
750 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
755 gtk_menu_popup(GTK_MENU(ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
764 /** this function creates dialog popup window and allows to select dictionaries
765 * which user wants to use
767 * @param menuitem - the object which received the signal
768 * @param user_data - set when the signal handler was connected
770 void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
772 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
774 GtkWidget *dialog_vbox1;
775 GtkWidget *scrolledwindow1;
776 GtkWidget *viewport1;
779 GtkWidget *checkbutton;
780 GtkWidget *cancel_button;
781 GtkWidget *ok_button;
788 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
790 if (gconf_client_dir_exists(ws_gui_app->client,
791 GCONF_PATH, NULL) == TRUE)
793 ws_gui_app->directories =
794 gconf_client_all_dirs(ws_gui_app->client,
800 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
801 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
804 dialog1 = gtk_dialog_new ();
805 gtk_window_set_title (GTK_WINDOW (dialog1),
806 (_("ws_ti_choose_dictionaries_title")));
807 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
808 GDK_WINDOW_TYPE_HINT_DIALOG);
809 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
811 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
812 gtk_widget_show (dialog_vbox1);
814 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
815 gtk_widget_show (scrolledwindow1);
816 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
822 viewport1 = gtk_viewport_new (NULL, NULL);
823 gtk_widget_show (viewport1);
824 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
826 vbox1 = gtk_vbox_new (FALSE, 0);
827 gtk_widget_show (vbox1);
828 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
830 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
832 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
833 name = g_path_get_basename(string);
834 checkbutton = gtk_check_button_new_with_label(name);
835 path = g_strconcat(string, "/active", NULL);
837 if (gconf_client_get_bool(ws_gui_app->client,
841 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
847 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
852 g_array_append_val(checkboxes, checkbutton);
853 gtk_box_pack_start (GTK_BOX (vbox1),
859 if (strcmp(name, "bookmarks") == 0)
861 if (ws_gui_app->bookmark_avail == FALSE)
863 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton),
868 gtk_widget_show (checkbutton);
871 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
872 gtk_widget_show (cancel_button);
873 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
875 GTK_RESPONSE_CANCEL);
877 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
878 gtk_widget_show (ok_button);
879 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
883 i = gtk_dialog_run(GTK_DIALOG(dialog1));
885 if (i == GTK_RESPONSE_OK)
887 for(i=0;i<(checkboxes->len);i++)
889 if (gtk_toggle_button_get_active(
890 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
891 GtkWidget *, i))) == TRUE)
893 name = gtk_button_get_label(GTK_BUTTON(
894 g_array_index(checkboxes, GtkWidget *, i)));
896 path=g_strconcat(GCONF_PATH,
901 gconf_client_set_bool(ws_gui_app->client,
907 if (gtk_toggle_button_get_active(
908 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
909 GtkWidget *, i))) == FALSE)
911 name = gtk_button_get_label(GTK_BUTTON(
912 g_array_index(checkboxes, GtkWidget *, i)));
914 path=g_strconcat(GCONF_PATH,
919 gconf_client_set_bool(ws_gui_app->client,
926 ws_dbus_notify(ws_gui_app->dbus_data,
927 WS_DBUS_INFO_CONFIG_CHANGED);
929 if(ws_gui_app->ws_gui_history->len >= 0)
931 ws_gui_clear_array(ws_gui_app->ws_gui_history);
932 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
933 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
934 ws_gui_app->ws_gui_history_cur_pos = -1;
936 ws_gui_check_history(ws_gui_app);
938 gtk_widget_destroy (dialog1);
940 else if (i == GTK_RESPONSE_CANCEL)
942 gtk_widget_destroy (dialog1);
945 g_slist_free(ws_gui_app->directories);
948 /** this function creates dialog popup window and allows optimize dictionaries
950 * @param menuitem - the object which received the signal
951 * @param user_data - set when the signal handler was connected
953 void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
955 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
958 GtkWidget *dialog_vbox1;
959 GtkWidget *scrolledwindow1;
960 GtkWidget *viewport1;
963 GtkWidget *checkbutton;
964 GtkWidget *cancel_button;
965 GtkWidget *ok_button;
972 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
974 if (gconf_client_dir_exists(ws_gui_app->client,
978 ws_gui_app->directories =
979 gconf_client_all_dirs(ws_gui_app->client, GCONF_PATH, NULL);
983 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
984 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
987 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
989 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
990 name = g_path_get_basename(string);
992 path = g_strconcat(string, "/optimized", NULL);
993 if (gconf_client_get_bool (ws_gui_app->client,
997 checkbutton = gtk_check_button_new_with_label(name);
998 g_array_append_val(checkboxes, checkbutton);
1001 if (checkboxes->len <= 0)
1003 ws_gui_app->ws_message_dialog = gtk_message_dialog_new(
1004 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1005 GTK_DIALOG_DESTROY_WITH_PARENT,
1008 _("ws_ni_no_dictionaries_to_optimize"));
1009 gtk_widget_show_all(ws_gui_app->ws_message_dialog);
1010 if (gtk_dialog_run (GTK_DIALOG (
1011 ws_gui_app->ws_message_dialog)) == GTK_RESPONSE_OK)
1013 gtk_widget_destroy(ws_gui_app->ws_message_dialog);
1018 dialog1 = gtk_dialog_new ();
1019 gtk_window_set_title(GTK_WINDOW (dialog1),
1020 (_("ws_ti_choose_dictionaries_title")));
1021 gtk_window_set_type_hint(GTK_WINDOW (dialog1),
1022 GDK_WINDOW_TYPE_HINT_DIALOG);
1023 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1025 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1026 gtk_widget_show (dialog_vbox1);
1028 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
1029 gtk_widget_show (scrolledwindow1);
1030 gtk_box_pack_start(GTK_BOX (dialog_vbox1),
1036 viewport1 = gtk_viewport_new (NULL, NULL);
1037 gtk_widget_show (viewport1);
1038 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
1040 vbox1 = gtk_vbox_new (FALSE, 0);
1041 gtk_widget_show (vbox1);
1042 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
1043 for (i=0; i<checkboxes->len; i++)
1045 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
1046 g_array_index(checkboxes, GtkWidget*, i)),
1048 gtk_box_pack_start(GTK_BOX (vbox1),
1049 g_array_index(checkboxes, GtkWidget*, i),
1053 gtk_widget_show(g_array_index(checkboxes,
1057 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
1058 gtk_widget_show (cancel_button);
1059 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1061 GTK_RESPONSE_CANCEL);
1062 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
1063 gtk_widget_show (ok_button);
1064 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1067 i = gtk_dialog_run(GTK_DIALOG(dialog1));
1068 if (i == GTK_RESPONSE_OK)
1070 for(i=0;i<(checkboxes->len);i++)
1072 if (gtk_toggle_button_get_active(
1074 g_array_index(checkboxes,
1075 GtkWidget *, i))) == TRUE)
1077 name = gtk_button_get_label(GTK_BUTTON(
1078 g_array_index(checkboxes,
1081 path=g_strconcat(GCONF_PATH,
1086 gconf_client_set_bool(
1092 if (gtk_toggle_button_get_active(
1094 g_array_index(checkboxes,
1095 GtkWidget *, i))) == FALSE)
1097 name = gtk_button_get_label(GTK_BUTTON
1098 (g_array_index(checkboxes,
1101 path=g_strconcat(GCONF_PATH,
1106 gconf_client_set_bool(
1113 ws_dbus_notify(ws_gui_app->dbus_data,
1114 WS_DBUS_INFO_CONFIG_CHANGED);
1115 gtk_widget_destroy (dialog1);
1117 else if (i == GTK_RESPONSE_CANCEL)
1119 gtk_widget_destroy (dialog1);
1122 g_slist_free(ws_gui_app->directories);
1125 /** this function creates dialog popup window which allows to load a new
1126 *dictionary file into application
1128 * @param menuitem - the object which received the signal
1129 * @param user_data - set when the signal handler was connected
1131 void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
1133 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1136 // GtkWidget *dialog2;
1138 dialog = hildon_file_chooser_dialog_new(
1139 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1140 GTK_FILE_CHOOSER_ACTION_OPEN);
1142 gtk_window_set_default_size(GTK_WINDOW (dialog), 200, 200);
1143 gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), FALSE);
1145 //gtk_widget_show(GTK_WIDGET(dialog));
1147 if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
1157 filename = gtk_file_chooser_get_filename(
1158 GTK_FILE_CHOOSER (dialog));
1159 name = g_path_get_basename(filename);
1160 len = strlen(filename) - strlen(name) -1;
1161 tmp = g_strndup (filename, len);
1164 tmp = g_path_get_basename(tmp);
1166 if (g_str_has_suffix(name, ".xdxf")
1167 || g_str_has_suffix(name, ".idx")
1168 || g_str_has_suffix(name, ".ifo")
1169 || g_str_has_suffix(name, ".idx.gz")
1170 || g_str_has_suffix(name, ".dict")
1171 || g_str_has_suffix(name, ".dict.dz"))
1173 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n:::GUUUUIII GUIII::: check");
1174 if (ws_gui_load_dict(filename, ws_gui_app) == TRUE)
1176 gtk_widget_destroy(dialog);
1177 gtk_infoprint(GTK_WINDOW(
1178 ws_gui_app->ws_gui_hildon_window),
1179 _("ws_ni_dictionary_added"));
1182 else if (g_str_has_suffix(name, ".bz2"))
1184 gtk_widget_destroy(dialog);
1185 ws_dbus_extract_dictionary(ws_gui_app->dbus_data, filename);
1189 gtk_widget_destroy (dialog);
1190 gtk_infoprint(GTK_WINDOW(
1191 ws_gui_app->ws_gui_hildon_window),
1192 _("ws_ni_dictionary_wrong_file"));
1198 gtk_widget_destroy (dialog);
1203 /** this function creates dialog popup window which allows to load dictionary
1205 * @param filename - the object which received the signal
1206 * @param user_data - set when the signal handler was connected
1208 gboolean ws_gui_load_dict(gchar *filename, gpointer user_data)
1210 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1214 gchar *name = g_path_get_basename(filename);
1219 len = strlen(filename) - strlen(name) -1;
1220 gchar *tmp = g_strndup (filename, len);;
1221 tmp = g_path_get_basename(tmp);
1224 filepath = g_strndup (filename, len);
1225 path = g_strconcat(GCONF_PATH, "/", tmp, "/path", NULL);
1226 gconf_client_set_string(ws_gui_app->client,
1232 path = g_strconcat(GCONF_PATH,
1238 dialog1 = gtk_message_dialog_new(GTK_WINDOW(
1239 ws_gui_app->ws_gui_hildon_window),
1240 GTK_DIALOG_DESTROY_WITH_PARENT,
1241 GTK_MESSAGE_QUESTION,
1243 _("ws_ni_dictionaries_activation_question"));
1245 gtk_widget_show_all(GTK_WIDGET(dialog1));
1247 if (gtk_dialog_run (GTK_DIALOG (dialog1)) == GTK_RESPONSE_YES)
1249 gconf_client_set_bool(ws_gui_app->client,
1256 gconf_client_set_bool(ws_gui_app->client,
1261 gtk_widget_destroy (dialog1);
1265 path = g_strconcat(GCONF_PATH, "/", tmp, "/optimized", NULL);
1267 dialog2 = gtk_message_dialog_new(
1268 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1269 GTK_DIALOG_DESTROY_WITH_PARENT,
1270 GTK_MESSAGE_QUESTION,
1272 _("ws_ni_dictionaries_optimalization_question"));
1274 gtk_widget_show_all(GTK_WIDGET(dialog2));
1276 if (gtk_dialog_run (GTK_DIALOG (dialog2)) == GTK_RESPONSE_YES)
1278 gconf_client_set_bool(ws_gui_app->client,
1285 gconf_client_set_bool(ws_gui_app->client,
1290 gtk_widget_destroy (dialog2);
1292 if(ws_gui_app->ws_gui_history->len > 0)
1294 ws_gui_clear_array(ws_gui_app->ws_gui_history);
1295 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1296 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1297 ws_gui_app->ws_gui_history_cur_pos = -1;
1299 ws_gui_check_history(ws_gui_app);
1301 ws_dbus_notify(ws_gui_app->dbus_data,
1302 WS_DBUS_INFO_CONFIG_CHANGED);
1307 /** this function creates dialog popup window which allows to remove dictionary
1308 * which is no longer used
1310 * @param menuitem - the object which received the signal
1311 * @param user_data - set when the signal handler was connected
1313 void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
1315 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1318 GtkWidget *dialog_vbox1;
1319 GtkWidget *scrolledwindow1;
1320 GtkWidget *viewport1;
1322 GtkWidget *checkbutton;
1323 GtkWidget *cancel_button;
1324 GtkWidget *ok_button;
1331 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
1333 if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL)
1336 ws_gui_app->directories = gconf_client_all_dirs(
1343 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
1344 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
1347 dialog1 = gtk_dialog_new ();
1348 gtk_window_set_title (GTK_WINDOW (dialog1),
1349 (_("ws_ti_remove_dictionaries_title")));
1350 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
1351 GDK_WINDOW_TYPE_HINT_DIALOG);
1352 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1354 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1355 gtk_widget_show (dialog_vbox1);
1357 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
1358 gtk_widget_show (scrolledwindow1);
1359 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
1365 viewport1 = gtk_viewport_new (NULL, NULL);
1366 gtk_widget_show (viewport1);
1367 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
1369 vbox1 = gtk_vbox_new (FALSE, 0);
1370 gtk_widget_show (vbox1);
1371 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
1373 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
1375 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
1376 name = g_path_get_basename(string);
1377 checkbutton = gtk_check_button_new_with_label(name);
1379 g_array_append_val(checkboxes, checkbutton);
1380 gtk_box_pack_start (GTK_BOX (vbox1),
1386 if (strcmp(name, "bookmarks") == 0)
1388 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton), FALSE);
1390 gtk_widget_show (checkbutton);
1393 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
1394 gtk_widget_show (cancel_button);
1395 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1397 GTK_RESPONSE_CANCEL);
1399 ok_button = gtk_button_new_from_stock
1400 (_("ws_bd_remove_dictionaries_remove_selected"));
1401 gtk_widget_show (ok_button);
1402 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1406 i = gtk_dialog_run(GTK_DIALOG(dialog1));
1408 if (i == GTK_RESPONSE_OK)
1410 for(i=0;i<(checkboxes->len);i++)
1412 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
1413 g_array_index(checkboxes, GtkWidget *, i))) == TRUE)
1416 name = gtk_button_get_label(GTK_BUTTON(
1417 g_array_index(checkboxes, GtkWidget *, i)));
1418 path=g_strconcat(GCONF_PATH, "/", name, NULL);
1419 gconf_client_recursive_unset(ws_gui_app->client,
1421 GCONF_UNSET_INCLUDING_SCHEMA_NAMES,
1426 if(ws_gui_app->ws_gui_history->len >= 0)
1428 ws_gui_clear_array(ws_gui_app->ws_gui_history);
1429 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1430 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1431 ws_gui_app->ws_gui_history_cur_pos = -1;
1433 ws_gui_check_history(ws_gui_app);
1435 ws_dbus_notify(ws_gui_app->dbus_data,
1436 WS_DBUS_INFO_CONFIG_CHANGED);
1437 gtk_infoprint(GTK_WINDOW(
1438 ws_gui_app->ws_gui_hildon_window),
1439 _("ws_ib_dictionary_removed"));
1440 gtk_widget_destroy (dialog1);
1442 else if (i == GTK_RESPONSE_CANCEL)
1444 gtk_widget_destroy (dialog1);
1447 g_slist_free(ws_gui_app->directories);
1450 /** this function creates dialog popup window which displays information about
1451 * application (about window)
1453 * @param menuitem - the object which received the signal
1454 * @param user_data - set when the signal handler was connected
1456 void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data)
1458 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1460 gtk_widget_set_sensitive(GTK_WIDGET
1461 (ws_gui_app->ws_gui_hildon_find_toolbar),
1464 GtkWidget *about_dialog;
1465 GtkWidget *dialog_vbox1;
1471 GtkWidget *scrolledwindow;
1472 GtkWidget *textview;
1475 const gchar *ws_version;
1477 about_dialog = gtk_dialog_new ();
1478 gtk_window_set_title (GTK_WINDOW (about_dialog),
1479 _("ws_ti_about_title"));
1480 gtk_window_set_default_size(GTK_WINDOW (about_dialog), 350, 200);
1482 dialog_vbox1 = GTK_DIALOG (about_dialog)->vbox;
1483 gtk_widget_show (dialog_vbox1);
1485 vbox1 = gtk_vbox_new (FALSE, 0);
1486 gtk_widget_show (vbox1);
1487 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0);
1489 image = gtk_image_new_from_file ("/usr/share/pixmaps/whitestork.png");
1490 gtk_box_pack_start (GTK_BOX (vbox1), image, TRUE, TRUE, 0);
1492 label2 = gtk_label_new ("WhiteStork");
1493 ws_gui_app->p = pango_font_description_from_string("Tahoma 18");
1494 gtk_widget_modify_font(GTK_WIDGET(label2), ws_gui_app->p);
1495 gtk_label_set_pattern (GTK_LABEL(label2), "__________");
1496 gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 5);
1498 ws_version = g_strconcat("Maemo Multilingual Dictionary\nver. ",
1501 label3 = gtk_label_new_with_mnemonic (_(ws_version));
1502 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1503 gtk_widget_modify_font(GTK_WIDGET(label3), ws_gui_app->p);
1504 gtk_box_pack_start (GTK_BOX (vbox1), label3, FALSE, FALSE, 5);
1505 gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_CENTER);
1507 label4 = gtk_label_new ("Copyright 2006, ComArch S.A\nAll rights "
1509 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1510 gtk_widget_modify_font(GTK_WIDGET(label4), ws_gui_app->p);
1511 gtk_box_pack_start (GTK_BOX (vbox1), label4, FALSE, FALSE, 5);
1512 gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_CENTER);
1514 scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1515 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW
1517 GTK_SHADOW_ETCHED_OUT);
1518 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
1520 GTK_POLICY_AUTOMATIC,
1521 GTK_POLICY_AUTOMATIC);
1522 gtk_box_pack_start (GTK_BOX (vbox1),
1528 textview = gtk_text_view_new ();
1529 ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
1530 gtk_widget_modify_font(GTK_WIDGET(textview), ws_gui_app->p);
1531 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE);
1532 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 10);
1533 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 10);
1534 gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
1535 gtk_text_buffer_set_text(
1536 gtk_text_view_get_buffer(GTK_TEXT_VIEW (textview)),
1537 "The following third party\ncomponents may be\nincluded"
1538 " depending \non your system configuration:\n\nD-BUS "
1539 "- License information:\nhttp://opensource.org/"
1540 "licenses/academic.php",
1543 button1 = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
1544 gtk_dialog_add_action_widget(GTK_DIALOG(about_dialog),
1546 GTK_RESPONSE_CLOSE);
1548 gtk_widget_show_all (GTK_WIDGET(about_dialog));
1550 if (gtk_dialog_run(GTK_DIALOG(about_dialog)) == GTK_RESPONSE_CLOSE)
1552 gtk_widget_destroy(GTK_WIDGET(about_dialog));
1555 gtk_widget_set_sensitive(
1556 GTK_WIDGET(ws_gui_app->ws_gui_hildon_find_toolbar),
1560 void ws_gui_add_bookmark_dialog(gpointer user_data)
1563 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1566 GtkWidget *dialog_vbox1;
1571 GtkWidget *cancelbutton1;
1572 GtkWidget *okbutton1;
1574 const gchar *book_word;
1576 dialog1 = gtk_dialog_new ();
1577 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_add_bookmark"));
1578 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1580 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1581 gtk_widget_show (dialog_vbox1);
1583 vbox1 = gtk_vbox_new (FALSE, 0);
1584 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1586 hbox1 = gtk_hbox_new (FALSE, 0);
1587 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1589 label = gtk_label_new(_("ws_ti_bookmarks_add_question"));
1590 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1592 entry1 = gtk_entry_new ();
1593 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1594 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1595 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1596 gtk_entry_set_editable(GTK_ENTRY(entry1), TRUE);
1598 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1599 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1603 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1604 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1606 GTK_RESPONSE_CANCEL);
1608 gtk_widget_show_all (dialog1);
1610 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1612 book_word = gtk_entry_get_text(GTK_ENTRY(entry1));
1613 ws_dbus_add_bookmark(ws_gui_app->dbus_data,
1615 ws_gui_app->raw_translation->str);
1616 gtk_widget_destroy(GTK_WIDGET(dialog1));
1621 gtk_widget_destroy(GTK_WIDGET(dialog1));
1625 void ws_gui_remove_bookmark_dialog(gpointer user_data)
1627 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1630 GtkWidget *dialog_vbox1;
1635 GtkWidget *cancelbutton1;
1636 GtkWidget *okbutton1;
1638 dialog1 = gtk_dialog_new ();
1639 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_remove_bookmark"));
1640 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1642 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1643 gtk_widget_show (dialog_vbox1);
1645 vbox1 = gtk_vbox_new (FALSE, 0);
1646 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1648 hbox1 = gtk_hbox_new (FALSE, 0);
1649 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1651 label = gtk_label_new(_("ws_ni_remove_bookmark_question"));
1652 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1654 entry1 = gtk_entry_new ();
1655 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1656 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1657 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1658 gtk_entry_set_editable(GTK_ENTRY(entry1), FALSE);
1660 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1661 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1665 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1666 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1668 GTK_RESPONSE_CANCEL);
1670 gtk_widget_show_all (dialog1);
1672 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1674 gtk_widget_destroy(GTK_WIDGET(dialog1));
1677 ws_dbus_remove_bookmark(ws_gui_app->dbus_data,
1678 ws_gui_app->last_word);
1680 ws_gui_fill_html(" ", ws_gui_app);
1682 g_object_get(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
1687 if (strlen(tmp) != 0)
1689 ws_dbus_client_find_word (ws_gui_app->dbus_data, tmp);
1693 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "strlen(tmp)=0");
1694 gtk_list_store_clear(
1695 ws_gui_app->ws_gui_w_list->ws_gui_store);
1700 gtk_widget_destroy(GTK_WIDGET(dialog1));