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;
57 ws_gui_app->loading = FALSE;
58 ws_gui_app->stop_clicked = FALSE;
60 ws_gui_app->zoom = ZOOM_DEFAULT;
62 ws_gui_app->timer = g_timer_new();
63 g_timer_stop(ws_gui_app->timer);
65 ws_gui_app->ws_gui_history = g_array_new(TRUE, TRUE, sizeof(gchar*));
66 ws_gui_app->ws_gui_history_list = g_array_new(TRUE, TRUE, sizeof(gchar*));
67 ws_gui_app->ws_gui_history_iter = g_array_new(TRUE, TRUE, sizeof(gchar*));
68 ws_gui_app->history_flag = FALSE;
69 ws_gui_app->ws_gui_history_cur_pos = -1;
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);
114 g_array_free(array_tmp, TRUE);
116 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
118 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
119 (ws_gui_app->ws_gui_scrolledwindow_left),
120 ws_gui_app->ws_gui_w_list->ws_gui_view);
122 ws_gui_app->ws_gui_html = gtk_html_new();
124 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
125 gtk_widget_modify_font(GTK_WIDGET(
126 ws_gui_app->ws_gui_html),ws_gui_app->p);
128 g_signal_connect(GTK_OBJECT (ws_gui_app->ws_gui_html),
130 G_CALLBACK(ws_gui_url_requested),
133 gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
134 ws_gui_app->welcome_note,
137 g_free(ws_gui_app->welcome_note);
138 ws_gui_app->welcome_note = NULL;
140 gtk_html_set_magnification(GTK_HTML(ws_gui_app->ws_gui_html),
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 /*adding vbox & label - used for notifications */
152 ws_gui_app->ws_gui_list_image = gtk_image_new_from_file("/usr/share/pixmaps/ws_warning_icon.png");
153 ws_gui_app->ws_gui_list_eventbox = gtk_event_box_new ();
154 ws_gui_app->ws_gui_list_vbox = gtk_vbox_new(FALSE, 0);
155 ws_gui_app->ws_gui_list_hbox = gtk_hbox_new(FALSE, 5);
156 ws_gui_app->ws_gui_list_label = gtk_label_new(_("ws_ti_list_full"));
158 ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
159 gtk_widget_modify_font(GTK_WIDGET(ws_gui_app->ws_gui_list_label), ws_gui_app->p);
161 /*HBox packing ....*/
162 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_hbox),
163 ws_gui_app->ws_gui_list_image,
168 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_hbox),
169 ws_gui_app->ws_gui_list_label,
174 // gtk_widget_set_size_request (ws_gui_app->ws_gui_list_label, 150, -1);
176 /*VBox packing ....*/
177 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_vbox),
178 ws_gui_app->ws_gui_scrolledwindow_left,
183 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_vbox),
184 ws_gui_app->ws_gui_list_eventbox,
189 gtk_container_add (GTK_CONTAINER (ws_gui_app->ws_gui_list_eventbox),
190 ws_gui_app->ws_gui_list_hbox);
191 /************************************************/
194 gtk_paned_pack1(GTK_PANED(ws_gui_app->ws_gui_hpane),
195 ws_gui_app->ws_gui_list_vbox,
198 gtk_paned_pack2(GTK_PANED(ws_gui_app->ws_gui_hpane),
199 ws_gui_app->ws_gui_scrolledwindow_right,
203 gtk_container_add(GTK_CONTAINER(ws_gui_app->ws_gui_hildon_window),
204 ws_gui_app->ws_gui_hpane);
206 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_hildon_window));
208 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_list_hbox));
210 ws_gui_app->ws_gui_w_list->ws_gui_selection =
211 gtk_tree_view_get_selection (GTK_TREE_VIEW
212 (ws_gui_app->ws_gui_w_list->ws_gui_view));
214 gtk_tree_selection_set_mode(
215 ws_gui_app->ws_gui_w_list->ws_gui_selection,
216 GTK_SELECTION_BROWSE);
218 ws_gui_app->directories = g_slist_alloc();
219 ws_gui_set_bookmarks_sensitivity(ws_gui_app);
221 ws_gui_app->ws_gui_banner_list_searching = hildon_banner_show_animation(
222 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
224 _("ws_ab_searching"));
226 ws_gui_app->ws_gui_banner_translation_loading = hildon_banner_show_animation(
227 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
231 gtk_widget_set_sensitive(GTK_WIDGET
232 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
235 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_list_searching));
236 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_translation_loading));
239 /** this function creates a find toolbar and connects signals to the tollbars
242 * @param user_data - set when the signal handler was connected
244 void ws_gui_create_find_toolbar(gpointer user_data)
246 WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;
249 ws_gui_app->ws_gui_hildon_find_toolbar =
250 HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("ws_me_search_find")));
252 ws_gui_app->ws_gui_toobar_button_hide =
253 gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
254 ws_gui_app->ws_gui_toobar_button_back =
255 gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
256 ws_gui_app->ws_gui_toobar_button_forward =
257 gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
258 ws_gui_app->ws_gui_toobar_button_stop =
259 gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
260 space = gtk_separator_tool_item_new();
262 ws_gui_app->ws_gui_toobar_button_close =
263 gtk_toolbar_get_nth_item(GTK_TOOLBAR(
264 ws_gui_app->ws_gui_hildon_find_toolbar),
267 ws_gui_app->ws_gui_toobar_button_start = gtk_toolbar_get_nth_item(GTK_TOOLBAR(
268 ws_gui_app->ws_gui_hildon_find_toolbar),
271 gtk_tool_item_set_visible_horizontal(
272 ws_gui_app->ws_gui_toobar_button_close,
275 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
276 ws_gui_app->ws_gui_toobar_button_hide,
278 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
279 ws_gui_app->ws_gui_toobar_button_back,
281 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
282 ws_gui_app->ws_gui_toobar_button_forward,
284 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
287 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
288 ws_gui_app->ws_gui_toobar_button_stop,
291 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
293 G_CALLBACK(ws_gui_search),
296 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_hide),
298 G_CALLBACK(ws_gui_words_list_hide),
301 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_back),
303 G_CALLBACK(ws_gui_history_back),
306 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_forward),
308 G_CALLBACK(ws_gui_history_next),
310 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_stop),
312 G_CALLBACK(ws_gui_search_stop),
315 gtk_widget_set_sensitive(
316 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
318 gtk_widget_set_sensitive(
319 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
321 gtk_widget_set_sensitive(
322 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop),
325 hildon_find_toolbar_highlight_entry((HildonFindToolbar*)(ws_gui_app->ws_gui_hildon_find_toolbar),
327 //gtk_toolbar_set_tooltips(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar), TRUE);
329 hildon_window_add_toolbar(ws_gui_app->ws_gui_hildon_window,
330 GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar));
333 /** this function creates application menu and its items and connect signals to
336 * @param user_data - set when the signal handler was connected
338 void ws_gui_create_main_menu (gpointer user_data)
340 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
342 ws_gui_app->ws_gui_menu->ws_gui_submenu_0 = gtk_menu_new();
343 ws_gui_app->ws_gui_menu->ws_gui_submenu_1 = gtk_menu_new();
344 ws_gui_app->ws_gui_menu->ws_gui_submenu_2 = gtk_menu_new();
345 ws_gui_app->ws_gui_menu->ws_gui_submenu_3 = gtk_menu_new();
346 ws_gui_app->ws_gui_menu->ws_gui_submenu_4 = gtk_menu_new();
347 ws_gui_app->ws_gui_menu->ws_gui_main_menu = gtk_menu_new();
349 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries =
350 gtk_menu_item_new_with_label(_("ws_me_dictionaries"));
351 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks =
352 gtk_menu_item_new_with_label(_("ws_me_bookmarks"));
353 ws_gui_app->ws_gui_menu->ws_gui_menu_edit =
354 gtk_menu_item_new_with_label(_("ws_me_edit"));
355 ws_gui_app->ws_gui_menu->ws_gui_menu_view =
356 gtk_menu_item_new_with_label(_("ws_me_view"));
357 ws_gui_app->ws_gui_menu->ws_gui_menu_search =
358 gtk_menu_item_new_with_label(_("ws_me_search"));
359 ws_gui_app->ws_gui_menu->ws_gui_menu_about =
360 gtk_menu_item_new_with_label(_("ws_me_about"));
361 ws_gui_app->ws_gui_menu->ws_gui_menu_close =
362 gtk_menu_item_new_with_label(_("ws_me_close"));
363 ws_gui_app->ws_gui_menu->ws_gui_separator =
364 gtk_separator_menu_item_new();
365 ws_gui_app->ws_gui_menu->ws_gui_separator1 =
366 gtk_separator_menu_item_new();
368 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict =
369 gtk_menu_item_new_with_label(_("ws_me_dictionaries_load"));
370 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict =
371 gtk_menu_item_new_with_label(_("ws_me_dictionaries_select"));
372 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict =
373 gtk_menu_item_new_with_label(_("ws_me_dictionaries_remove"));
374 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict =
375 gtk_menu_item_new_with_label(_("ws_me_dictionaries_optimize"));
377 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
378 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict);
379 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
380 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict);
381 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
382 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict);
383 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
384 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict);
386 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark =
387 gtk_menu_item_new_with_label(_("ws_me_bookmarks_open"));
388 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark =
389 gtk_menu_item_new_with_label(_("ws_me_bookmarks_close"));
390 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark =
391 gtk_menu_item_new_with_label(_("ws_me_bookmarks_add"));
392 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark =
393 gtk_menu_item_new_with_label(_("ws_me_bookmarks_remove"));
395 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
396 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark);
397 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
398 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark);
399 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
400 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark);
401 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
402 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark);
404 ws_gui_app->ws_gui_menu->ws_gui_menu_copy =
405 gtk_menu_item_new_with_label(_("ws_me_edit_copy"));
406 ws_gui_app->ws_gui_menu->ws_gui_menu_paste =
407 gtk_menu_item_new_with_label(_("ws_me_edit_paste"));
408 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all =
409 gtk_menu_item_new_with_label(_("ws_me_edit_select_all"));
410 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
411 ws_gui_app->ws_gui_menu->ws_gui_menu_copy);
412 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
413 ws_gui_app->ws_gui_menu->ws_gui_menu_paste);
414 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
415 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all);
417 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list =
418 gtk_check_menu_item_new_with_label(_("ws_me_view_hide_words_list"));
419 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in =
420 gtk_menu_item_new_with_label(_("ws_me_view_zoom_in"));
421 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out =
422 gtk_menu_item_new_with_label(_("ws_me_view_zoom_out"));
423 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen =
424 gtk_check_menu_item_new_with_label(_("ws_me_view_fullscreen"));
425 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
426 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list);
427 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
428 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in);
429 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
430 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out);
431 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
432 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen);
434 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word =
435 gtk_menu_item_new_with_label(_("ws_me_search_find"));
436 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next =
437 gtk_menu_item_new_with_label(_("ws_me_search_find_next"));
438 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev =
439 gtk_menu_item_new_with_label(_("ws_me_search_find_prev"));
440 ws_gui_app->ws_gui_menu->ws_gui_menu_stop =
441 gtk_menu_item_new_with_label(_("ws_me_search_stop"));
442 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
443 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word);
444 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
445 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next);
446 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
447 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev);
448 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
449 ws_gui_app->ws_gui_menu->ws_gui_menu_stop);
452 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
453 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries);
454 gtk_menu_item_set_submenu(GTK_MENU_ITEM
455 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
456 ws_gui_app->ws_gui_menu->ws_gui_submenu_0);
458 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
459 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks);
460 gtk_menu_item_set_submenu(GTK_MENU_ITEM
461 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
462 ws_gui_app->ws_gui_menu->ws_gui_submenu_4);
464 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
465 ws_gui_app->ws_gui_menu->ws_gui_separator1);
467 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
468 ws_gui_app->ws_gui_menu->ws_gui_menu_edit);
469 gtk_menu_item_set_submenu(GTK_MENU_ITEM
470 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
471 ws_gui_app->ws_gui_menu->ws_gui_submenu_1);
473 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
474 ws_gui_app->ws_gui_menu->ws_gui_menu_view);
475 gtk_menu_item_set_submenu(GTK_MENU_ITEM
476 (ws_gui_app->ws_gui_menu->ws_gui_menu_view),
477 ws_gui_app->ws_gui_menu->ws_gui_submenu_2);
479 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
480 ws_gui_app->ws_gui_menu->ws_gui_menu_search);
481 gtk_menu_item_set_submenu(GTK_MENU_ITEM
482 (ws_gui_app->ws_gui_menu->ws_gui_menu_search),
483 ws_gui_app->ws_gui_menu->ws_gui_submenu_3);
485 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
486 ws_gui_app->ws_gui_menu->ws_gui_separator);
487 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
488 ws_gui_app->ws_gui_menu->ws_gui_menu_about);
489 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
490 ws_gui_app->ws_gui_menu->ws_gui_menu_close);
492 g_signal_connect(G_OBJECT
493 (ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict),
495 G_CALLBACK(ws_gui_dictionary_loader),
497 g_signal_connect(G_OBJECT(
498 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
500 G_CALLBACK(ws_gui_dictionary_chooser),
502 g_signal_connect(G_OBJECT
503 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
505 G_CALLBACK(ws_gui_dictionary_remover),
507 g_signal_connect(G_OBJECT
508 (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
510 G_CALLBACK(ws_gui_dictionary_optimizer), ws_gui_app);
511 g_signal_connect(G_OBJECT
512 (ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark),
514 G_CALLBACK(ws_gui_dictionary_open_bookmark),
516 g_signal_connect(G_OBJECT
517 (ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark),
519 G_CALLBACK(ws_gui_dictionary_close_bookmark),
521 g_signal_connect(G_OBJECT
522 (ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark),
524 G_CALLBACK(ws_gui_dictionary_add_bookmark),
526 g_signal_connect(G_OBJECT
527 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark),
529 G_CALLBACK(ws_gui_dictionary_remove_bookmark),
531 g_signal_connect(G_OBJECT
532 (ws_gui_app->ws_gui_menu->ws_gui_menu_copy),
534 GTK_SIGNAL_FUNC(ws_gui_html_copy),
536 g_signal_connect(G_OBJECT
537 (ws_gui_app->ws_gui_menu->ws_gui_menu_paste),
539 GTK_SIGNAL_FUNC(ws_gui_html_paste),
541 g_signal_connect(G_OBJECT
542 (ws_gui_app->ws_gui_menu->ws_gui_menu_select_all),
544 GTK_SIGNAL_FUNC(ws_gui_html_select_all),
546 g_signal_connect(G_OBJECT
547 (ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list),
549 GTK_SIGNAL_FUNC(ws_gui_words_list_hide_from_menu),
551 g_signal_connect(G_OBJECT
552 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in),
554 G_CALLBACK(ws_gui_html_zoom_in),
556 g_signal_connect(G_OBJECT
557 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out),
559 G_CALLBACK(ws_gui_html_zoom_out),
561 g_signal_connect(G_OBJECT
562 (ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen),
564 GTK_SIGNAL_FUNC(ws_gui_full_screen),
566 g_signal_connect(G_OBJECT
567 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_word),
569 GTK_SIGNAL_FUNC(ws_gui_search),
571 g_signal_connect(G_OBJECT
572 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
574 GTK_SIGNAL_FUNC(ws_gui_history_next),
576 g_signal_connect(G_OBJECT
577 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
579 GTK_SIGNAL_FUNC(ws_gui_history_back),
581 g_signal_connect(G_OBJECT
582 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
584 GTK_SIGNAL_FUNC(ws_gui_search_stop),
586 g_signal_connect(G_OBJECT
587 (ws_gui_app->ws_gui_menu->ws_gui_menu_about),
589 G_CALLBACK(ws_gui_about_application),
591 g_signal_connect(G_OBJECT
592 (ws_gui_app->ws_gui_menu->ws_gui_menu_close),
594 G_CALLBACK(ws_gui_menu_quit),
597 g_signal_connect(G_OBJECT
598 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
600 GTK_SIGNAL_FUNC(ws_gui_check_clipboard),
603 g_signal_connect(G_OBJECT
604 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
606 GTK_SIGNAL_FUNC(ws_gui_dict_availablity),
609 g_signal_connect(G_OBJECT
610 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
612 GTK_SIGNAL_FUNC(ws_gui_set_bookmark_menu_items),
615 hildon_window_set_menu(HILDON_WINDOW(ws_gui_app->ws_gui_hildon_window),
617 ws_gui_app->ws_gui_menu->ws_gui_main_menu));
619 gtk_widget_set_sensitive(GTK_WIDGET
620 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
622 gtk_widget_set_sensitive(GTK_WIDGET
623 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
625 gtk_widget_set_sensitive(GTK_WIDGET
626 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
631 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_main_menu);
635 /** this function creates contex popup menu and its items and connect signals to
638 * @param user_data - set when the signal handler was connected
640 void ws_gui_create_popup_menu (gpointer user_data)
642 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
644 ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
645 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
646 ws_gui_app->ws_gui_menu->ws_gui_separator =
647 gtk_separator_menu_item_new();
649 ws_gui_app->ws_gui_menu->ws_gui_popup_search =
650 gtk_menu_item_new_with_label(_("ws_mp_search"));
651 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
652 ws_gui_app->ws_gui_menu->ws_gui_popup_search);
653 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
654 gtk_separator_menu_item_new());
655 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark =
656 gtk_menu_item_new_with_label(_("ws_mp_add_bookmark"));
657 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
658 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark);
660 ws_gui_app->ws_gui_menu->ws_gui_popup_copy =
661 gtk_menu_item_new_with_label(_("ws_mp_edit_copy"));
662 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
663 ws_gui_app->ws_gui_menu->ws_gui_popup_copy);
665 ws_gui_app->ws_gui_menu->ws_gui_popup_paste =
666 gtk_menu_item_new_with_label(_("ws_mp_edit_paste"));
667 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
668 ws_gui_app->ws_gui_menu->ws_gui_popup_paste);
670 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all =
671 gtk_menu_item_new_with_label(_("ws_mp_edit_select_all"));
672 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
673 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all);
675 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
677 ws_gui_app->ws_gui_menu->ws_gui_popup_edit =
678 gtk_menu_item_new_with_label (_("ws_mp_edit"));
679 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
680 ws_gui_app->ws_gui_menu->ws_gui_popup_edit);
682 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
683 ws_gui_app->ws_gui_menu->ws_gui_separator);
685 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in =
686 gtk_menu_item_new_with_label (_("ws_mp_zoom_in"));
687 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
688 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in);
690 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out =
691 gtk_menu_item_new_with_label (_("ws_mp_zoom_out"));
692 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
693 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out);
695 gtk_menu_item_set_submenu(GTK_MENU_ITEM
696 (ws_gui_app->ws_gui_menu->ws_gui_popup_edit),
697 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
699 struct _GtkHTML *tmp = (struct _GtkHTML *)(ws_gui_app->ws_gui_html);
701 if (html_engine_is_selection_active(tmp->engine) == TRUE)
703 gtk_widget_set_sensitive(GTK_WIDGET
704 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
706 gtk_widget_set_sensitive(GTK_WIDGET
707 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
712 gtk_widget_set_sensitive(GTK_WIDGET
713 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
715 gtk_widget_set_sensitive(GTK_WIDGET
716 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
720 if (ws_gui_app->html_flag == FALSE)
722 gtk_widget_set_sensitive(GTK_WIDGET
723 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
728 gtk_widget_set_sensitive(GTK_WIDGET
729 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
733 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_menu);
736 g_signal_connect(G_OBJECT
737 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
739 G_CALLBACK(ws_gui_popup_search),
742 g_signal_connect(G_OBJECT
743 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
745 G_CALLBACK(ws_gui_dictionary_add_bookmark),
748 g_signal_connect(G_OBJECT
749 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
751 G_CALLBACK(ws_gui_html_copy),
753 g_signal_connect(G_OBJECT
754 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
756 G_CALLBACK(ws_gui_html_paste),
758 g_signal_connect(G_OBJECT
759 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
761 G_CALLBACK(ws_gui_html_select_all),
763 g_signal_connect(G_OBJECT
764 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in),
766 G_CALLBACK(ws_gui_html_zoom_in), ws_gui_app);
767 g_signal_connect(G_OBJECT
768 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out),
770 G_CALLBACK(ws_gui_html_zoom_out),
773 if (gtk_clipboard_wait_for_text(ws_gui_app->ws_gui_clipboard) != NULL)
775 gtk_widget_set_sensitive(GTK_WIDGET
776 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
781 gtk_widget_set_sensitive(GTK_WIDGET
782 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
787 if (ws_gui_app->bookmark_avail == FALSE)
789 gtk_widget_set_sensitive(GTK_WIDGET
790 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
796 if (ws_gui_app->bookmark_mode == TRUE)
798 gtk_widget_set_sensitive(GTK_WIDGET
799 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
804 g_strstrip(ws_gui_app->last_word);
805 //g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nlast_word: %s\n\n", ws_gui_app->last_word);
807 if (ws_gui_app->last_word == NULL ||
808 (ws_gui_app->last_word[0] == '\0'))
810 gtk_widget_set_sensitive(GTK_WIDGET
811 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
816 gtk_widget_set_sensitive(GTK_WIDGET
817 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
822 gtk_menu_popup(GTK_MENU(ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
831 /** this function creates dialog popup window and allows to select dictionaries
832 * which user wants to use
834 * @param menuitem - the object which received the signal
835 * @param user_data - set when the signal handler was connected
837 void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
839 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
841 GtkWidget *dialog_vbox1;
842 GtkWidget *scrolledwindow1;
843 GtkWidget *viewport1;
846 GtkWidget *checkbutton;
847 GtkWidget *cancel_button;
848 GtkWidget *ok_button;
855 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
857 if (gconf_client_dir_exists(ws_gui_app->client,
858 GCONF_PATH, NULL) == TRUE)
860 ws_gui_app->directories =
861 gconf_client_all_dirs(ws_gui_app->client,
867 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
868 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
871 dialog1 = gtk_dialog_new ();
872 gtk_window_set_title (GTK_WINDOW (dialog1),
873 (_("ws_ti_choose_dictionaries_title")));
874 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
875 GDK_WINDOW_TYPE_HINT_DIALOG);
876 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
878 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
879 gtk_widget_show (dialog_vbox1);
881 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
882 gtk_widget_show (scrolledwindow1);
883 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
889 viewport1 = gtk_viewport_new (NULL, NULL);
890 gtk_widget_show (viewport1);
891 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
893 vbox1 = gtk_vbox_new (FALSE, 0);
894 gtk_widget_show (vbox1);
895 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
897 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
899 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
900 name = g_path_get_basename(string);
901 checkbutton = gtk_check_button_new_with_label(name);
902 path = g_strconcat(string, "/active", NULL);
904 if (gconf_client_get_bool(ws_gui_app->client,
908 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
914 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
919 g_array_append_val(checkboxes, checkbutton);
920 gtk_box_pack_start (GTK_BOX (vbox1),
926 if (strcmp(name, "bookmarks") == 0)
928 if (ws_gui_app->bookmark_avail == FALSE)
930 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton),
935 gtk_widget_show (checkbutton);
938 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
939 gtk_widget_show (cancel_button);
940 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
942 GTK_RESPONSE_CANCEL);
944 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
945 gtk_widget_show (ok_button);
946 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
950 i = gtk_dialog_run(GTK_DIALOG(dialog1));
952 if (i == GTK_RESPONSE_OK)
954 for(i=0;i<(checkboxes->len);i++)
956 if (gtk_toggle_button_get_active(
957 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
958 GtkWidget *, i))) == TRUE)
960 name = gtk_button_get_label(GTK_BUTTON(
961 g_array_index(checkboxes, GtkWidget *, i)));
963 path=g_strconcat(GCONF_PATH,
968 gconf_client_set_bool(ws_gui_app->client,
974 if (gtk_toggle_button_get_active(
975 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
976 GtkWidget *, i))) == FALSE)
978 name = gtk_button_get_label(GTK_BUTTON(
979 g_array_index(checkboxes, GtkWidget *, i)));
981 path=g_strconcat(GCONF_PATH,
986 gconf_client_set_bool(ws_gui_app->client,
993 ws_dbus_notify(ws_gui_app->dbus_data,
994 WS_DBUS_INFO_CONFIG_CHANGED);
996 if(ws_gui_app->ws_gui_history->len >= 0)
998 ws_gui_clear_array(ws_gui_app->ws_gui_history);
999 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1000 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1001 ws_gui_app->ws_gui_history_cur_pos = -1;
1003 ws_gui_check_history(ws_gui_app);
1005 gtk_widget_destroy (dialog1);
1007 else if (i == GTK_RESPONSE_CANCEL)
1009 gtk_widget_destroy (dialog1);
1012 g_slist_free(ws_gui_app->directories);
1015 /** this function creates dialog popup window and allows optimize dictionaries
1017 * @param menuitem - the object which received the signal
1018 * @param user_data - set when the signal handler was connected
1020 void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
1022 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1025 GtkWidget *dialog_vbox1;
1026 GtkWidget *scrolledwindow1;
1027 GtkWidget *viewport1;
1030 GtkWidget *checkbutton;
1031 GtkWidget *cancel_button;
1032 GtkWidget *ok_button;
1039 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
1041 if (gconf_client_dir_exists(ws_gui_app->client,
1045 ws_gui_app->directories =
1046 gconf_client_all_dirs(ws_gui_app->client, GCONF_PATH, NULL);
1050 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
1051 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
1054 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
1056 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
1057 name = g_path_get_basename(string);
1059 path = g_strconcat(string, "/optimized", NULL);
1060 if (gconf_client_get_bool (ws_gui_app->client,
1064 checkbutton = gtk_check_button_new_with_label(name);
1065 g_array_append_val(checkboxes, checkbutton);
1068 if (checkboxes->len <= 0)
1070 ws_gui_app->ws_message_dialog = gtk_message_dialog_new(
1071 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1072 GTK_DIALOG_DESTROY_WITH_PARENT,
1075 _("ws_ni_no_dictionaries_to_optimize"));
1076 gtk_widget_show_all(ws_gui_app->ws_message_dialog);
1077 if (gtk_dialog_run (GTK_DIALOG (
1078 ws_gui_app->ws_message_dialog)) == GTK_RESPONSE_OK)
1080 gtk_widget_destroy(ws_gui_app->ws_message_dialog);
1085 dialog1 = gtk_dialog_new ();
1086 gtk_window_set_title(GTK_WINDOW (dialog1),
1087 (_("ws_ti_choose_dictionaries_title")));
1088 gtk_window_set_type_hint(GTK_WINDOW (dialog1),
1089 GDK_WINDOW_TYPE_HINT_DIALOG);
1090 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1092 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1093 gtk_widget_show (dialog_vbox1);
1095 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
1096 gtk_widget_show (scrolledwindow1);
1097 gtk_box_pack_start(GTK_BOX (dialog_vbox1),
1103 viewport1 = gtk_viewport_new (NULL, NULL);
1104 gtk_widget_show (viewport1);
1105 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
1107 vbox1 = gtk_vbox_new (FALSE, 0);
1108 gtk_widget_show (vbox1);
1109 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
1110 for (i=0; i<checkboxes->len; i++)
1112 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
1113 g_array_index(checkboxes, GtkWidget*, i)),
1115 gtk_box_pack_start(GTK_BOX (vbox1),
1116 g_array_index(checkboxes, GtkWidget*, i),
1120 gtk_widget_show(g_array_index(checkboxes,
1124 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
1125 gtk_widget_show (cancel_button);
1126 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1128 GTK_RESPONSE_CANCEL);
1129 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
1130 gtk_widget_show (ok_button);
1131 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1134 i = gtk_dialog_run(GTK_DIALOG(dialog1));
1135 if (i == GTK_RESPONSE_OK)
1137 for(i=0;i<(checkboxes->len);i++)
1139 if (gtk_toggle_button_get_active(
1141 g_array_index(checkboxes,
1142 GtkWidget *, i))) == TRUE)
1144 name = gtk_button_get_label(GTK_BUTTON(
1145 g_array_index(checkboxes,
1148 path=g_strconcat(GCONF_PATH,
1153 gconf_client_set_bool(
1159 if (gtk_toggle_button_get_active(
1161 g_array_index(checkboxes,
1162 GtkWidget *, i))) == FALSE)
1164 name = gtk_button_get_label(GTK_BUTTON
1165 (g_array_index(checkboxes,
1168 path=g_strconcat(GCONF_PATH,
1173 gconf_client_set_bool(
1180 ws_dbus_notify(ws_gui_app->dbus_data,
1181 WS_DBUS_INFO_CONFIG_CHANGED);
1182 gtk_widget_destroy (dialog1);
1184 else if (i == GTK_RESPONSE_CANCEL)
1186 gtk_widget_destroy (dialog1);
1189 g_slist_free(ws_gui_app->directories);
1192 /** this function creates dialog popup window which allows to load a new
1193 *dictionary file into application
1195 * @param menuitem - the object which received the signal
1196 * @param user_data - set when the signal handler was connected
1198 void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
1200 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1203 // GtkWidget *dialog2;
1205 dialog = hildon_file_chooser_dialog_new(
1206 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1207 GTK_FILE_CHOOSER_ACTION_OPEN);
1209 gtk_window_set_default_size(GTK_WINDOW (dialog), 200, 200);
1210 gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), FALSE);
1212 //gtk_widget_show(GTK_WIDGET(dialog));
1214 if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
1224 filename = gtk_file_chooser_get_filename(
1225 GTK_FILE_CHOOSER (dialog));
1226 name = g_path_get_basename(filename);
1227 len = strlen(filename) - strlen(name) -1;
1228 tmp = g_strndup (filename, len);
1231 tmp = g_path_get_basename(tmp);
1233 if (g_str_has_suffix(name, ".xdxf")
1234 || g_str_has_suffix(name, ".idx")
1235 || g_str_has_suffix(name, ".ifo")
1236 || g_str_has_suffix(name, ".idx.gz")
1237 || g_str_has_suffix(name, ".dict")
1238 || g_str_has_suffix(name, ".dict.dz"))
1240 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n:::GUUUUIII GUIII::: check");
1241 if (ws_gui_load_dict(filename, ws_gui_app) == TRUE)
1243 gtk_widget_destroy(dialog);
1244 gtk_infoprint(GTK_WINDOW(
1245 ws_gui_app->ws_gui_hildon_window),
1246 _("ws_ni_dictionary_added"));
1249 else if (g_str_has_suffix(name, ".bz2"))
1251 gtk_widget_destroy(dialog);
1252 ws_dbus_client_extract_dictionary(ws_gui_app->dbus_data, filename);
1256 gtk_widget_destroy (dialog);
1257 gtk_infoprint(GTK_WINDOW(
1258 ws_gui_app->ws_gui_hildon_window),
1259 _("ws_ni_dictionary_wrong_file"));
1265 gtk_widget_destroy (dialog);
1270 /** this function creates dialog popup window which allows to load dictionary
1272 * @param filename - the object which received the signal
1273 * @param user_data - set when the signal handler was connected
1275 gboolean ws_gui_load_dict(gchar *filename, gpointer user_data)
1277 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1281 gchar *name = g_path_get_basename(filename);
1286 len = strlen(filename) - strlen(name) -1;
1287 gchar *tmp = g_strndup (filename, len);;
1288 tmp = g_path_get_basename(tmp);
1291 filepath = g_strndup (filename, len);
1292 path = g_strconcat(GCONF_PATH, "/", tmp, "/path", NULL);
1293 gconf_client_set_string(ws_gui_app->client,
1299 path = g_strconcat(GCONF_PATH,
1305 dialog1 = gtk_message_dialog_new(GTK_WINDOW(
1306 ws_gui_app->ws_gui_hildon_window),
1307 GTK_DIALOG_DESTROY_WITH_PARENT,
1308 GTK_MESSAGE_QUESTION,
1310 _("ws_ni_dictionaries_activation_question"));
1312 gtk_widget_show_all(GTK_WIDGET(dialog1));
1314 if (gtk_dialog_run (GTK_DIALOG (dialog1)) == GTK_RESPONSE_YES)
1316 gconf_client_set_bool(ws_gui_app->client,
1323 gconf_client_set_bool(ws_gui_app->client,
1328 gtk_widget_destroy (dialog1);
1332 path = g_strconcat(GCONF_PATH, "/", tmp, "/optimized", NULL);
1334 dialog2 = gtk_message_dialog_new(
1335 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1336 GTK_DIALOG_DESTROY_WITH_PARENT,
1337 GTK_MESSAGE_QUESTION,
1339 _("ws_ni_dictionaries_optimalization_question"));
1341 gtk_widget_show_all(GTK_WIDGET(dialog2));
1343 if (gtk_dialog_run (GTK_DIALOG (dialog2)) == GTK_RESPONSE_YES)
1345 gconf_client_set_bool(ws_gui_app->client,
1352 gconf_client_set_bool(ws_gui_app->client,
1357 gtk_widget_destroy (dialog2);
1359 if(ws_gui_app->ws_gui_history->len > 0)
1361 ws_gui_clear_array(ws_gui_app->ws_gui_history);
1362 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1363 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1364 ws_gui_app->ws_gui_history_cur_pos = -1;
1366 ws_gui_check_history(ws_gui_app);
1368 ws_dbus_notify(ws_gui_app->dbus_data,
1369 WS_DBUS_INFO_CONFIG_CHANGED);
1374 /** this function creates dialog popup window which allows to remove dictionary
1375 * which is no longer used
1377 * @param menuitem - the object which received the signal
1378 * @param user_data - set when the signal handler was connected
1380 void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
1382 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1385 GtkWidget *dialog_vbox1;
1386 GtkWidget *scrolledwindow1;
1387 GtkWidget *viewport1;
1389 GtkWidget *checkbutton;
1390 GtkWidget *cancel_button;
1391 GtkWidget *ok_button;
1398 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
1400 if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL)
1403 ws_gui_app->directories = gconf_client_all_dirs(
1410 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
1411 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
1414 dialog1 = gtk_dialog_new ();
1415 gtk_window_set_title (GTK_WINDOW (dialog1),
1416 (_("ws_ti_remove_dictionaries_title")));
1417 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
1418 GDK_WINDOW_TYPE_HINT_DIALOG);
1419 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1421 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1422 gtk_widget_show (dialog_vbox1);
1424 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
1425 gtk_widget_show (scrolledwindow1);
1426 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
1432 viewport1 = gtk_viewport_new (NULL, NULL);
1433 gtk_widget_show (viewport1);
1434 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
1436 vbox1 = gtk_vbox_new (FALSE, 0);
1437 gtk_widget_show (vbox1);
1438 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
1440 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
1442 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
1443 name = g_path_get_basename(string);
1444 checkbutton = gtk_check_button_new_with_label(name);
1446 g_array_append_val(checkboxes, checkbutton);
1447 gtk_box_pack_start (GTK_BOX (vbox1),
1453 if (strcmp(name, "bookmarks") == 0)
1455 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton), FALSE);
1457 gtk_widget_show (checkbutton);
1460 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
1461 gtk_widget_show (cancel_button);
1462 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1464 GTK_RESPONSE_CANCEL);
1466 ok_button = gtk_button_new_from_stock
1467 (_("ws_bd_remove_dictionaries_remove_selected"));
1468 gtk_widget_show (ok_button);
1469 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1473 i = gtk_dialog_run(GTK_DIALOG(dialog1));
1475 if (i == GTK_RESPONSE_OK)
1477 for(i=0;i<(checkboxes->len);i++)
1479 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
1480 g_array_index(checkboxes, GtkWidget *, i))) == TRUE)
1483 name = gtk_button_get_label(GTK_BUTTON(
1484 g_array_index(checkboxes, GtkWidget *, i)));
1485 path=g_strconcat(GCONF_PATH, "/", name, NULL);
1486 gconf_client_recursive_unset(ws_gui_app->client,
1488 GCONF_UNSET_INCLUDING_SCHEMA_NAMES,
1493 if(ws_gui_app->ws_gui_history->len >= 0)
1495 ws_gui_clear_array(ws_gui_app->ws_gui_history);
1496 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1497 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1498 ws_gui_app->ws_gui_history_cur_pos = -1;
1500 ws_gui_check_history(ws_gui_app);
1502 ws_dbus_notify(ws_gui_app->dbus_data,
1503 WS_DBUS_INFO_CONFIG_CHANGED);
1504 gtk_infoprint(GTK_WINDOW(
1505 ws_gui_app->ws_gui_hildon_window),
1506 _("ws_ib_dictionary_removed"));
1507 gtk_widget_destroy (dialog1);
1509 else if (i == GTK_RESPONSE_CANCEL)
1511 gtk_widget_destroy (dialog1);
1514 g_slist_free(ws_gui_app->directories);
1517 /** this function creates dialog popup window which displays information about
1518 * application (about window)
1520 * @param menuitem - the object which received the signal
1521 * @param user_data - set when the signal handler was connected
1523 void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data)
1525 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1527 gtk_widget_set_sensitive(GTK_WIDGET
1528 (ws_gui_app->ws_gui_hildon_find_toolbar),
1531 GtkWidget *about_dialog;
1532 GtkWidget *dialog_vbox1;
1538 GtkWidget *scrolledwindow;
1539 GtkWidget *textview;
1542 const gchar *ws_version;
1544 about_dialog = gtk_dialog_new ();
1545 gtk_window_set_title (GTK_WINDOW (about_dialog),
1546 _("ws_ti_about_title"));
1547 gtk_window_set_default_size(GTK_WINDOW (about_dialog), 350, 200);
1549 dialog_vbox1 = GTK_DIALOG (about_dialog)->vbox;
1550 gtk_widget_show (dialog_vbox1);
1552 vbox1 = gtk_vbox_new (FALSE, 0);
1553 gtk_widget_show (vbox1);
1554 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0);
1556 image = gtk_image_new_from_file ("/usr/share/pixmaps/whitestork.png");
1557 gtk_box_pack_start (GTK_BOX (vbox1), image, TRUE, TRUE, 0);
1559 label2 = gtk_label_new ("WhiteStork");
1560 ws_gui_app->p = pango_font_description_from_string("Tahoma 18");
1561 gtk_widget_modify_font(GTK_WIDGET(label2), ws_gui_app->p);
1562 gtk_label_set_pattern (GTK_LABEL(label2), "__________");
1563 gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 5);
1565 ws_version = g_strconcat("Maemo Multilingual Dictionary\nver. ",
1568 label3 = gtk_label_new_with_mnemonic (_(ws_version));
1569 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1570 gtk_widget_modify_font(GTK_WIDGET(label3), ws_gui_app->p);
1571 gtk_box_pack_start (GTK_BOX (vbox1), label3, FALSE, FALSE, 5);
1572 gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_CENTER);
1574 label4 = gtk_label_new ("Copyright 2006, ComArch S.A\nAll rights "
1576 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1577 gtk_widget_modify_font(GTK_WIDGET(label4), ws_gui_app->p);
1578 gtk_box_pack_start (GTK_BOX (vbox1), label4, FALSE, FALSE, 5);
1579 gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_CENTER);
1581 scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1582 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW
1584 GTK_SHADOW_ETCHED_OUT);
1585 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
1587 GTK_POLICY_AUTOMATIC,
1588 GTK_POLICY_AUTOMATIC);
1589 gtk_box_pack_start (GTK_BOX (vbox1),
1595 textview = gtk_text_view_new ();
1596 ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
1597 gtk_widget_modify_font(GTK_WIDGET(textview), ws_gui_app->p);
1598 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE);
1599 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 10);
1600 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 10);
1601 gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
1602 gtk_text_buffer_set_text(
1603 gtk_text_view_get_buffer(GTK_TEXT_VIEW (textview)),
1604 "The following third party\ncomponents may be\nincluded"
1605 " depending \non your system configuration:\n\nD-BUS "
1606 "- License information:\nhttp://opensource.org/"
1607 "licenses/academic.php",
1610 button1 = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
1611 gtk_dialog_add_action_widget(GTK_DIALOG(about_dialog),
1613 GTK_RESPONSE_CLOSE);
1615 gtk_widget_show_all (GTK_WIDGET(about_dialog));
1617 if (gtk_dialog_run(GTK_DIALOG(about_dialog)) == GTK_RESPONSE_CLOSE)
1619 gtk_widget_destroy(GTK_WIDGET(about_dialog));
1622 gtk_widget_set_sensitive(
1623 GTK_WIDGET(ws_gui_app->ws_gui_hildon_find_toolbar),
1627 void ws_gui_add_bookmark_dialog(gpointer user_data)
1630 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1633 GtkWidget *dialog_vbox1;
1638 GtkWidget *cancelbutton1;
1639 GtkWidget *okbutton1;
1641 const gchar *book_word;
1643 dialog1 = gtk_dialog_new ();
1644 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_add_bookmark"));
1645 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1647 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1648 gtk_widget_show (dialog_vbox1);
1650 vbox1 = gtk_vbox_new (FALSE, 0);
1651 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1653 hbox1 = gtk_hbox_new (FALSE, 0);
1654 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1656 label = gtk_label_new(_("ws_ti_bookmarks_add_question"));
1657 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1659 entry1 = gtk_entry_new ();
1660 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1661 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1662 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1663 gtk_entry_set_editable(GTK_ENTRY(entry1), TRUE);
1665 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1666 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1670 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1671 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1673 GTK_RESPONSE_CANCEL);
1675 gtk_widget_show_all (dialog1);
1677 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1679 book_word = gtk_entry_get_text(GTK_ENTRY(entry1));
1680 ws_dbus_client_add_bookmark(ws_gui_app->dbus_data,
1682 ws_gui_app->raw_translation->str);
1683 gtk_widget_destroy(GTK_WIDGET(dialog1));
1688 gtk_widget_destroy(GTK_WIDGET(dialog1));
1692 void ws_gui_remove_bookmark_dialog(gpointer user_data)
1694 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1697 GtkWidget *dialog_vbox1;
1702 GtkWidget *cancelbutton1;
1703 GtkWidget *okbutton1;
1705 dialog1 = gtk_dialog_new ();
1706 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_remove_bookmark"));
1707 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1709 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1710 gtk_widget_show (dialog_vbox1);
1712 vbox1 = gtk_vbox_new (FALSE, 0);
1713 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1715 hbox1 = gtk_hbox_new (FALSE, 0);
1716 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1718 label = gtk_label_new(_("ws_ni_remove_bookmark_question"));
1719 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1721 entry1 = gtk_entry_new ();
1722 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1723 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1724 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1725 gtk_entry_set_editable(GTK_ENTRY(entry1), FALSE);
1727 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1728 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1732 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1733 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1735 GTK_RESPONSE_CANCEL);
1737 gtk_widget_show_all (dialog1);
1739 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1741 gtk_widget_destroy(GTK_WIDGET(dialog1));
1744 ws_dbus_client_remove_bookmark(ws_gui_app->dbus_data,
1745 ws_gui_app->last_word);
1747 ws_gui_fill_html(" ", ws_gui_app);
1749 g_object_get(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
1754 if (strlen(tmp) != 0)
1756 ws_dbus_client_find_word (ws_gui_app->dbus_data, tmp);
1760 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "strlen(tmp)=0");
1761 gtk_list_store_clear(
1762 ws_gui_app->ws_gui_w_list->ws_gui_store);
1767 gtk_widget_destroy(GTK_WIDGET(dialog1));
1771 void ws_gui_list_full_dialog(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
1773 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1775 ws_gui_app->ws_message_dialog = gtk_message_dialog_new(
1776 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1777 GTK_DIALOG_DESTROY_WITH_PARENT,
1780 _("ws_ni_words_list_full"));
1783 GTK_DIALOG(ws_gui_app->ws_message_dialog))
1787 ws_gui_app->ws_message_dialog);