1 /*******************************************************************************
2 This file is part of mdictionary.
4 mdictionary 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 mdictionary 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 mdictionary; 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 *******************************************************************************/
23 /** \file ws_gui_layout.c
24 * \brief GUI layout definitions
26 * Defines the way GUI dialogues look
27 * \author Anna Gadomska \<anna.gadomska\@comarch.com\>
32 #include <ws_gui_layout.h>
34 #include <ws_gui_callbacks.h>
39 /** this function creates main window and it components; moreover there are
42 * @param user_data - data set when the signal handler was connected
44 void ws_gui_create_window(gpointer user_data)
46 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
48 ws_gui_app->welcome_note = g_strconcat("<br><br><center><font size=+3>",
49 _("ws_ni_welcome"), "<br><IMG SRC=file:/usr/share/pixmaps/mdictionary.png>",
52 /* ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string =
53 (ws_gui_app->welcome_note);*/
55 GArray *array_tmp = g_array_new (TRUE, TRUE, sizeof(gchar*));
56 ws_gui_app->raw_translation = g_string_new(" ");
57 ws_gui_app->last_searched = NULL;
58 ws_gui_app->last_searched_in_book = NULL;
59 ws_gui_app->last_word = NULL;
61 /*indicates that searching banner is displayed*/
62 ws_gui_app->ws_gui_banner_flag = FALSE;
63 /*indicates full screen mode*/
64 ws_gui_app->ws_gui_full_screen_flag = FALSE;
65 /*indicates that caching is in progress*/
66 ws_gui_app->caching_flag = FALSE;
67 /*used for doubleclick recognition*/
68 ws_gui_app->ws_gui_double_click = FALSE;
69 /*indicates a that a piece of text is selected*/
70 ws_gui_app->ws_gui_sel_flag = FALSE;
71 /*indicates whether bookmark mode is active or not*/
72 ws_gui_app->bookmark_mode = FALSE;
73 /*indicates if bookmarks database is available*/
74 ws_gui_app->bookmark_avail = TRUE;
75 /*indicates that no translation has been found*/
76 ws_gui_app->html_flag = TRUE;
77 /*indicates loading banner is displayed*/
78 ws_gui_app->loading = FALSE;
79 /*differentiates between tap and hold and ordinary tap*/
80 ws_gui_app->stop_clicked = FALSE;
81 /*if dictionary is just run*/
82 ws_gui_app->first_run = TRUE;
83 /*indicates that no words match a given search pattern*/
84 ws_gui_app->no_words_found = TRUE;
86 ws_gui_app->zoom = ZOOM_DEFAULT;
88 ws_gui_app->timer = g_timer_new();
89 g_timer_stop(ws_gui_app->timer);
91 ws_gui_app->ws_gui_history = g_array_new(TRUE, TRUE, sizeof(gchar*));
92 ws_gui_app->ws_gui_history_list = g_array_new(TRUE, TRUE, sizeof(gchar*));
93 ws_gui_app->ws_gui_history_iter = g_array_new(TRUE, TRUE, sizeof(gchar*));
94 ws_gui_app->history_flag = FALSE;
95 ws_gui_app->ws_gui_history_cur_pos = -1;
97 ws_gui_app->ws_gui_hildon_program =
98 HILDON_PROGRAM(hildon_program_get_instance());
100 g_set_application_name(PACKAGE);
102 ws_gui_app->ws_gui_hildon_window = HILDON_WINDOW(hildon_window_new());
104 hildon_program_add_window(ws_gui_app->ws_gui_hildon_program,
105 ws_gui_app->ws_gui_hildon_window);
107 ws_gui_create_main_menu(ws_gui_app);
108 ws_gui_create_find_toolbar(ws_gui_app);
110 ws_gui_app->ws_gui_hpane = gtk_hpaned_new();
112 ws_gui_app->ws_gui_scrolledwindow_left =
113 gtk_scrolled_window_new (NULL, NULL);
115 gtk_scrolled_window_set_policy(
116 GTK_SCROLLED_WINDOW (ws_gui_app->ws_gui_scrolledwindow_left),
117 GTK_POLICY_AUTOMATIC,
118 GTK_POLICY_AUTOMATIC);
120 gtk_paned_set_position(GTK_PANED(ws_gui_app->ws_gui_hpane), 100);
122 gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW
123 (ws_gui_app->ws_gui_scrolledwindow_left),
124 GTK_CORNER_TOP_LEFT);
126 ws_gui_app->ws_gui_scrolledwindow_right =
127 gtk_scrolled_window_new (NULL, NULL);
129 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
130 (ws_gui_app->ws_gui_scrolledwindow_right),
132 GTK_POLICY_AUTOMATIC);
134 ws_gui_app->ws_gui_w_list->ws_gui_store =
135 gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
137 ws_gui_app->ws_gui_w_list->ws_gui_view =
138 create_view_and_model(array_tmp, ws_gui_app);
140 g_array_free(array_tmp, TRUE);
142 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
144 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
145 (ws_gui_app->ws_gui_scrolledwindow_left),
146 ws_gui_app->ws_gui_w_list->ws_gui_view);
148 ws_gui_app->ws_gui_html = gtk_html_new();
150 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
151 gtk_widget_modify_font(GTK_WIDGET(
152 ws_gui_app->ws_gui_html),ws_gui_app->p);
154 g_signal_connect(GTK_OBJECT (ws_gui_app->ws_gui_html),
156 G_CALLBACK(ws_gui_url_requested),
159 gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
160 ws_gui_app->welcome_note,
163 gtk_html_set_magnification(GTK_HTML(ws_gui_app->ws_gui_html),
166 gtk_html_set_editable(GTK_HTML(ws_gui_app->ws_gui_html), FALSE);
167 gtk_html_allow_selection(GTK_HTML(ws_gui_app->ws_gui_html), TRUE);
169 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
170 (ws_gui_app->ws_gui_scrolledwindow_right),
171 ws_gui_app->ws_gui_html);
173 /*adding vbox & label - used for notifications */
175 ws_gui_app->ws_gui_list_image = gtk_image_new_from_file("/usr/share/pixmaps/ws_warning_icon.png");
176 ws_gui_app->ws_gui_list_eventbox = gtk_event_box_new ();
177 ws_gui_app->ws_gui_list_vbox = gtk_vbox_new(FALSE, 0);
178 ws_gui_app->ws_gui_list_hbox = gtk_hbox_new(FALSE, 5);
179 ws_gui_app->ws_gui_list_label = gtk_label_new(_("ws_ti_list_full"));
181 ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
182 gtk_widget_modify_font(GTK_WIDGET(ws_gui_app->ws_gui_list_label), ws_gui_app->p);
184 /*HBox packing ....*/
185 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_hbox),
186 ws_gui_app->ws_gui_list_image,
191 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_hbox),
192 ws_gui_app->ws_gui_list_label,
197 // gtk_widget_set_size_request (ws_gui_app->ws_gui_list_label, 150, -1);
199 /*VBox packing ....*/
200 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_vbox),
201 ws_gui_app->ws_gui_scrolledwindow_left,
206 gtk_box_pack_end(GTK_BOX(ws_gui_app->ws_gui_list_vbox),
207 ws_gui_app->ws_gui_list_eventbox,
212 gtk_container_add (GTK_CONTAINER (ws_gui_app->ws_gui_list_eventbox),
213 ws_gui_app->ws_gui_list_hbox);
214 /************************************************/
217 gtk_paned_pack1(GTK_PANED(ws_gui_app->ws_gui_hpane),
218 ws_gui_app->ws_gui_list_vbox,
221 gtk_paned_pack2(GTK_PANED(ws_gui_app->ws_gui_hpane),
222 ws_gui_app->ws_gui_scrolledwindow_right,
226 gtk_container_add(GTK_CONTAINER(ws_gui_app->ws_gui_hildon_window),
227 ws_gui_app->ws_gui_hpane);
229 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_hildon_window));
231 gtk_widget_hide_all(GTK_WIDGET(ws_gui_app->ws_gui_list_eventbox));
232 /*gtk_widget_hide_all(GTK_WIDGET(ws_gui_app->ws_gui_list_hbox));*/
234 ws_gui_app->ws_gui_w_list->ws_gui_selection =
235 gtk_tree_view_get_selection (GTK_TREE_VIEW
236 (ws_gui_app->ws_gui_w_list->ws_gui_view));
238 gtk_tree_selection_set_mode(
239 ws_gui_app->ws_gui_w_list->ws_gui_selection,
240 GTK_SELECTION_BROWSE);
242 ws_gui_app->directories = g_slist_alloc();
243 ws_gui_set_bookmarks_sensitivity(ws_gui_app);
245 ws_gui_app->ws_gui_banner_list_searching = hildon_banner_show_animation(
246 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
248 _("ws_ab_searching"));
250 ws_gui_app->ws_gui_banner_translation_loading = hildon_banner_show_animation(
251 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
255 // gtk_widget_set_sensitive(GTK_WIDGET
256 // (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
259 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_list_searching));
260 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_translation_loading));
263 /** this function creates a find toolbar and connects signals to the tollbars
266 * @param user_data - set when the signal handler was connected
268 void ws_gui_create_find_toolbar(gpointer user_data)
270 WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;
273 ws_gui_app->ws_gui_hildon_find_toolbar =
274 HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("ws_me_search_find")));
276 ws_gui_app->ws_gui_toobar_button_hide =
277 gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
278 ws_gui_app->ws_gui_toobar_button_back =
279 gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
280 ws_gui_app->ws_gui_toobar_button_forward =
281 gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
282 ws_gui_app->ws_gui_toobar_button_stop =
283 gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
284 space = gtk_separator_tool_item_new();
286 ws_gui_app->ws_gui_toobar_button_close =
287 gtk_toolbar_get_nth_item(GTK_TOOLBAR(
288 ws_gui_app->ws_gui_hildon_find_toolbar),
291 ws_gui_app->ws_gui_toobar_button_start = gtk_toolbar_get_nth_item(GTK_TOOLBAR(
292 ws_gui_app->ws_gui_hildon_find_toolbar),
295 gtk_tool_item_set_visible_horizontal(
296 ws_gui_app->ws_gui_toobar_button_close,
299 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
300 ws_gui_app->ws_gui_toobar_button_hide,
302 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
303 ws_gui_app->ws_gui_toobar_button_back,
305 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
306 ws_gui_app->ws_gui_toobar_button_forward,
308 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
311 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
312 ws_gui_app->ws_gui_toobar_button_stop,
315 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
317 G_CALLBACK(ws_gui_search),
320 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_hide),
322 G_CALLBACK(ws_gui_words_list_hide),
325 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_back),
327 G_CALLBACK(ws_gui_history_back),
330 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_forward),
332 G_CALLBACK(ws_gui_history_next),
334 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_stop),
336 G_CALLBACK(ws_gui_search_stop),
339 gtk_widget_set_sensitive(
340 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
342 gtk_widget_set_sensitive(
343 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
345 gtk_widget_set_sensitive(
346 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop),
349 hildon_find_toolbar_highlight_entry((HildonFindToolbar*)(ws_gui_app->ws_gui_hildon_find_toolbar),
351 //gtk_toolbar_set_tooltips(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar), TRUE);
353 hildon_window_add_toolbar(ws_gui_app->ws_gui_hildon_window,
354 GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar));
357 /** this function creates application menu and its items and connect signals to
360 * @param user_data - set when the signal handler was connected
362 void ws_gui_create_main_menu (gpointer user_data)
364 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
366 ws_gui_app->ws_gui_menu->ws_gui_submenu_0 = gtk_menu_new();
367 ws_gui_app->ws_gui_menu->ws_gui_submenu_1 = gtk_menu_new();
368 ws_gui_app->ws_gui_menu->ws_gui_submenu_2 = gtk_menu_new();
369 ws_gui_app->ws_gui_menu->ws_gui_submenu_3 = gtk_menu_new();
370 ws_gui_app->ws_gui_menu->ws_gui_submenu_4 = gtk_menu_new();
371 ws_gui_app->ws_gui_menu->ws_gui_main_menu = gtk_menu_new();
373 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries =
374 gtk_menu_item_new_with_label(_("ws_me_dictionaries"));
375 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks =
376 gtk_menu_item_new_with_label(_("ws_me_bookmarks"));
377 ws_gui_app->ws_gui_menu->ws_gui_menu_edit =
378 gtk_menu_item_new_with_label(_("ws_me_edit"));
379 ws_gui_app->ws_gui_menu->ws_gui_menu_view =
380 gtk_menu_item_new_with_label(_("ws_me_view"));
381 ws_gui_app->ws_gui_menu->ws_gui_menu_search =
382 gtk_menu_item_new_with_label(_("ws_me_search"));
383 ws_gui_app->ws_gui_menu->ws_gui_menu_about =
384 gtk_menu_item_new_with_label(_("ws_me_about"));
385 ws_gui_app->ws_gui_menu->ws_gui_menu_close =
386 gtk_menu_item_new_with_label(_("ws_me_close"));
387 ws_gui_app->ws_gui_menu->ws_gui_separator =
388 gtk_separator_menu_item_new();
389 ws_gui_app->ws_gui_menu->ws_gui_separator1 =
390 gtk_separator_menu_item_new();
392 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict =
393 gtk_menu_item_new_with_label(_("ws_me_dictionaries_load"));
394 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict =
395 gtk_menu_item_new_with_label(_("ws_me_dictionaries_select"));
396 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict =
397 gtk_menu_item_new_with_label(_("ws_me_dictionaries_remove"));
398 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict =
399 gtk_menu_item_new_with_label(_("ws_me_dictionaries_optimize"));
401 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
402 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict);
403 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
404 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict);
405 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
406 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict);
407 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
408 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict);
410 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark =
411 gtk_menu_item_new_with_label(_("ws_me_bookmarks_open"));
412 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark =
413 gtk_menu_item_new_with_label(_("ws_me_bookmarks_close"));
414 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark =
415 gtk_menu_item_new_with_label(_("ws_me_bookmarks_add"));
416 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark =
417 gtk_menu_item_new_with_label(_("ws_me_bookmarks_remove"));
419 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
420 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark);
421 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
422 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark);
423 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
424 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark);
425 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
426 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark);
428 ws_gui_app->ws_gui_menu->ws_gui_menu_copy =
429 gtk_menu_item_new_with_label(_("ws_me_edit_copy"));
430 ws_gui_app->ws_gui_menu->ws_gui_menu_paste =
431 gtk_menu_item_new_with_label(_("ws_me_edit_paste"));
432 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all =
433 gtk_menu_item_new_with_label(_("ws_me_edit_select_all"));
434 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
435 ws_gui_app->ws_gui_menu->ws_gui_menu_copy);
436 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
437 ws_gui_app->ws_gui_menu->ws_gui_menu_paste);
438 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
439 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all);
441 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list =
442 gtk_check_menu_item_new_with_label(_("ws_me_view_hide_words_list"));
443 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in =
444 gtk_menu_item_new_with_label(_("ws_me_view_zoom_in"));
445 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out =
446 gtk_menu_item_new_with_label(_("ws_me_view_zoom_out"));
447 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen =
448 gtk_check_menu_item_new_with_label(_("ws_me_view_fullscreen"));
449 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
450 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list);
451 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
452 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in);
453 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
454 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out);
455 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
456 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen);
458 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word =
459 gtk_menu_item_new_with_label(_("ws_me_search_find"));
460 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next =
461 gtk_menu_item_new_with_label(_("ws_me_search_find_next"));
462 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev =
463 gtk_menu_item_new_with_label(_("ws_me_search_find_prev"));
464 ws_gui_app->ws_gui_menu->ws_gui_menu_stop =
465 gtk_menu_item_new_with_label(_("ws_me_search_stop"));
466 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
467 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word);
468 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
469 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next);
470 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
471 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev);
472 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
473 ws_gui_app->ws_gui_menu->ws_gui_menu_stop);
476 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
477 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries);
478 gtk_menu_item_set_submenu(GTK_MENU_ITEM
479 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
480 ws_gui_app->ws_gui_menu->ws_gui_submenu_0);
482 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
483 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks);
484 gtk_menu_item_set_submenu(GTK_MENU_ITEM
485 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
486 ws_gui_app->ws_gui_menu->ws_gui_submenu_4);
488 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
489 ws_gui_app->ws_gui_menu->ws_gui_separator1);
491 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
492 ws_gui_app->ws_gui_menu->ws_gui_menu_edit);
493 gtk_menu_item_set_submenu(GTK_MENU_ITEM
494 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
495 ws_gui_app->ws_gui_menu->ws_gui_submenu_1);
497 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
498 ws_gui_app->ws_gui_menu->ws_gui_menu_view);
499 gtk_menu_item_set_submenu(GTK_MENU_ITEM
500 (ws_gui_app->ws_gui_menu->ws_gui_menu_view),
501 ws_gui_app->ws_gui_menu->ws_gui_submenu_2);
503 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
504 ws_gui_app->ws_gui_menu->ws_gui_menu_search);
505 gtk_menu_item_set_submenu(GTK_MENU_ITEM
506 (ws_gui_app->ws_gui_menu->ws_gui_menu_search),
507 ws_gui_app->ws_gui_menu->ws_gui_submenu_3);
509 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
510 ws_gui_app->ws_gui_menu->ws_gui_separator);
511 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
512 ws_gui_app->ws_gui_menu->ws_gui_menu_about);
513 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
514 ws_gui_app->ws_gui_menu->ws_gui_menu_close);
516 g_signal_connect(G_OBJECT
517 (ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict),
519 G_CALLBACK(ws_gui_dictionary_loader),
521 g_signal_connect(G_OBJECT(
522 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
524 G_CALLBACK(ws_gui_dictionary_chooser),
526 g_signal_connect(G_OBJECT
527 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
529 G_CALLBACK(ws_gui_dictionary_remover),
531 g_signal_connect(G_OBJECT
532 (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
534 G_CALLBACK(ws_gui_dictionary_optimizer), ws_gui_app);
535 g_signal_connect(G_OBJECT
536 (ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark),
538 G_CALLBACK(ws_gui_dictionary_open_bookmark),
540 g_signal_connect(G_OBJECT
541 (ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark),
543 G_CALLBACK(ws_gui_dictionary_close_bookmark),
545 g_signal_connect(G_OBJECT
546 (ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark),
548 G_CALLBACK(ws_gui_dictionary_add_bookmark),
550 g_signal_connect(G_OBJECT
551 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark),
553 G_CALLBACK(ws_gui_dictionary_remove_bookmark),
555 g_signal_connect(G_OBJECT
556 (ws_gui_app->ws_gui_menu->ws_gui_menu_copy),
558 GTK_SIGNAL_FUNC(ws_gui_html_copy),
560 g_signal_connect(G_OBJECT
561 (ws_gui_app->ws_gui_menu->ws_gui_menu_paste),
563 GTK_SIGNAL_FUNC(ws_gui_html_paste),
565 g_signal_connect(G_OBJECT
566 (ws_gui_app->ws_gui_menu->ws_gui_menu_select_all),
568 GTK_SIGNAL_FUNC(ws_gui_html_select_all),
570 g_signal_connect(G_OBJECT
571 (ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list),
573 GTK_SIGNAL_FUNC(ws_gui_words_list_hide_from_menu),
575 g_signal_connect(G_OBJECT
576 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in),
578 G_CALLBACK(ws_gui_html_zoom_in),
580 g_signal_connect(G_OBJECT
581 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out),
583 G_CALLBACK(ws_gui_html_zoom_out),
585 g_signal_connect(G_OBJECT
586 (ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen),
588 GTK_SIGNAL_FUNC(ws_gui_full_screen),
590 g_signal_connect(G_OBJECT
591 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_word),
593 GTK_SIGNAL_FUNC(ws_gui_search),
595 g_signal_connect(G_OBJECT
596 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
598 GTK_SIGNAL_FUNC(ws_gui_history_next),
600 g_signal_connect(G_OBJECT
601 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
603 GTK_SIGNAL_FUNC(ws_gui_history_back),
605 g_signal_connect(G_OBJECT
606 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
608 GTK_SIGNAL_FUNC(ws_gui_search_stop),
610 g_signal_connect(G_OBJECT
611 (ws_gui_app->ws_gui_menu->ws_gui_menu_about),
613 G_CALLBACK(ws_gui_about_application),
615 g_signal_connect(G_OBJECT
616 (ws_gui_app->ws_gui_menu->ws_gui_menu_close),
618 G_CALLBACK(ws_gui_menu_quit),
621 g_signal_connect(G_OBJECT
622 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
624 GTK_SIGNAL_FUNC(ws_gui_check_clipboard),
627 g_signal_connect(G_OBJECT
628 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
630 GTK_SIGNAL_FUNC(ws_gui_dict_availablity),
633 g_signal_connect(G_OBJECT
634 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
636 GTK_SIGNAL_FUNC(ws_gui_set_bookmark_menu_items),
639 hildon_window_set_menu(HILDON_WINDOW(ws_gui_app->ws_gui_hildon_window),
641 ws_gui_app->ws_gui_menu->ws_gui_main_menu));
643 gtk_widget_set_sensitive(GTK_WIDGET
644 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
646 gtk_widget_set_sensitive(GTK_WIDGET
647 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
649 gtk_widget_set_sensitive(GTK_WIDGET
650 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
655 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_main_menu);
659 /** this function creates contex popup menu and its items and connect signals to
662 * @param user_data - set when the signal handler was connected
664 void ws_gui_create_popup_menu (gpointer user_data)
666 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
668 ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
669 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
670 ws_gui_app->ws_gui_menu->ws_gui_separator =
671 gtk_separator_menu_item_new();
673 ws_gui_app->ws_gui_menu->ws_gui_popup_search =
674 gtk_menu_item_new_with_label(_("ws_mp_search"));
675 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
676 ws_gui_app->ws_gui_menu->ws_gui_popup_search);
677 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
678 gtk_separator_menu_item_new());
679 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark =
680 gtk_menu_item_new_with_label(_("ws_mp_add_bookmark"));
681 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
682 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark);
684 ws_gui_app->ws_gui_menu->ws_gui_popup_copy =
685 gtk_menu_item_new_with_label(_("ws_mp_edit_copy"));
686 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
687 ws_gui_app->ws_gui_menu->ws_gui_popup_copy);
689 ws_gui_app->ws_gui_menu->ws_gui_popup_paste =
690 gtk_menu_item_new_with_label(_("ws_mp_edit_paste"));
691 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
692 ws_gui_app->ws_gui_menu->ws_gui_popup_paste);
694 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all =
695 gtk_menu_item_new_with_label(_("ws_mp_edit_select_all"));
696 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
697 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all);
699 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
701 ws_gui_app->ws_gui_menu->ws_gui_popup_edit =
702 gtk_menu_item_new_with_label (_("ws_mp_edit"));
703 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
704 ws_gui_app->ws_gui_menu->ws_gui_popup_edit);
706 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
707 ws_gui_app->ws_gui_menu->ws_gui_separator);
709 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in =
710 gtk_menu_item_new_with_label (_("ws_mp_zoom_in"));
711 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
712 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in);
714 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out =
715 gtk_menu_item_new_with_label (_("ws_mp_zoom_out"));
716 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
717 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out);
719 gtk_menu_item_set_submenu(GTK_MENU_ITEM
720 (ws_gui_app->ws_gui_menu->ws_gui_popup_edit),
721 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
723 struct _GtkHTML *tmp = (struct _GtkHTML *)(ws_gui_app->ws_gui_html);
725 if (html_engine_is_selection_active(tmp->engine) == TRUE)
727 gtk_widget_set_sensitive(GTK_WIDGET
728 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
730 gtk_widget_set_sensitive(GTK_WIDGET
731 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
736 gtk_widget_set_sensitive(GTK_WIDGET
737 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
739 gtk_widget_set_sensitive(GTK_WIDGET
740 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
744 if (ws_gui_app->html_flag == FALSE)
746 gtk_widget_set_sensitive(GTK_WIDGET
747 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
752 gtk_widget_set_sensitive(GTK_WIDGET
753 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
757 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_menu);
760 g_signal_connect(G_OBJECT
761 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
763 G_CALLBACK(ws_gui_popup_search),
766 g_signal_connect(G_OBJECT
767 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
769 G_CALLBACK(ws_gui_dictionary_add_bookmark),
772 g_signal_connect(G_OBJECT
773 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
775 G_CALLBACK(ws_gui_html_copy),
777 g_signal_connect(G_OBJECT
778 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
780 G_CALLBACK(ws_gui_html_paste),
782 g_signal_connect(G_OBJECT
783 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
785 G_CALLBACK(ws_gui_html_select_all),
787 g_signal_connect(G_OBJECT
788 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in),
790 G_CALLBACK(ws_gui_html_zoom_in), ws_gui_app);
791 g_signal_connect(G_OBJECT
792 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out),
794 G_CALLBACK(ws_gui_html_zoom_out),
797 if (gtk_clipboard_wait_for_text(ws_gui_app->ws_gui_clipboard) != NULL)
799 gtk_widget_set_sensitive(GTK_WIDGET
800 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
805 gtk_widget_set_sensitive(GTK_WIDGET
806 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
811 if (ws_gui_app->bookmark_avail == FALSE)
813 gtk_widget_set_sensitive(GTK_WIDGET
814 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
820 if (ws_gui_app->bookmark_mode == TRUE)
822 gtk_widget_set_sensitive(GTK_WIDGET
823 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
828 g_strstrip(ws_gui_app->last_word);
829 //g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nlast_word: %s\n\n", ws_gui_app->last_word);
831 if (ws_gui_app->last_word == NULL ||
832 (ws_gui_app->last_word[0] == '\0'))
834 gtk_widget_set_sensitive(GTK_WIDGET
835 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
840 gtk_widget_set_sensitive(GTK_WIDGET
841 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
846 gtk_menu_popup(GTK_MENU(ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
855 /** this function creates dialog popup window and allows to select dictionaries
856 * which user wants to use
858 * @param menuitem - the object which received the signal
859 * @param user_data - set when the signal handler was connected
861 void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
863 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
865 GtkWidget *dialog_vbox1;
866 GtkWidget *scrolledwindow1;
867 GtkWidget *viewport1;
870 GtkWidget *checkbutton;
871 GtkWidget *cancel_button;
872 GtkWidget *ok_button;
879 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
881 if (gconf_client_dir_exists(ws_gui_app->client,
882 GCONF_PATH, NULL) == TRUE)
884 ws_gui_app->directories =
885 gconf_client_all_dirs(ws_gui_app->client,
891 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
892 "\n.::GUI::. /apps/mdictionary/dictionaries does not exist!!");
895 dialog1 = gtk_dialog_new ();
896 gtk_window_set_title (GTK_WINDOW (dialog1),
897 (_("ws_ti_choose_dictionaries_title")));
898 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
899 GDK_WINDOW_TYPE_HINT_DIALOG);
900 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
902 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
903 gtk_widget_show (dialog_vbox1);
905 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
906 gtk_widget_show (scrolledwindow1);
907 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
913 viewport1 = gtk_viewport_new (NULL, NULL);
914 gtk_widget_show (viewport1);
915 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
917 vbox1 = gtk_vbox_new (FALSE, 0);
918 gtk_widget_show (vbox1);
919 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
921 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
923 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
924 name = g_path_get_basename(string);
925 checkbutton = gtk_check_button_new_with_label(name);
926 path = g_strconcat(string, "/active", NULL);
928 if (gconf_client_get_bool(ws_gui_app->client,
932 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
938 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
943 g_array_append_val(checkboxes, checkbutton);
944 gtk_box_pack_start (GTK_BOX (vbox1),
950 if (strcmp(name, "bookmarks") == 0)
952 if (ws_gui_app->bookmark_avail == FALSE)
954 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton),
959 gtk_widget_show (checkbutton);
962 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
963 gtk_widget_show (cancel_button);
964 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
966 GTK_RESPONSE_CANCEL);
968 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
969 gtk_widget_show (ok_button);
970 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
974 i = gtk_dialog_run(GTK_DIALOG(dialog1));
976 if (i == GTK_RESPONSE_OK)
978 for(i=0;i<(checkboxes->len);i++)
980 if (gtk_toggle_button_get_active(
981 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
982 GtkWidget *, i))) == TRUE)
984 name = gtk_button_get_label(GTK_BUTTON(
985 g_array_index(checkboxes, GtkWidget *, i)));
987 path=g_strconcat(GCONF_PATH,
992 gconf_client_set_bool(ws_gui_app->client,
998 if (gtk_toggle_button_get_active(
999 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
1000 GtkWidget *, i))) == FALSE)
1002 name = gtk_button_get_label(GTK_BUTTON(
1003 g_array_index(checkboxes, GtkWidget *, i)));
1005 path=g_strconcat(GCONF_PATH,
1010 gconf_client_set_bool(ws_gui_app->client,
1017 ws_dbus_notify(ws_gui_app->dbus_data,
1018 WS_DBUS_INFO_CONFIG_CHANGED);
1020 if(ws_gui_app->ws_gui_history->len >= 0)
1022 ws_gui_clear_array(ws_gui_app->ws_gui_history);
1023 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1024 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1025 ws_gui_app->ws_gui_history_cur_pos = -1;
1027 ws_gui_check_history(ws_gui_app);
1029 gtk_widget_destroy (dialog1);
1030 ws_refresh_search_results(ws_gui_app); //refreshing words list
1032 else if (i == GTK_RESPONSE_CANCEL)
1034 gtk_widget_destroy (dialog1);
1037 g_slist_free(ws_gui_app->directories);
1040 /** this function creates dialog popup window and allows optimize dictionaries
1042 * @param menuitem - the object which received the signal
1043 * @param user_data - set when the signal handler was connected
1045 void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
1047 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1050 GtkWidget *dialog_vbox1;
1051 GtkWidget *scrolledwindow1;
1052 GtkWidget *viewport1;
1055 GtkWidget *checkbutton;
1056 GtkWidget *cancel_button;
1057 GtkWidget *ok_button;
1064 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
1066 //check if a gconf directory exists
1067 if (gconf_client_dir_exists(ws_gui_app->client,
1071 ws_gui_app->directories =
1072 gconf_client_all_dirs(ws_gui_app->client, GCONF_PATH, NULL);
1076 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
1077 "\n.::GUI::. /apps/mdictionary/dictionaries does not exist!!");
1080 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
1082 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
1083 name = g_path_get_basename(string);
1085 path = g_strconcat(string, "/optimized", NULL);
1086 if (gconf_client_get_bool (ws_gui_app->client,
1090 checkbutton = gtk_check_button_new_with_label(name);
1091 g_array_append_val(checkboxes, checkbutton);
1094 if (checkboxes->len <= 0)
1096 ws_gui_app->ws_message_dialog = gtk_message_dialog_new(
1097 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1098 GTK_DIALOG_DESTROY_WITH_PARENT,
1101 _("ws_ni_no_dictionaries_to_optimize"));
1102 gtk_widget_show_all(ws_gui_app->ws_message_dialog);
1103 if (gtk_dialog_run (GTK_DIALOG (
1104 ws_gui_app->ws_message_dialog)) == GTK_RESPONSE_OK)
1106 gtk_widget_destroy(ws_gui_app->ws_message_dialog);
1111 dialog1 = gtk_dialog_new ();
1112 gtk_window_set_title(GTK_WINDOW (dialog1),
1113 (_("ws_ti_choose_dictionaries_title")));
1114 gtk_window_set_type_hint(GTK_WINDOW (dialog1),
1115 GDK_WINDOW_TYPE_HINT_DIALOG);
1116 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1118 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1119 gtk_widget_show (dialog_vbox1);
1121 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
1122 gtk_widget_show (scrolledwindow1);
1123 gtk_box_pack_start(GTK_BOX (dialog_vbox1),
1129 viewport1 = gtk_viewport_new (NULL, NULL);
1130 gtk_widget_show (viewport1);
1131 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
1133 vbox1 = gtk_vbox_new (FALSE, 0);
1134 gtk_widget_show (vbox1);
1135 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
1136 for (i=0; i<checkboxes->len; i++)
1138 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
1139 g_array_index(checkboxes, GtkWidget*, i)),
1141 gtk_box_pack_start(GTK_BOX (vbox1),
1142 g_array_index(checkboxes, GtkWidget*, i),
1146 gtk_widget_show(g_array_index(checkboxes,
1150 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
1151 gtk_widget_show (cancel_button);
1152 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1154 GTK_RESPONSE_CANCEL);
1155 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
1156 gtk_widget_show (ok_button);
1157 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1160 i = gtk_dialog_run(GTK_DIALOG(dialog1));
1161 if (i == GTK_RESPONSE_OK)
1163 for(i=0;i<(checkboxes->len);i++)
1165 if (gtk_toggle_button_get_active(
1167 g_array_index(checkboxes,
1168 GtkWidget *, i))) == TRUE)
1170 name = gtk_button_get_label(GTK_BUTTON(
1171 g_array_index(checkboxes,
1174 path=g_strconcat(GCONF_PATH,
1179 gconf_client_set_bool(
1185 if (gtk_toggle_button_get_active(
1187 g_array_index(checkboxes,
1188 GtkWidget *, i))) == FALSE)
1190 name = gtk_button_get_label(GTK_BUTTON
1191 (g_array_index(checkboxes,
1194 path=g_strconcat(GCONF_PATH,
1199 gconf_client_set_bool(
1206 ws_dbus_notify(ws_gui_app->dbus_data,
1207 WS_DBUS_INFO_CONFIG_CHANGED);
1208 gtk_widget_destroy (dialog1);
1210 else if (i == GTK_RESPONSE_CANCEL)
1212 gtk_widget_destroy (dialog1);
1215 g_slist_free(ws_gui_app->directories);
1218 /** this function creates dialog popup window which allows to load a new
1219 *dictionary file into application
1221 * @param menuitem - the object which received the signal
1222 * @param user_data - set when the signal handler was connected
1224 void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
1226 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1229 // GtkWidget *dialog2;
1231 dialog = hildon_file_chooser_dialog_new(
1232 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1233 GTK_FILE_CHOOSER_ACTION_OPEN);
1235 gtk_window_set_default_size(GTK_WINDOW (dialog), 200, 200);
1236 gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), FALSE);
1238 //gtk_widget_show(GTK_WIDGET(dialog));
1240 if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
1250 filename = gtk_file_chooser_get_filename(
1251 GTK_FILE_CHOOSER (dialog));
1252 name = g_path_get_basename(filename);
1253 len = strlen(filename) - strlen(name) -1;
1254 tmp = g_strndup (filename, len);
1257 tmp = g_path_get_basename(tmp);
1259 if (g_str_has_suffix(name, ".xdxf")
1260 || g_str_has_suffix(name, ".idx")
1261 || g_str_has_suffix(name, ".ifo")
1262 || g_str_has_suffix(name, ".idx.gz")
1263 || g_str_has_suffix(name, ".dict")
1264 || g_str_has_suffix(name, ".dict.dz"))
1266 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n:::GUUUUIII GUIII::: check");
1267 if (ws_gui_load_dict(filename, ws_gui_app) == TRUE)
1269 gtk_widget_destroy(dialog);
1270 ws_refresh_search_results(ws_gui_app);
1271 hildon_banner_show_information(GTK_WIDGET(
1272 ws_gui_app->ws_gui_hildon_window),
1274 _("ws_ni_dictionary_added"));
1277 else if (g_str_has_suffix(name, ".bz2"))
1279 ws_dbus_client_extract_dictionary(ws_gui_app->dbus_data, filename);
1280 gtk_widget_destroy(dialog);
1281 ws_refresh_search_results(ws_gui_app);
1285 gtk_widget_destroy (dialog);
1286 hildon_banner_show_information(GTK_WIDGET(
1287 ws_gui_app->ws_gui_hildon_window),
1289 _("ws_ni_dictionary_wrong_file"));
1295 gtk_widget_destroy (dialog);
1300 /** this function creates dialog popup window which allows to load dictionary
1302 * @param filename - the object which received the signal
1303 * @param user_data - set when the signal handler was connected
1305 gboolean ws_gui_load_dict(gchar *filename, gpointer user_data)
1307 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1311 gchar *name = g_path_get_basename(filename);
1316 len = strlen(filename) - strlen(name) -1;
1317 gchar *tmp = g_strndup (filename, len);;
1318 tmp = g_path_get_basename(tmp);
1321 filepath = g_strndup (filename, len);
1322 path = g_strconcat(GCONF_PATH, "/", tmp, "/path", NULL);
1323 gconf_client_set_string(ws_gui_app->client,
1329 path = g_strconcat(GCONF_PATH,
1335 dialog1 = gtk_message_dialog_new(GTK_WINDOW(
1336 ws_gui_app->ws_gui_hildon_window),
1337 GTK_DIALOG_DESTROY_WITH_PARENT,
1338 GTK_MESSAGE_QUESTION,
1340 _("ws_ni_dictionaries_activation_question"));
1342 gtk_widget_show_all(GTK_WIDGET(dialog1));
1344 if (gtk_dialog_run (GTK_DIALOG (dialog1)) == GTK_RESPONSE_YES)
1346 gconf_client_set_bool(ws_gui_app->client,
1353 gconf_client_set_bool(ws_gui_app->client,
1358 gtk_widget_destroy (dialog1);
1362 path = g_strconcat(GCONF_PATH, "/", tmp, "/optimized", NULL);
1364 dialog2 = gtk_message_dialog_new(
1365 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1366 GTK_DIALOG_DESTROY_WITH_PARENT,
1367 GTK_MESSAGE_QUESTION,
1369 _("ws_ni_dictionaries_optimalization_question"));
1371 gtk_widget_show_all(GTK_WIDGET(dialog2));
1373 if (gtk_dialog_run (GTK_DIALOG (dialog2)) == GTK_RESPONSE_YES)
1375 gconf_client_set_bool(ws_gui_app->client,
1382 gconf_client_set_bool(ws_gui_app->client,
1387 gtk_widget_destroy (dialog2);
1389 if(ws_gui_app->ws_gui_history->len > 0)
1391 ws_gui_clear_array(ws_gui_app->ws_gui_history);
1392 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1393 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1394 ws_gui_app->ws_gui_history_cur_pos = -1;
1396 ws_gui_check_history(ws_gui_app);
1398 ws_dbus_notify(ws_gui_app->dbus_data,
1399 WS_DBUS_INFO_CONFIG_CHANGED);
1404 /** this function creates dialog popup window which allows to remove dictionary
1405 * which is no longer used
1407 * @param menuitem - the object which received the signal
1408 * @param user_data - set when the signal handler was connected
1410 void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
1412 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1415 GtkWidget *dialog_vbox1;
1416 GtkWidget *scrolledwindow1;
1417 GtkWidget *viewport1;
1419 GtkWidget *checkbutton;
1420 GtkWidget *cancel_button;
1421 GtkWidget *ok_button;
1428 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
1430 if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL)
1433 ws_gui_app->directories = gconf_client_all_dirs(
1440 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
1441 "\n.::GUI::. /apps/mdictionary/dictionaries does not exist!!");
1444 dialog1 = gtk_dialog_new ();
1445 gtk_window_set_title (GTK_WINDOW (dialog1),
1446 (_("ws_ti_remove_dictionaries_title")));
1447 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
1448 GDK_WINDOW_TYPE_HINT_DIALOG);
1449 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1451 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1452 gtk_widget_show (dialog_vbox1);
1454 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
1455 gtk_widget_show (scrolledwindow1);
1456 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
1462 viewport1 = gtk_viewport_new (NULL, NULL);
1463 gtk_widget_show (viewport1);
1464 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
1466 vbox1 = gtk_vbox_new (FALSE, 0);
1467 gtk_widget_show (vbox1);
1468 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
1470 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
1472 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
1473 name = g_path_get_basename(string);
1474 checkbutton = gtk_check_button_new_with_label(name);
1476 g_array_append_val(checkboxes, checkbutton);
1477 gtk_box_pack_start (GTK_BOX (vbox1),
1483 if (strcmp(name, "bookmarks") == 0)
1485 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton), FALSE);
1487 gtk_widget_show (checkbutton);
1490 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
1491 gtk_widget_show (cancel_button);
1492 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1494 GTK_RESPONSE_CANCEL);
1496 ok_button = gtk_button_new_from_stock
1497 (_("ws_bd_remove_dictionaries_remove_selected"));
1498 gtk_widget_show (ok_button);
1499 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1503 i = gtk_dialog_run(GTK_DIALOG(dialog1));
1505 if (i == GTK_RESPONSE_OK)
1507 for(i=0;i<(checkboxes->len);i++)
1509 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
1510 g_array_index(checkboxes, GtkWidget *, i))) == TRUE)
1513 name = gtk_button_get_label(GTK_BUTTON(
1514 g_array_index(checkboxes, GtkWidget *, i)));
1515 path=g_strconcat(GCONF_PATH, "/", name, NULL);
1516 gconf_client_recursive_unset(ws_gui_app->client,
1518 GCONF_UNSET_INCLUDING_SCHEMA_NAMES,
1523 if(ws_gui_app->ws_gui_history->len >= 0)
1525 ws_gui_clear_array(ws_gui_app->ws_gui_history);
1526 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1527 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1528 ws_gui_app->ws_gui_history_cur_pos = -1;
1530 ws_gui_check_history(ws_gui_app);
1532 ws_dbus_notify(ws_gui_app->dbus_data,
1533 WS_DBUS_INFO_CONFIG_CHANGED);
1535 hildon_banner_show_information(GTK_WIDGET(
1536 ws_gui_app->ws_gui_hildon_window),
1538 _("ws_ib_dictionary_removed"));
1540 gtk_widget_destroy (dialog1);
1541 ws_refresh_search_results(ws_gui_app);
1543 else if (i == GTK_RESPONSE_CANCEL)
1545 gtk_widget_destroy (dialog1);
1548 g_slist_free(ws_gui_app->directories);
1551 /** this function creates dialog popup window which displays information about
1552 * application (about window)
1554 * @param menuitem - the object which received the signal
1555 * @param user_data - set when the signal handler was connected
1557 void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data)
1559 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1561 gtk_widget_set_sensitive(GTK_WIDGET
1562 (ws_gui_app->ws_gui_hildon_find_toolbar),
1565 GtkWidget *about_dialog;
1566 GtkWidget *dialog_vbox1;
1572 GtkWidget *scrolledwindow;
1573 GtkWidget *textview;
1576 const gchar *ws_version;
1578 about_dialog = gtk_dialog_new ();
1579 gtk_window_set_title (GTK_WINDOW (about_dialog),
1580 _("ws_ti_about_title"));
1581 gtk_window_set_default_size(GTK_WINDOW (about_dialog), 350, 350);
1583 dialog_vbox1 = GTK_DIALOG (about_dialog)->vbox;
1584 gtk_widget_show (dialog_vbox1);
1586 vbox1 = gtk_vbox_new (FALSE, 0);
1587 gtk_widget_show (vbox1);
1588 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0);
1590 image = gtk_image_new_from_file ("/usr/share/pixmaps/mdictionary_about.png");
1591 gtk_box_pack_start (GTK_BOX (vbox1), image, TRUE, TRUE, 0);
1593 label2 = gtk_label_new ("mDictionary");
1594 ws_gui_app->p = pango_font_description_from_string("Tahoma 18");
1595 gtk_widget_modify_font(GTK_WIDGET(label2), ws_gui_app->p);
1596 gtk_label_set_pattern (GTK_LABEL(label2), "__________");
1597 gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 5);
1599 ws_version = g_strconcat("Maemo Multilingual Dictionary\nver. ",
1602 label3 = gtk_label_new_with_mnemonic (_(ws_version));
1603 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1604 gtk_widget_modify_font(GTK_WIDGET(label3), ws_gui_app->p);
1605 gtk_box_pack_start (GTK_BOX (vbox1), label3, FALSE, FALSE, 5);
1606 gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_CENTER);
1608 label4 = gtk_label_new ("Copyright 2006 - 2007, ComArch S.A\nAll rights "
1610 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1611 gtk_widget_modify_font(GTK_WIDGET(label4), ws_gui_app->p);
1612 gtk_box_pack_start (GTK_BOX (vbox1), label4, FALSE, FALSE, 5);
1613 gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_CENTER);
1615 scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1616 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW
1618 GTK_SHADOW_ETCHED_OUT);
1619 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
1621 GTK_POLICY_AUTOMATIC,
1622 GTK_POLICY_AUTOMATIC);
1623 gtk_box_pack_start (GTK_BOX (vbox1),
1629 textview = gtk_text_view_new ();
1630 ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
1631 gtk_widget_modify_font(GTK_WIDGET(textview), ws_gui_app->p);
1632 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE);
1633 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 10);
1634 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 10);
1635 gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
1636 gtk_text_buffer_set_text(
1637 gtk_text_view_get_buffer(GTK_TEXT_VIEW (textview)),
1638 /* "The following third party\ncomponents may be\nincluded"
1639 " depending \non your system configuration:\n\nD-BUS "
1640 "- License information:\nhttp://opensource.org/"
1641 "licenses/academic.php",
1643 "This program is distributed\n"
1644 " in the hope that it will be\n"
1645 " useful, but WITHOUT ANY \n"
1646 " WARRANTY; without even the\n"
1647 " implied warranty of\n"
1648 " MERCHANTABILITY or FITNESS\n"
1649 " FOR A PARTICULAR PURPOSE.\n"
1650 " See the GNU General Public\n"
1651 " License for more details.\n"
1653 "The following third party\ncomponents may be\nincluded"
1654 " depending \non your system configuration:\n\nD-BUS "
1655 "- License information:\nhttp://opensource.org/"
1656 " licenses/academic.php\n\n"
1657 " Finnish-English dictionary -\n"
1658 " Converted by swaj under GNU\n"
1659 " Public License, Version: 1.1\n\n"
1660 " English-Finnish dictionary -\n"
1661 " Converted by swaj under GNU\n"
1662 " Public License, Version: 1.0",
1665 button1 = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
1666 gtk_dialog_add_action_widget(GTK_DIALOG(about_dialog),
1668 GTK_RESPONSE_CLOSE);
1670 gtk_widget_show_all (GTK_WIDGET(about_dialog));
1672 if (gtk_dialog_run(GTK_DIALOG(about_dialog)) == GTK_RESPONSE_CLOSE)
1674 gtk_widget_destroy(GTK_WIDGET(about_dialog));
1677 gtk_widget_set_sensitive(
1678 GTK_WIDGET(ws_gui_app->ws_gui_hildon_find_toolbar),
1682 void ws_gui_add_bookmark_dialog(gpointer user_data)
1685 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1688 GtkWidget *dialog_vbox1;
1693 GtkWidget *cancelbutton1;
1694 GtkWidget *okbutton1;
1696 const gchar *book_word;
1698 dialog1 = gtk_dialog_new ();
1699 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_add_bookmark"));
1700 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1702 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1703 gtk_widget_show (dialog_vbox1);
1705 vbox1 = gtk_vbox_new (FALSE, 0);
1706 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1708 hbox1 = gtk_hbox_new (FALSE, 0);
1709 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1711 label = gtk_label_new(_("ws_ti_bookmarks_add_question"));
1712 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1714 entry1 = gtk_entry_new ();
1715 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1716 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1717 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1718 gtk_entry_set_editable(GTK_ENTRY(entry1), TRUE);
1720 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1721 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1725 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1726 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1728 GTK_RESPONSE_CANCEL);
1730 gtk_widget_show_all (dialog1);
1732 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1734 book_word = gtk_entry_get_text(GTK_ENTRY(entry1));
1735 ws_dbus_client_add_bookmark(ws_gui_app->dbus_data,
1737 ws_gui_app->raw_translation->str);
1738 gtk_widget_destroy(GTK_WIDGET(dialog1));
1743 gtk_widget_destroy(GTK_WIDGET(dialog1));
1747 void ws_gui_remove_bookmark_dialog(gpointer user_data)
1749 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1752 GtkWidget *dialog_vbox1;
1757 GtkWidget *cancelbutton1;
1758 GtkWidget *okbutton1;
1760 dialog1 = gtk_dialog_new ();
1761 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_remove_bookmark"));
1762 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1764 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1765 gtk_widget_show (dialog_vbox1);
1767 vbox1 = gtk_vbox_new (FALSE, 0);
1768 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1770 hbox1 = gtk_hbox_new (FALSE, 0);
1771 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1773 label = gtk_label_new(_("ws_ni_remove_bookmark_question"));
1774 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1776 entry1 = gtk_entry_new ();
1777 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1778 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1779 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1780 gtk_entry_set_editable(GTK_ENTRY(entry1), FALSE);
1782 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1783 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1787 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1788 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1790 GTK_RESPONSE_CANCEL);
1792 gtk_widget_show_all (dialog1);
1794 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1796 gtk_widget_destroy(GTK_WIDGET(dialog1));
1799 ws_dbus_client_remove_bookmark(ws_gui_app->dbus_data,
1800 ws_gui_app->last_word);
1802 ws_gui_app->last_word = NULL;
1804 ws_gui_fill_html(" ", ws_gui_app);
1806 g_object_get(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
1811 if (strlen(tmp) != 0)
1813 ws_dbus_client_find_word (ws_gui_app->dbus_data, tmp);
1817 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "strlen(tmp)=0");
1818 gtk_list_store_clear(
1819 ws_gui_app->ws_gui_w_list->ws_gui_store);
1824 gtk_widget_destroy(GTK_WIDGET(dialog1));
1828 void ws_gui_list_full_dialog(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
1830 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1832 ws_gui_app->ws_message_dialog = gtk_message_dialog_new(
1833 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1834 GTK_DIALOG_DESTROY_WITH_PARENT,
1837 _("ws_ni_words_list_full"));
1840 GTK_DIALOG(ws_gui_app->ws_message_dialog))
1844 ws_gui_app->ws_message_dialog);