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;
59 ws_gui_app->first_run = TRUE; //if dictionary is just run
60 ws_gui_app->no_words_found = TRUE;
62 ws_gui_app->zoom = ZOOM_DEFAULT;
64 ws_gui_app->timer = g_timer_new();
65 g_timer_stop(ws_gui_app->timer);
67 ws_gui_app->ws_gui_history = g_array_new(TRUE, TRUE, sizeof(gchar*));
68 ws_gui_app->ws_gui_history_list = g_array_new(TRUE, TRUE, sizeof(gchar*));
69 ws_gui_app->ws_gui_history_iter = g_array_new(TRUE, TRUE, sizeof(gchar*));
70 ws_gui_app->history_flag = FALSE;
71 ws_gui_app->ws_gui_history_cur_pos = -1;
73 ws_gui_app->ws_gui_hildon_program =
74 HILDON_PROGRAM(hildon_program_get_instance());
76 g_set_application_name("WhiteStork");
78 ws_gui_app->ws_gui_hildon_window = HILDON_WINDOW(hildon_window_new());
80 hildon_program_add_window(ws_gui_app->ws_gui_hildon_program,
81 ws_gui_app->ws_gui_hildon_window);
83 ws_gui_create_main_menu(ws_gui_app);
84 ws_gui_create_find_toolbar(ws_gui_app);
86 ws_gui_app->ws_gui_hpane = gtk_hpaned_new();
88 ws_gui_app->ws_gui_scrolledwindow_left =
89 gtk_scrolled_window_new (NULL, NULL);
91 gtk_scrolled_window_set_policy(
92 GTK_SCROLLED_WINDOW (ws_gui_app->ws_gui_scrolledwindow_left),
94 GTK_POLICY_AUTOMATIC);
96 gtk_paned_set_position(GTK_PANED(ws_gui_app->ws_gui_hpane), 100);
98 gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW
99 (ws_gui_app->ws_gui_scrolledwindow_left),
100 GTK_CORNER_TOP_LEFT);
102 ws_gui_app->ws_gui_scrolledwindow_right =
103 gtk_scrolled_window_new (NULL, NULL);
105 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
106 (ws_gui_app->ws_gui_scrolledwindow_right),
108 GTK_POLICY_AUTOMATIC);
110 ws_gui_app->ws_gui_w_list->ws_gui_store =
111 gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
113 ws_gui_app->ws_gui_w_list->ws_gui_view =
114 create_view_and_model(array_tmp, ws_gui_app);
116 g_array_free(array_tmp, TRUE);
118 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
120 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
121 (ws_gui_app->ws_gui_scrolledwindow_left),
122 ws_gui_app->ws_gui_w_list->ws_gui_view);
124 ws_gui_app->ws_gui_html = gtk_html_new();
126 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
127 gtk_widget_modify_font(GTK_WIDGET(
128 ws_gui_app->ws_gui_html),ws_gui_app->p);
130 g_signal_connect(GTK_OBJECT (ws_gui_app->ws_gui_html),
132 G_CALLBACK(ws_gui_url_requested),
135 gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
136 ws_gui_app->welcome_note,
139 gtk_html_set_magnification(GTK_HTML(ws_gui_app->ws_gui_html),
142 gtk_html_set_editable(GTK_HTML(ws_gui_app->ws_gui_html), FALSE);
143 gtk_html_allow_selection(GTK_HTML(ws_gui_app->ws_gui_html), TRUE);
145 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
146 (ws_gui_app->ws_gui_scrolledwindow_right),
147 ws_gui_app->ws_gui_html);
149 /*adding vbox & label - used for notifications */
151 ws_gui_app->ws_gui_list_image = gtk_image_new_from_file("/usr/share/pixmaps/ws_warning_icon.png");
152 ws_gui_app->ws_gui_list_eventbox = gtk_event_box_new ();
153 ws_gui_app->ws_gui_list_vbox = gtk_vbox_new(FALSE, 0);
154 ws_gui_app->ws_gui_list_hbox = gtk_hbox_new(FALSE, 5);
155 ws_gui_app->ws_gui_list_label = gtk_label_new(_("ws_ti_list_full"));
157 ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
158 gtk_widget_modify_font(GTK_WIDGET(ws_gui_app->ws_gui_list_label), ws_gui_app->p);
160 /*HBox packing ....*/
161 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_hbox),
162 ws_gui_app->ws_gui_list_image,
167 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_hbox),
168 ws_gui_app->ws_gui_list_label,
173 // gtk_widget_set_size_request (ws_gui_app->ws_gui_list_label, 150, -1);
175 /*VBox packing ....*/
176 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_vbox),
177 ws_gui_app->ws_gui_scrolledwindow_left,
182 gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_vbox),
183 ws_gui_app->ws_gui_list_eventbox,
188 gtk_container_add (GTK_CONTAINER (ws_gui_app->ws_gui_list_eventbox),
189 ws_gui_app->ws_gui_list_hbox);
190 /************************************************/
193 gtk_paned_pack1(GTK_PANED(ws_gui_app->ws_gui_hpane),
194 ws_gui_app->ws_gui_list_vbox,
197 gtk_paned_pack2(GTK_PANED(ws_gui_app->ws_gui_hpane),
198 ws_gui_app->ws_gui_scrolledwindow_right,
202 gtk_container_add(GTK_CONTAINER(ws_gui_app->ws_gui_hildon_window),
203 ws_gui_app->ws_gui_hpane);
205 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_hildon_window));
207 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_list_hbox));
209 ws_gui_app->ws_gui_w_list->ws_gui_selection =
210 gtk_tree_view_get_selection (GTK_TREE_VIEW
211 (ws_gui_app->ws_gui_w_list->ws_gui_view));
213 gtk_tree_selection_set_mode(
214 ws_gui_app->ws_gui_w_list->ws_gui_selection,
215 GTK_SELECTION_BROWSE);
217 ws_gui_app->directories = g_slist_alloc();
218 ws_gui_set_bookmarks_sensitivity(ws_gui_app);
220 ws_gui_app->ws_gui_banner_list_searching = hildon_banner_show_animation(
221 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
223 _("ws_ab_searching"));
225 ws_gui_app->ws_gui_banner_translation_loading = hildon_banner_show_animation(
226 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
230 gtk_widget_set_sensitive(GTK_WIDGET
231 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
234 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_list_searching));
235 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_translation_loading));
238 /** this function creates a find toolbar and connects signals to the tollbars
241 * @param user_data - set when the signal handler was connected
243 void ws_gui_create_find_toolbar(gpointer user_data)
245 WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;
248 ws_gui_app->ws_gui_hildon_find_toolbar =
249 HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("ws_me_search_find")));
251 ws_gui_app->ws_gui_toobar_button_hide =
252 gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
253 ws_gui_app->ws_gui_toobar_button_back =
254 gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
255 ws_gui_app->ws_gui_toobar_button_forward =
256 gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
257 ws_gui_app->ws_gui_toobar_button_stop =
258 gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
259 space = gtk_separator_tool_item_new();
261 ws_gui_app->ws_gui_toobar_button_close =
262 gtk_toolbar_get_nth_item(GTK_TOOLBAR(
263 ws_gui_app->ws_gui_hildon_find_toolbar),
266 ws_gui_app->ws_gui_toobar_button_start = gtk_toolbar_get_nth_item(GTK_TOOLBAR(
267 ws_gui_app->ws_gui_hildon_find_toolbar),
270 gtk_tool_item_set_visible_horizontal(
271 ws_gui_app->ws_gui_toobar_button_close,
274 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
275 ws_gui_app->ws_gui_toobar_button_hide,
277 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
278 ws_gui_app->ws_gui_toobar_button_back,
280 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
281 ws_gui_app->ws_gui_toobar_button_forward,
283 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
286 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
287 ws_gui_app->ws_gui_toobar_button_stop,
290 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
292 G_CALLBACK(ws_gui_search),
295 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_hide),
297 G_CALLBACK(ws_gui_words_list_hide),
300 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_back),
302 G_CALLBACK(ws_gui_history_back),
305 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_forward),
307 G_CALLBACK(ws_gui_history_next),
309 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_stop),
311 G_CALLBACK(ws_gui_search_stop),
314 gtk_widget_set_sensitive(
315 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
317 gtk_widget_set_sensitive(
318 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
320 gtk_widget_set_sensitive(
321 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop),
324 hildon_find_toolbar_highlight_entry((HildonFindToolbar*)(ws_gui_app->ws_gui_hildon_find_toolbar),
326 //gtk_toolbar_set_tooltips(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar), TRUE);
328 hildon_window_add_toolbar(ws_gui_app->ws_gui_hildon_window,
329 GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar));
332 /** this function creates application menu and its items and connect signals to
335 * @param user_data - set when the signal handler was connected
337 void ws_gui_create_main_menu (gpointer user_data)
339 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
341 ws_gui_app->ws_gui_menu->ws_gui_submenu_0 = gtk_menu_new();
342 ws_gui_app->ws_gui_menu->ws_gui_submenu_1 = gtk_menu_new();
343 ws_gui_app->ws_gui_menu->ws_gui_submenu_2 = gtk_menu_new();
344 ws_gui_app->ws_gui_menu->ws_gui_submenu_3 = gtk_menu_new();
345 ws_gui_app->ws_gui_menu->ws_gui_submenu_4 = gtk_menu_new();
346 ws_gui_app->ws_gui_menu->ws_gui_main_menu = gtk_menu_new();
348 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries =
349 gtk_menu_item_new_with_label(_("ws_me_dictionaries"));
350 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks =
351 gtk_menu_item_new_with_label(_("ws_me_bookmarks"));
352 ws_gui_app->ws_gui_menu->ws_gui_menu_edit =
353 gtk_menu_item_new_with_label(_("ws_me_edit"));
354 ws_gui_app->ws_gui_menu->ws_gui_menu_view =
355 gtk_menu_item_new_with_label(_("ws_me_view"));
356 ws_gui_app->ws_gui_menu->ws_gui_menu_search =
357 gtk_menu_item_new_with_label(_("ws_me_search"));
358 ws_gui_app->ws_gui_menu->ws_gui_menu_about =
359 gtk_menu_item_new_with_label(_("ws_me_about"));
360 ws_gui_app->ws_gui_menu->ws_gui_menu_close =
361 gtk_menu_item_new_with_label(_("ws_me_close"));
362 ws_gui_app->ws_gui_menu->ws_gui_separator =
363 gtk_separator_menu_item_new();
364 ws_gui_app->ws_gui_menu->ws_gui_separator1 =
365 gtk_separator_menu_item_new();
367 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict =
368 gtk_menu_item_new_with_label(_("ws_me_dictionaries_load"));
369 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict =
370 gtk_menu_item_new_with_label(_("ws_me_dictionaries_select"));
371 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict =
372 gtk_menu_item_new_with_label(_("ws_me_dictionaries_remove"));
373 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict =
374 gtk_menu_item_new_with_label(_("ws_me_dictionaries_optimize"));
376 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
377 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict);
378 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
379 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict);
380 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
381 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict);
382 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
383 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict);
385 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark =
386 gtk_menu_item_new_with_label(_("ws_me_bookmarks_open"));
387 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark =
388 gtk_menu_item_new_with_label(_("ws_me_bookmarks_close"));
389 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark =
390 gtk_menu_item_new_with_label(_("ws_me_bookmarks_add"));
391 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark =
392 gtk_menu_item_new_with_label(_("ws_me_bookmarks_remove"));
394 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
395 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark);
396 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
397 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark);
398 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
399 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark);
400 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
401 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark);
403 ws_gui_app->ws_gui_menu->ws_gui_menu_copy =
404 gtk_menu_item_new_with_label(_("ws_me_edit_copy"));
405 ws_gui_app->ws_gui_menu->ws_gui_menu_paste =
406 gtk_menu_item_new_with_label(_("ws_me_edit_paste"));
407 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all =
408 gtk_menu_item_new_with_label(_("ws_me_edit_select_all"));
409 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
410 ws_gui_app->ws_gui_menu->ws_gui_menu_copy);
411 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
412 ws_gui_app->ws_gui_menu->ws_gui_menu_paste);
413 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
414 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all);
416 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list =
417 gtk_check_menu_item_new_with_label(_("ws_me_view_hide_words_list"));
418 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in =
419 gtk_menu_item_new_with_label(_("ws_me_view_zoom_in"));
420 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out =
421 gtk_menu_item_new_with_label(_("ws_me_view_zoom_out"));
422 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen =
423 gtk_check_menu_item_new_with_label(_("ws_me_view_fullscreen"));
424 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
425 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list);
426 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
427 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in);
428 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
429 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out);
430 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
431 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen);
433 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word =
434 gtk_menu_item_new_with_label(_("ws_me_search_find"));
435 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next =
436 gtk_menu_item_new_with_label(_("ws_me_search_find_next"));
437 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev =
438 gtk_menu_item_new_with_label(_("ws_me_search_find_prev"));
439 ws_gui_app->ws_gui_menu->ws_gui_menu_stop =
440 gtk_menu_item_new_with_label(_("ws_me_search_stop"));
441 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
442 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word);
443 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
444 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next);
445 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
446 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev);
447 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
448 ws_gui_app->ws_gui_menu->ws_gui_menu_stop);
451 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
452 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries);
453 gtk_menu_item_set_submenu(GTK_MENU_ITEM
454 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
455 ws_gui_app->ws_gui_menu->ws_gui_submenu_0);
457 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
458 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks);
459 gtk_menu_item_set_submenu(GTK_MENU_ITEM
460 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
461 ws_gui_app->ws_gui_menu->ws_gui_submenu_4);
463 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
464 ws_gui_app->ws_gui_menu->ws_gui_separator1);
466 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
467 ws_gui_app->ws_gui_menu->ws_gui_menu_edit);
468 gtk_menu_item_set_submenu(GTK_MENU_ITEM
469 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
470 ws_gui_app->ws_gui_menu->ws_gui_submenu_1);
472 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
473 ws_gui_app->ws_gui_menu->ws_gui_menu_view);
474 gtk_menu_item_set_submenu(GTK_MENU_ITEM
475 (ws_gui_app->ws_gui_menu->ws_gui_menu_view),
476 ws_gui_app->ws_gui_menu->ws_gui_submenu_2);
478 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
479 ws_gui_app->ws_gui_menu->ws_gui_menu_search);
480 gtk_menu_item_set_submenu(GTK_MENU_ITEM
481 (ws_gui_app->ws_gui_menu->ws_gui_menu_search),
482 ws_gui_app->ws_gui_menu->ws_gui_submenu_3);
484 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
485 ws_gui_app->ws_gui_menu->ws_gui_separator);
486 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
487 ws_gui_app->ws_gui_menu->ws_gui_menu_about);
488 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
489 ws_gui_app->ws_gui_menu->ws_gui_menu_close);
491 g_signal_connect(G_OBJECT
492 (ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict),
494 G_CALLBACK(ws_gui_dictionary_loader),
496 g_signal_connect(G_OBJECT(
497 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
499 G_CALLBACK(ws_gui_dictionary_chooser),
501 g_signal_connect(G_OBJECT
502 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
504 G_CALLBACK(ws_gui_dictionary_remover),
506 g_signal_connect(G_OBJECT
507 (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
509 G_CALLBACK(ws_gui_dictionary_optimizer), ws_gui_app);
510 g_signal_connect(G_OBJECT
511 (ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark),
513 G_CALLBACK(ws_gui_dictionary_open_bookmark),
515 g_signal_connect(G_OBJECT
516 (ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark),
518 G_CALLBACK(ws_gui_dictionary_close_bookmark),
520 g_signal_connect(G_OBJECT
521 (ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark),
523 G_CALLBACK(ws_gui_dictionary_add_bookmark),
525 g_signal_connect(G_OBJECT
526 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark),
528 G_CALLBACK(ws_gui_dictionary_remove_bookmark),
530 g_signal_connect(G_OBJECT
531 (ws_gui_app->ws_gui_menu->ws_gui_menu_copy),
533 GTK_SIGNAL_FUNC(ws_gui_html_copy),
535 g_signal_connect(G_OBJECT
536 (ws_gui_app->ws_gui_menu->ws_gui_menu_paste),
538 GTK_SIGNAL_FUNC(ws_gui_html_paste),
540 g_signal_connect(G_OBJECT
541 (ws_gui_app->ws_gui_menu->ws_gui_menu_select_all),
543 GTK_SIGNAL_FUNC(ws_gui_html_select_all),
545 g_signal_connect(G_OBJECT
546 (ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list),
548 GTK_SIGNAL_FUNC(ws_gui_words_list_hide_from_menu),
550 g_signal_connect(G_OBJECT
551 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in),
553 G_CALLBACK(ws_gui_html_zoom_in),
555 g_signal_connect(G_OBJECT
556 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out),
558 G_CALLBACK(ws_gui_html_zoom_out),
560 g_signal_connect(G_OBJECT
561 (ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen),
563 GTK_SIGNAL_FUNC(ws_gui_full_screen),
565 g_signal_connect(G_OBJECT
566 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_word),
568 GTK_SIGNAL_FUNC(ws_gui_search),
570 g_signal_connect(G_OBJECT
571 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
573 GTK_SIGNAL_FUNC(ws_gui_history_next),
575 g_signal_connect(G_OBJECT
576 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
578 GTK_SIGNAL_FUNC(ws_gui_history_back),
580 g_signal_connect(G_OBJECT
581 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
583 GTK_SIGNAL_FUNC(ws_gui_search_stop),
585 g_signal_connect(G_OBJECT
586 (ws_gui_app->ws_gui_menu->ws_gui_menu_about),
588 G_CALLBACK(ws_gui_about_application),
590 g_signal_connect(G_OBJECT
591 (ws_gui_app->ws_gui_menu->ws_gui_menu_close),
593 G_CALLBACK(ws_gui_menu_quit),
596 g_signal_connect(G_OBJECT
597 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
599 GTK_SIGNAL_FUNC(ws_gui_check_clipboard),
602 g_signal_connect(G_OBJECT
603 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
605 GTK_SIGNAL_FUNC(ws_gui_dict_availablity),
608 g_signal_connect(G_OBJECT
609 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
611 GTK_SIGNAL_FUNC(ws_gui_set_bookmark_menu_items),
614 hildon_window_set_menu(HILDON_WINDOW(ws_gui_app->ws_gui_hildon_window),
616 ws_gui_app->ws_gui_menu->ws_gui_main_menu));
618 gtk_widget_set_sensitive(GTK_WIDGET
619 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
621 gtk_widget_set_sensitive(GTK_WIDGET
622 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
624 gtk_widget_set_sensitive(GTK_WIDGET
625 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
630 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_main_menu);
634 /** this function creates contex popup menu and its items and connect signals to
637 * @param user_data - set when the signal handler was connected
639 void ws_gui_create_popup_menu (gpointer user_data)
641 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
643 ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
644 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
645 ws_gui_app->ws_gui_menu->ws_gui_separator =
646 gtk_separator_menu_item_new();
648 ws_gui_app->ws_gui_menu->ws_gui_popup_search =
649 gtk_menu_item_new_with_label(_("ws_mp_search"));
650 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
651 ws_gui_app->ws_gui_menu->ws_gui_popup_search);
652 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
653 gtk_separator_menu_item_new());
654 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark =
655 gtk_menu_item_new_with_label(_("ws_mp_add_bookmark"));
656 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
657 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark);
659 ws_gui_app->ws_gui_menu->ws_gui_popup_copy =
660 gtk_menu_item_new_with_label(_("ws_mp_edit_copy"));
661 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
662 ws_gui_app->ws_gui_menu->ws_gui_popup_copy);
664 ws_gui_app->ws_gui_menu->ws_gui_popup_paste =
665 gtk_menu_item_new_with_label(_("ws_mp_edit_paste"));
666 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
667 ws_gui_app->ws_gui_menu->ws_gui_popup_paste);
669 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all =
670 gtk_menu_item_new_with_label(_("ws_mp_edit_select_all"));
671 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
672 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all);
674 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
676 ws_gui_app->ws_gui_menu->ws_gui_popup_edit =
677 gtk_menu_item_new_with_label (_("ws_mp_edit"));
678 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
679 ws_gui_app->ws_gui_menu->ws_gui_popup_edit);
681 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
682 ws_gui_app->ws_gui_menu->ws_gui_separator);
684 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in =
685 gtk_menu_item_new_with_label (_("ws_mp_zoom_in"));
686 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
687 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in);
689 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out =
690 gtk_menu_item_new_with_label (_("ws_mp_zoom_out"));
691 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
692 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out);
694 gtk_menu_item_set_submenu(GTK_MENU_ITEM
695 (ws_gui_app->ws_gui_menu->ws_gui_popup_edit),
696 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
698 struct _GtkHTML *tmp = (struct _GtkHTML *)(ws_gui_app->ws_gui_html);
700 if (html_engine_is_selection_active(tmp->engine) == TRUE)
702 gtk_widget_set_sensitive(GTK_WIDGET
703 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
705 gtk_widget_set_sensitive(GTK_WIDGET
706 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
711 gtk_widget_set_sensitive(GTK_WIDGET
712 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
714 gtk_widget_set_sensitive(GTK_WIDGET
715 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
719 if (ws_gui_app->html_flag == FALSE)
721 gtk_widget_set_sensitive(GTK_WIDGET
722 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
727 gtk_widget_set_sensitive(GTK_WIDGET
728 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
732 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_menu);
735 g_signal_connect(G_OBJECT
736 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
738 G_CALLBACK(ws_gui_popup_search),
741 g_signal_connect(G_OBJECT
742 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
744 G_CALLBACK(ws_gui_dictionary_add_bookmark),
747 g_signal_connect(G_OBJECT
748 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
750 G_CALLBACK(ws_gui_html_copy),
752 g_signal_connect(G_OBJECT
753 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
755 G_CALLBACK(ws_gui_html_paste),
757 g_signal_connect(G_OBJECT
758 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
760 G_CALLBACK(ws_gui_html_select_all),
762 g_signal_connect(G_OBJECT
763 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in),
765 G_CALLBACK(ws_gui_html_zoom_in), ws_gui_app);
766 g_signal_connect(G_OBJECT
767 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out),
769 G_CALLBACK(ws_gui_html_zoom_out),
772 if (gtk_clipboard_wait_for_text(ws_gui_app->ws_gui_clipboard) != NULL)
774 gtk_widget_set_sensitive(GTK_WIDGET
775 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
780 gtk_widget_set_sensitive(GTK_WIDGET
781 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
786 if (ws_gui_app->bookmark_avail == FALSE)
788 gtk_widget_set_sensitive(GTK_WIDGET
789 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
795 if (ws_gui_app->bookmark_mode == TRUE)
797 gtk_widget_set_sensitive(GTK_WIDGET
798 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
803 g_strstrip(ws_gui_app->last_word);
804 //g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nlast_word: %s\n\n", ws_gui_app->last_word);
806 if (ws_gui_app->last_word == NULL ||
807 (ws_gui_app->last_word[0] == '\0'))
809 gtk_widget_set_sensitive(GTK_WIDGET
810 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
815 gtk_widget_set_sensitive(GTK_WIDGET
816 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
821 gtk_menu_popup(GTK_MENU(ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
830 /** this function creates dialog popup window and allows to select dictionaries
831 * which user wants to use
833 * @param menuitem - the object which received the signal
834 * @param user_data - set when the signal handler was connected
836 void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
838 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
840 GtkWidget *dialog_vbox1;
841 GtkWidget *scrolledwindow1;
842 GtkWidget *viewport1;
845 GtkWidget *checkbutton;
846 GtkWidget *cancel_button;
847 GtkWidget *ok_button;
854 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
856 if (gconf_client_dir_exists(ws_gui_app->client,
857 GCONF_PATH, NULL) == TRUE)
859 ws_gui_app->directories =
860 gconf_client_all_dirs(ws_gui_app->client,
866 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
867 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
870 dialog1 = gtk_dialog_new ();
871 gtk_window_set_title (GTK_WINDOW (dialog1),
872 (_("ws_ti_choose_dictionaries_title")));
873 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
874 GDK_WINDOW_TYPE_HINT_DIALOG);
875 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
877 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
878 gtk_widget_show (dialog_vbox1);
880 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
881 gtk_widget_show (scrolledwindow1);
882 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
888 viewport1 = gtk_viewport_new (NULL, NULL);
889 gtk_widget_show (viewport1);
890 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
892 vbox1 = gtk_vbox_new (FALSE, 0);
893 gtk_widget_show (vbox1);
894 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
896 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
898 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
899 name = g_path_get_basename(string);
900 checkbutton = gtk_check_button_new_with_label(name);
901 path = g_strconcat(string, "/active", NULL);
903 if (gconf_client_get_bool(ws_gui_app->client,
907 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
913 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
918 g_array_append_val(checkboxes, checkbutton);
919 gtk_box_pack_start (GTK_BOX (vbox1),
925 if (strcmp(name, "bookmarks") == 0)
927 if (ws_gui_app->bookmark_avail == FALSE)
929 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton),
934 gtk_widget_show (checkbutton);
937 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
938 gtk_widget_show (cancel_button);
939 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
941 GTK_RESPONSE_CANCEL);
943 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
944 gtk_widget_show (ok_button);
945 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
949 i = gtk_dialog_run(GTK_DIALOG(dialog1));
951 if (i == GTK_RESPONSE_OK)
953 for(i=0;i<(checkboxes->len);i++)
955 if (gtk_toggle_button_get_active(
956 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
957 GtkWidget *, i))) == TRUE)
959 name = gtk_button_get_label(GTK_BUTTON(
960 g_array_index(checkboxes, GtkWidget *, i)));
962 path=g_strconcat(GCONF_PATH,
967 gconf_client_set_bool(ws_gui_app->client,
973 if (gtk_toggle_button_get_active(
974 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
975 GtkWidget *, i))) == FALSE)
977 name = gtk_button_get_label(GTK_BUTTON(
978 g_array_index(checkboxes, GtkWidget *, i)));
980 path=g_strconcat(GCONF_PATH,
985 gconf_client_set_bool(ws_gui_app->client,
992 ws_dbus_notify(ws_gui_app->dbus_data,
993 WS_DBUS_INFO_CONFIG_CHANGED);
995 if(ws_gui_app->ws_gui_history->len >= 0)
997 ws_gui_clear_array(ws_gui_app->ws_gui_history);
998 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
999 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1000 ws_gui_app->ws_gui_history_cur_pos = -1;
1002 ws_gui_check_history(ws_gui_app);
1004 gtk_widget_destroy (dialog1);
1005 ws_refresh_search_results(ws_gui_app); //refreshing words list
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 ws_refresh_search_results(ws_gui_app);
1245 gtk_infoprint(GTK_WINDOW(
1246 ws_gui_app->ws_gui_hildon_window),
1247 _("ws_ni_dictionary_added"));
1250 else if (g_str_has_suffix(name, ".bz2"))
1252 ws_dbus_client_extract_dictionary(ws_gui_app->dbus_data, filename);
1253 gtk_widget_destroy(dialog);
1254 ws_refresh_search_results(ws_gui_app);
1258 gtk_widget_destroy (dialog);
1259 gtk_infoprint(GTK_WINDOW(
1260 ws_gui_app->ws_gui_hildon_window),
1261 _("ws_ni_dictionary_wrong_file"));
1267 gtk_widget_destroy (dialog);
1272 /** this function creates dialog popup window which allows to load dictionary
1274 * @param filename - the object which received the signal
1275 * @param user_data - set when the signal handler was connected
1277 gboolean ws_gui_load_dict(gchar *filename, gpointer user_data)
1279 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1283 gchar *name = g_path_get_basename(filename);
1288 len = strlen(filename) - strlen(name) -1;
1289 gchar *tmp = g_strndup (filename, len);;
1290 tmp = g_path_get_basename(tmp);
1293 filepath = g_strndup (filename, len);
1294 path = g_strconcat(GCONF_PATH, "/", tmp, "/path", NULL);
1295 gconf_client_set_string(ws_gui_app->client,
1301 path = g_strconcat(GCONF_PATH,
1307 dialog1 = gtk_message_dialog_new(GTK_WINDOW(
1308 ws_gui_app->ws_gui_hildon_window),
1309 GTK_DIALOG_DESTROY_WITH_PARENT,
1310 GTK_MESSAGE_QUESTION,
1312 _("ws_ni_dictionaries_activation_question"));
1314 gtk_widget_show_all(GTK_WIDGET(dialog1));
1316 if (gtk_dialog_run (GTK_DIALOG (dialog1)) == GTK_RESPONSE_YES)
1318 gconf_client_set_bool(ws_gui_app->client,
1325 gconf_client_set_bool(ws_gui_app->client,
1330 gtk_widget_destroy (dialog1);
1334 path = g_strconcat(GCONF_PATH, "/", tmp, "/optimized", NULL);
1336 dialog2 = gtk_message_dialog_new(
1337 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1338 GTK_DIALOG_DESTROY_WITH_PARENT,
1339 GTK_MESSAGE_QUESTION,
1341 _("ws_ni_dictionaries_optimalization_question"));
1343 gtk_widget_show_all(GTK_WIDGET(dialog2));
1345 if (gtk_dialog_run (GTK_DIALOG (dialog2)) == GTK_RESPONSE_YES)
1347 gconf_client_set_bool(ws_gui_app->client,
1354 gconf_client_set_bool(ws_gui_app->client,
1359 gtk_widget_destroy (dialog2);
1361 if(ws_gui_app->ws_gui_history->len > 0)
1363 ws_gui_clear_array(ws_gui_app->ws_gui_history);
1364 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1365 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1366 ws_gui_app->ws_gui_history_cur_pos = -1;
1368 ws_gui_check_history(ws_gui_app);
1370 ws_dbus_notify(ws_gui_app->dbus_data,
1371 WS_DBUS_INFO_CONFIG_CHANGED);
1376 /** this function creates dialog popup window which allows to remove dictionary
1377 * which is no longer used
1379 * @param menuitem - the object which received the signal
1380 * @param user_data - set when the signal handler was connected
1382 void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
1384 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1387 GtkWidget *dialog_vbox1;
1388 GtkWidget *scrolledwindow1;
1389 GtkWidget *viewport1;
1391 GtkWidget *checkbutton;
1392 GtkWidget *cancel_button;
1393 GtkWidget *ok_button;
1400 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
1402 if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL)
1405 ws_gui_app->directories = gconf_client_all_dirs(
1412 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
1413 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
1416 dialog1 = gtk_dialog_new ();
1417 gtk_window_set_title (GTK_WINDOW (dialog1),
1418 (_("ws_ti_remove_dictionaries_title")));
1419 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
1420 GDK_WINDOW_TYPE_HINT_DIALOG);
1421 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1423 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1424 gtk_widget_show (dialog_vbox1);
1426 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
1427 gtk_widget_show (scrolledwindow1);
1428 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
1434 viewport1 = gtk_viewport_new (NULL, NULL);
1435 gtk_widget_show (viewport1);
1436 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
1438 vbox1 = gtk_vbox_new (FALSE, 0);
1439 gtk_widget_show (vbox1);
1440 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
1442 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
1444 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
1445 name = g_path_get_basename(string);
1446 checkbutton = gtk_check_button_new_with_label(name);
1448 g_array_append_val(checkboxes, checkbutton);
1449 gtk_box_pack_start (GTK_BOX (vbox1),
1455 if (strcmp(name, "bookmarks") == 0)
1457 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton), FALSE);
1459 gtk_widget_show (checkbutton);
1462 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
1463 gtk_widget_show (cancel_button);
1464 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1466 GTK_RESPONSE_CANCEL);
1468 ok_button = gtk_button_new_from_stock
1469 (_("ws_bd_remove_dictionaries_remove_selected"));
1470 gtk_widget_show (ok_button);
1471 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1475 i = gtk_dialog_run(GTK_DIALOG(dialog1));
1477 if (i == GTK_RESPONSE_OK)
1479 for(i=0;i<(checkboxes->len);i++)
1481 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
1482 g_array_index(checkboxes, GtkWidget *, i))) == TRUE)
1485 name = gtk_button_get_label(GTK_BUTTON(
1486 g_array_index(checkboxes, GtkWidget *, i)));
1487 path=g_strconcat(GCONF_PATH, "/", name, NULL);
1488 gconf_client_recursive_unset(ws_gui_app->client,
1490 GCONF_UNSET_INCLUDING_SCHEMA_NAMES,
1495 if(ws_gui_app->ws_gui_history->len >= 0)
1497 ws_gui_clear_array(ws_gui_app->ws_gui_history);
1498 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
1499 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
1500 ws_gui_app->ws_gui_history_cur_pos = -1;
1502 ws_gui_check_history(ws_gui_app);
1504 ws_dbus_notify(ws_gui_app->dbus_data,
1505 WS_DBUS_INFO_CONFIG_CHANGED);
1506 gtk_infoprint(GTK_WINDOW(
1507 ws_gui_app->ws_gui_hildon_window),
1508 _("ws_ib_dictionary_removed"));
1509 gtk_widget_destroy (dialog1);
1510 ws_refresh_search_results(ws_gui_app);
1512 else if (i == GTK_RESPONSE_CANCEL)
1514 gtk_widget_destroy (dialog1);
1517 g_slist_free(ws_gui_app->directories);
1520 /** this function creates dialog popup window which displays information about
1521 * application (about window)
1523 * @param menuitem - the object which received the signal
1524 * @param user_data - set when the signal handler was connected
1526 void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data)
1528 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1530 gtk_widget_set_sensitive(GTK_WIDGET
1531 (ws_gui_app->ws_gui_hildon_find_toolbar),
1534 GtkWidget *about_dialog;
1535 GtkWidget *dialog_vbox1;
1541 GtkWidget *scrolledwindow;
1542 GtkWidget *textview;
1545 const gchar *ws_version;
1547 about_dialog = gtk_dialog_new ();
1548 gtk_window_set_title (GTK_WINDOW (about_dialog),
1549 _("ws_ti_about_title"));
1550 gtk_window_set_default_size(GTK_WINDOW (about_dialog), 350, 200);
1552 dialog_vbox1 = GTK_DIALOG (about_dialog)->vbox;
1553 gtk_widget_show (dialog_vbox1);
1555 vbox1 = gtk_vbox_new (FALSE, 0);
1556 gtk_widget_show (vbox1);
1557 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0);
1559 image = gtk_image_new_from_file ("/usr/share/pixmaps/whitestork.png");
1560 gtk_box_pack_start (GTK_BOX (vbox1), image, TRUE, TRUE, 0);
1562 label2 = gtk_label_new ("WhiteStork");
1563 ws_gui_app->p = pango_font_description_from_string("Tahoma 18");
1564 gtk_widget_modify_font(GTK_WIDGET(label2), ws_gui_app->p);
1565 gtk_label_set_pattern (GTK_LABEL(label2), "__________");
1566 gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 5);
1568 ws_version = g_strconcat("Maemo Multilingual Dictionary\nver. ",
1571 label3 = gtk_label_new_with_mnemonic (_(ws_version));
1572 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1573 gtk_widget_modify_font(GTK_WIDGET(label3), ws_gui_app->p);
1574 gtk_box_pack_start (GTK_BOX (vbox1), label3, FALSE, FALSE, 5);
1575 gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_CENTER);
1577 label4 = gtk_label_new ("Copyright 2006, ComArch S.A\nAll rights "
1579 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1580 gtk_widget_modify_font(GTK_WIDGET(label4), ws_gui_app->p);
1581 gtk_box_pack_start (GTK_BOX (vbox1), label4, FALSE, FALSE, 5);
1582 gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_CENTER);
1584 scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1585 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW
1587 GTK_SHADOW_ETCHED_OUT);
1588 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
1590 GTK_POLICY_AUTOMATIC,
1591 GTK_POLICY_AUTOMATIC);
1592 gtk_box_pack_start (GTK_BOX (vbox1),
1598 textview = gtk_text_view_new ();
1599 ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
1600 gtk_widget_modify_font(GTK_WIDGET(textview), ws_gui_app->p);
1601 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE);
1602 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 10);
1603 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 10);
1604 gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
1605 gtk_text_buffer_set_text(
1606 gtk_text_view_get_buffer(GTK_TEXT_VIEW (textview)),
1607 "The following third party\ncomponents may be\nincluded"
1608 " depending \non your system configuration:\n\nD-BUS "
1609 "- License information:\nhttp://opensource.org/"
1610 "licenses/academic.php",
1613 button1 = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
1614 gtk_dialog_add_action_widget(GTK_DIALOG(about_dialog),
1616 GTK_RESPONSE_CLOSE);
1618 gtk_widget_show_all (GTK_WIDGET(about_dialog));
1620 if (gtk_dialog_run(GTK_DIALOG(about_dialog)) == GTK_RESPONSE_CLOSE)
1622 gtk_widget_destroy(GTK_WIDGET(about_dialog));
1625 gtk_widget_set_sensitive(
1626 GTK_WIDGET(ws_gui_app->ws_gui_hildon_find_toolbar),
1630 void ws_gui_add_bookmark_dialog(gpointer user_data)
1633 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1636 GtkWidget *dialog_vbox1;
1641 GtkWidget *cancelbutton1;
1642 GtkWidget *okbutton1;
1644 const gchar *book_word;
1646 dialog1 = gtk_dialog_new ();
1647 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_add_bookmark"));
1648 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1650 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1651 gtk_widget_show (dialog_vbox1);
1653 vbox1 = gtk_vbox_new (FALSE, 0);
1654 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1656 hbox1 = gtk_hbox_new (FALSE, 0);
1657 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1659 label = gtk_label_new(_("ws_ti_bookmarks_add_question"));
1660 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1662 entry1 = gtk_entry_new ();
1663 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1664 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1665 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1666 gtk_entry_set_editable(GTK_ENTRY(entry1), TRUE);
1668 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1669 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1673 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1674 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1676 GTK_RESPONSE_CANCEL);
1678 gtk_widget_show_all (dialog1);
1680 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1682 book_word = gtk_entry_get_text(GTK_ENTRY(entry1));
1683 ws_dbus_client_add_bookmark(ws_gui_app->dbus_data,
1685 ws_gui_app->raw_translation->str);
1686 gtk_widget_destroy(GTK_WIDGET(dialog1));
1691 gtk_widget_destroy(GTK_WIDGET(dialog1));
1695 void ws_gui_remove_bookmark_dialog(gpointer user_data)
1697 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1700 GtkWidget *dialog_vbox1;
1705 GtkWidget *cancelbutton1;
1706 GtkWidget *okbutton1;
1708 dialog1 = gtk_dialog_new ();
1709 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_remove_bookmark"));
1710 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1712 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1713 gtk_widget_show (dialog_vbox1);
1715 vbox1 = gtk_vbox_new (FALSE, 0);
1716 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1718 hbox1 = gtk_hbox_new (FALSE, 0);
1719 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1721 label = gtk_label_new(_("ws_ni_remove_bookmark_question"));
1722 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1724 entry1 = gtk_entry_new ();
1725 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1726 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1727 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1728 gtk_entry_set_editable(GTK_ENTRY(entry1), FALSE);
1730 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1731 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1735 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1736 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1738 GTK_RESPONSE_CANCEL);
1740 gtk_widget_show_all (dialog1);
1742 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1744 gtk_widget_destroy(GTK_WIDGET(dialog1));
1747 ws_dbus_client_remove_bookmark(ws_gui_app->dbus_data,
1748 ws_gui_app->last_word);
1750 ws_gui_fill_html(" ", ws_gui_app);
1752 g_object_get(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
1757 if (strlen(tmp) != 0)
1759 ws_dbus_client_find_word (ws_gui_app->dbus_data, tmp);
1763 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "strlen(tmp)=0");
1764 gtk_list_store_clear(
1765 ws_gui_app->ws_gui_w_list->ws_gui_store);
1770 gtk_widget_destroy(GTK_WIDGET(dialog1));
1774 void ws_gui_list_full_dialog(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
1776 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1778 ws_gui_app->ws_message_dialog = gtk_message_dialog_new(
1779 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1780 GTK_DIALOG_DESTROY_WITH_PARENT,
1783 _("ws_ni_words_list_full"));
1786 GTK_DIALOG(ws_gui_app->ws_message_dialog))
1790 ws_gui_app->ws_message_dialog);