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;
37 welcome_note = g_strconcat("<br><br><center><font size=+3>",
38 _("ws_ni_welcome"), "<br><IMG SRC=file:/usr/share/pixmaps/whitestork.png>",
41 ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string =
44 GArray *array_tmp = g_array_new (TRUE, TRUE, sizeof(gchar*));
45 ws_gui_app->raw_translation = g_string_new(" ");
47 ws_gui_app->ws_gui_banner_flag = FALSE;
48 ws_gui_app->ws_gui_full_screen_flag = FALSE;
49 ws_gui_app->caching_flag = FALSE;
50 ws_gui_app->ws_gui_double_click = FALSE;
51 ws_gui_app->ws_gui_sel_flag = FALSE;
52 ws_gui_app->bookmark_mode = FALSE;
54 ws_gui_app->timer = g_timer_new();
55 g_timer_stop(ws_gui_app->timer);
57 ws_gui_app->ws_gui_history = g_array_new(TRUE, TRUE, sizeof(gchar*));
58 ws_gui_app->ws_gui_history_cur_pos = -1;
60 ws_gui_app->ws_gui_hildon_program =
61 HILDON_PROGRAM(hildon_program_get_instance());
63 g_set_application_name("WhiteStork");
65 ws_gui_app->ws_gui_hildon_window = HILDON_WINDOW(hildon_window_new());
67 hildon_program_add_window(ws_gui_app->ws_gui_hildon_program,
68 ws_gui_app->ws_gui_hildon_window);
70 ws_gui_create_main_menu(ws_gui_app);
71 ws_gui_create_find_toolbar(ws_gui_app);
73 ws_gui_app->ws_gui_hpane = gtk_hpaned_new();
75 ws_gui_app->ws_gui_scrolledwindow_left =
76 gtk_scrolled_window_new (NULL, NULL);
78 gtk_scrolled_window_set_policy(
79 GTK_SCROLLED_WINDOW (ws_gui_app->ws_gui_scrolledwindow_left),
81 GTK_POLICY_AUTOMATIC);
83 gtk_paned_set_position(GTK_PANED(ws_gui_app->ws_gui_hpane), 100);
85 gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW
86 (ws_gui_app->ws_gui_scrolledwindow_left),
89 ws_gui_app->ws_gui_scrolledwindow_right =
90 gtk_scrolled_window_new (NULL, NULL);
92 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
93 (ws_gui_app->ws_gui_scrolledwindow_right),
95 GTK_POLICY_AUTOMATIC);
97 ws_gui_app->ws_gui_w_list->ws_gui_store =
98 gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
100 ws_gui_app->ws_gui_w_list->ws_gui_view =
101 create_view_and_model(array_tmp, ws_gui_app);
103 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
105 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
106 (ws_gui_app->ws_gui_scrolledwindow_left),
107 ws_gui_app->ws_gui_w_list->ws_gui_view);
109 ws_gui_app->ws_gui_html = gtk_html_new();
111 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
112 gtk_widget_modify_font(GTK_WIDGET(
113 ws_gui_app->ws_gui_html),ws_gui_app->p);
115 g_signal_connect(GTK_OBJECT (ws_gui_app->ws_gui_html),
117 G_CALLBACK(ws_gui_url_requested),
120 gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
121 ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string,
124 /*gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
125 _("WhiteStork_Welcome_Note"),
129 gtk_html_set_editable(GTK_HTML(ws_gui_app->ws_gui_html), FALSE);
130 gtk_html_allow_selection(GTK_HTML(ws_gui_app->ws_gui_html), TRUE);
132 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
133 (ws_gui_app->ws_gui_scrolledwindow_right),
134 ws_gui_app->ws_gui_html);
136 gtk_paned_pack1(GTK_PANED(ws_gui_app->ws_gui_hpane),
137 ws_gui_app->ws_gui_scrolledwindow_left,
140 gtk_paned_pack2(GTK_PANED(ws_gui_app->ws_gui_hpane),
141 ws_gui_app->ws_gui_scrolledwindow_right,
145 gtk_container_add(GTK_CONTAINER(ws_gui_app->ws_gui_hildon_window),
146 ws_gui_app->ws_gui_hpane);
148 gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_hildon_window));
150 ws_gui_app->ws_gui_w_list->ws_gui_selection =
151 gtk_tree_view_get_selection (GTK_TREE_VIEW
152 (ws_gui_app->ws_gui_w_list->ws_gui_view));
154 gtk_tree_selection_set_mode(
155 ws_gui_app->ws_gui_w_list->ws_gui_selection,
156 GTK_SELECTION_BROWSE);
159 ws_gui_app->directories = g_slist_alloc();
160 //ws_gui_app->directories_last = gconf_client_all_dirs(
161 // ws_gui_app->client,
162 // GCONF_PATH, NULL);
163 ws_gui_set_bookmarks_sensitivity(ws_gui_app);
166 ws_gui_app->ws_gui_banner = hildon_banner_show_animation(
167 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
169 _("ws_ab_searching"));
171 gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner));
172 g_free(welcome_note);
175 /** this function creates a find toolbar and connects signals to the tollbars
178 * @param user_data - set when the signal handler was connected
180 void ws_gui_create_find_toolbar(gpointer user_data)
182 WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;
185 ws_gui_app->ws_gui_hildon_find_toolbar =
186 HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("ws_me_search_find")));
188 ws_gui_app->ws_gui_toobar_button_hide =
189 gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
190 ws_gui_app->ws_gui_toobar_button_back =
191 gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
192 ws_gui_app->ws_gui_toobar_button_forward =
193 gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
194 ws_gui_app->ws_gui_toobar_button_stop =
195 gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
196 space = gtk_separator_tool_item_new();
198 ws_gui_app->ws_gui_toobar_button_close =
199 gtk_toolbar_get_nth_item(GTK_TOOLBAR(
200 ws_gui_app->ws_gui_hildon_find_toolbar),
203 gtk_tool_item_set_visible_horizontal(
204 ws_gui_app->ws_gui_toobar_button_close,
207 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
208 ws_gui_app->ws_gui_toobar_button_hide,
210 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
211 ws_gui_app->ws_gui_toobar_button_back,
213 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
214 ws_gui_app->ws_gui_toobar_button_forward,
216 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
219 gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
220 ws_gui_app->ws_gui_toobar_button_stop,
223 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
225 G_CALLBACK(ws_gui_search),
228 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_hide),
230 G_CALLBACK(ws_gui_words_list_hide),
233 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_back),
235 G_CALLBACK(ws_gui_history_back),
238 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_forward),
240 G_CALLBACK(ws_gui_history_next),
242 g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_stop),
244 G_CALLBACK(ws_gui_search_stop),
247 gtk_widget_set_sensitive(
248 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
250 gtk_widget_set_sensitive(
251 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
253 gtk_widget_set_sensitive(
254 GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop),
257 hildon_window_add_toolbar(ws_gui_app->ws_gui_hildon_window,
258 GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar));
261 /** this function creates application menu and its items and connect signals to
264 * @param user_data - set when the signal handler was connected
266 void ws_gui_create_main_menu (gpointer user_data)
268 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
270 ws_gui_app->ws_gui_menu->ws_gui_submenu_0 = gtk_menu_new();
271 ws_gui_app->ws_gui_menu->ws_gui_submenu_1 = gtk_menu_new();
272 ws_gui_app->ws_gui_menu->ws_gui_submenu_2 = gtk_menu_new();
273 ws_gui_app->ws_gui_menu->ws_gui_submenu_3 = gtk_menu_new();
274 ws_gui_app->ws_gui_menu->ws_gui_submenu_4 = gtk_menu_new();
275 ws_gui_app->ws_gui_menu->ws_gui_main_menu = gtk_menu_new();
277 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries =
278 gtk_menu_item_new_with_label(_("ws_me_dictionaries"));
279 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks =
280 gtk_menu_item_new_with_label(_("ws_me_bookmarks"));
281 ws_gui_app->ws_gui_menu->ws_gui_menu_edit =
282 gtk_menu_item_new_with_label(_("ws_me_edit"));
283 ws_gui_app->ws_gui_menu->ws_gui_menu_view =
284 gtk_menu_item_new_with_label(_("ws_me_view"));
285 ws_gui_app->ws_gui_menu->ws_gui_menu_search =
286 gtk_menu_item_new_with_label(_("ws_me_search"));
287 ws_gui_app->ws_gui_menu->ws_gui_menu_about =
288 gtk_menu_item_new_with_label(_("ws_me_about"));
289 ws_gui_app->ws_gui_menu->ws_gui_menu_close =
290 gtk_menu_item_new_with_label(_("ws_me_close"));
291 ws_gui_app->ws_gui_menu->ws_gui_separator =
292 gtk_separator_menu_item_new();
293 ws_gui_app->ws_gui_menu->ws_gui_separator1 =
294 gtk_separator_menu_item_new();
296 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict =
297 gtk_menu_item_new_with_label(_("ws_me_dictionaries_load"));
298 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict =
299 gtk_menu_item_new_with_label(_("ws_me_dictionaries_select"));
300 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict =
301 gtk_menu_item_new_with_label(_("ws_me_dictionaries_remove"));
302 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict =
303 gtk_menu_item_new_with_label(_("ws_me_dictionaries_optimize"));
305 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
306 ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict);
307 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
308 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict);
309 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
310 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict);
311 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
312 ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict);
314 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark =
315 gtk_menu_item_new_with_label(_("ws_me_bookmarks_open"));
316 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark =
317 gtk_menu_item_new_with_label(_("ws_me_bookmarks_close"));
318 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark =
319 gtk_menu_item_new_with_label(_("ws_me_bookmarks_add"));
320 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark =
321 gtk_menu_item_new_with_label(_("ws_me_bookmarks_remove"));
323 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
324 ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark);
325 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
326 ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark);
327 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
328 ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark);
329 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
330 ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark);
332 ws_gui_app->ws_gui_menu->ws_gui_menu_copy =
333 gtk_menu_item_new_with_label(_("ws_me_edit_copy"));
334 ws_gui_app->ws_gui_menu->ws_gui_menu_paste =
335 gtk_menu_item_new_with_label(_("ws_me_edit_paste"));
336 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all =
337 gtk_menu_item_new_with_label(_("ws_me_edit_select_all"));
338 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
339 ws_gui_app->ws_gui_menu->ws_gui_menu_copy);
340 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
341 ws_gui_app->ws_gui_menu->ws_gui_menu_paste);
342 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
343 ws_gui_app->ws_gui_menu->ws_gui_menu_select_all);
345 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list =
346 gtk_check_menu_item_new_with_label(_("ws_me_view_hide_words_list"));
347 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in =
348 gtk_menu_item_new_with_label(_("ws_me_view_zoom_in"));
349 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out =
350 gtk_menu_item_new_with_label(_("ws_me_view_zoom_out"));
351 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen =
352 gtk_check_menu_item_new_with_label(_("ws_me_view_fullscreen"));
353 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
354 ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list);
355 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
356 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in);
357 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
358 ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out);
359 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
360 ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen);
362 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word =
363 gtk_menu_item_new_with_label(_("ws_me_search_find"));
364 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next =
365 gtk_menu_item_new_with_label(_("ws_me_search_find_next"));
366 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev =
367 gtk_menu_item_new_with_label(_("ws_me_search_find_prev"));
368 ws_gui_app->ws_gui_menu->ws_gui_menu_stop =
369 gtk_menu_item_new_with_label(_("ws_me_search_stop"));
370 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
371 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word);
372 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
373 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next);
374 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
375 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev);
376 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
377 ws_gui_app->ws_gui_menu->ws_gui_menu_stop);
380 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
381 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries);
382 gtk_menu_item_set_submenu(GTK_MENU_ITEM
383 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
384 ws_gui_app->ws_gui_menu->ws_gui_submenu_0);
386 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
387 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks);
388 gtk_menu_item_set_submenu(GTK_MENU_ITEM
389 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
390 ws_gui_app->ws_gui_menu->ws_gui_submenu_4);
392 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
393 ws_gui_app->ws_gui_menu->ws_gui_separator1);
395 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
396 ws_gui_app->ws_gui_menu->ws_gui_menu_edit);
397 gtk_menu_item_set_submenu(GTK_MENU_ITEM
398 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
399 ws_gui_app->ws_gui_menu->ws_gui_submenu_1);
401 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
402 ws_gui_app->ws_gui_menu->ws_gui_menu_view);
403 gtk_menu_item_set_submenu(GTK_MENU_ITEM
404 (ws_gui_app->ws_gui_menu->ws_gui_menu_view),
405 ws_gui_app->ws_gui_menu->ws_gui_submenu_2);
407 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
408 ws_gui_app->ws_gui_menu->ws_gui_menu_search);
409 gtk_menu_item_set_submenu(GTK_MENU_ITEM
410 (ws_gui_app->ws_gui_menu->ws_gui_menu_search),
411 ws_gui_app->ws_gui_menu->ws_gui_submenu_3);
413 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
414 ws_gui_app->ws_gui_menu->ws_gui_separator);
415 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
416 ws_gui_app->ws_gui_menu->ws_gui_menu_about);
417 gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
418 ws_gui_app->ws_gui_menu->ws_gui_menu_close);
420 g_signal_connect(G_OBJECT
421 (ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict),
423 G_CALLBACK(ws_gui_dictionary_loader),
425 g_signal_connect(G_OBJECT(
426 ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
428 G_CALLBACK(ws_gui_dictionary_chooser),
430 g_signal_connect(G_OBJECT
431 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
433 G_CALLBACK(ws_gui_dictionary_remover),
435 g_signal_connect(G_OBJECT
436 (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
438 G_CALLBACK(ws_gui_dictionary_optimizer), ws_gui_app);
439 g_signal_connect(G_OBJECT
440 (ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark),
442 G_CALLBACK(ws_gui_dictionary_open_bookmark),
444 g_signal_connect(G_OBJECT
445 (ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark),
447 G_CALLBACK(ws_gui_dictionary_close_bookmark),
449 g_signal_connect(G_OBJECT
450 (ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark),
452 G_CALLBACK(ws_gui_dictionary_add_bookmark),
454 g_signal_connect(G_OBJECT
455 (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark),
457 G_CALLBACK(ws_gui_dictionary_remove_bookmark),
459 g_signal_connect(G_OBJECT
460 (ws_gui_app->ws_gui_menu->ws_gui_menu_copy),
462 GTK_SIGNAL_FUNC(ws_gui_html_copy),
464 g_signal_connect(G_OBJECT
465 (ws_gui_app->ws_gui_menu->ws_gui_menu_paste),
467 GTK_SIGNAL_FUNC(ws_gui_html_paste),
469 g_signal_connect(G_OBJECT
470 (ws_gui_app->ws_gui_menu->ws_gui_menu_select_all),
472 GTK_SIGNAL_FUNC(ws_gui_html_select_all),
474 g_signal_connect(G_OBJECT
475 (ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list),
477 GTK_SIGNAL_FUNC(ws_gui_words_list_hide_from_menu),
479 g_signal_connect(G_OBJECT
480 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in),
482 G_CALLBACK(ws_gui_html_zoom_in),
484 g_signal_connect(G_OBJECT
485 (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out),
487 G_CALLBACK(ws_gui_html_zoom_out),
489 g_signal_connect(G_OBJECT
490 (ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen),
492 GTK_SIGNAL_FUNC(ws_gui_full_screen),
494 g_signal_connect(G_OBJECT
495 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_word),
497 GTK_SIGNAL_FUNC(ws_gui_search),
499 g_signal_connect(G_OBJECT
500 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
502 GTK_SIGNAL_FUNC(ws_gui_history_next),
504 g_signal_connect(G_OBJECT
505 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
507 GTK_SIGNAL_FUNC(ws_gui_history_back),
509 g_signal_connect(G_OBJECT
510 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
512 GTK_SIGNAL_FUNC(ws_gui_search_stop),
514 g_signal_connect(G_OBJECT
515 (ws_gui_app->ws_gui_menu->ws_gui_menu_about),
517 G_CALLBACK(ws_gui_about_application),
519 g_signal_connect(G_OBJECT
520 (ws_gui_app->ws_gui_menu->ws_gui_menu_close),
522 G_CALLBACK(ws_gui_menu_quit),
526 g_signal_connect(G_OBJECT
527 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
529 GTK_SIGNAL_FUNC(ws_gui_check_clipboard),
532 g_signal_connect(G_OBJECT
533 (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
535 GTK_SIGNAL_FUNC(ws_gui_dict_availablity),
538 g_signal_connect(G_OBJECT
539 (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
541 GTK_SIGNAL_FUNC(ws_gui_set_bookmark_menu_items),
544 hildon_window_set_menu(HILDON_WINDOW(ws_gui_app->ws_gui_hildon_window),
546 ws_gui_app->ws_gui_menu->ws_gui_main_menu));
548 gtk_widget_set_sensitive(GTK_WIDGET
549 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
551 gtk_widget_set_sensitive(GTK_WIDGET
552 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
554 gtk_widget_set_sensitive(GTK_WIDGET
555 (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
558 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_main_menu);
562 /** this function creates contex popup menu and its items and connect signals to
565 * @param user_data - set when the signal handler was connected
567 void ws_gui_create_popup_menu (gpointer user_data)
569 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
571 ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
572 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
573 ws_gui_app->ws_gui_menu->ws_gui_separator =
574 gtk_separator_menu_item_new();
576 struct _GtkHTML *tmp = (struct _GtkHTML *)(ws_gui_app->ws_gui_html);
578 ws_gui_app->ws_gui_menu->ws_gui_popup_search =
579 gtk_menu_item_new_with_label(_("ws_mp_search"));
580 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
581 ws_gui_app->ws_gui_menu->ws_gui_popup_search);
582 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
583 gtk_separator_menu_item_new());
585 if (html_engine_is_selection_active(tmp->engine) == TRUE)
587 gtk_widget_set_sensitive(GTK_WIDGET
588 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
593 gtk_widget_set_sensitive(GTK_WIDGET
594 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
598 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark =
599 gtk_menu_item_new_with_label(_("ws_mp_add_bookmark"));
600 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
601 ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark);
603 ws_gui_app->ws_gui_menu->ws_gui_popup_copy =
604 gtk_menu_item_new_with_label(_("ws_mp_edit_copy"));
605 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
606 ws_gui_app->ws_gui_menu->ws_gui_popup_copy);
608 ws_gui_app->ws_gui_menu->ws_gui_popup_paste =
609 gtk_menu_item_new_with_label(_("ws_mp_edit_paste"));
610 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
611 ws_gui_app->ws_gui_menu->ws_gui_popup_paste);
613 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all =
614 gtk_menu_item_new_with_label(_("ws_mp_edit_select_all"));
615 gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
616 ws_gui_app->ws_gui_menu->ws_gui_popup_select_all);
618 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
620 ws_gui_app->ws_gui_menu->ws_gui_popup_edit =
621 gtk_menu_item_new_with_label (_("ws_mp_edit"));
622 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
623 ws_gui_app->ws_gui_menu->ws_gui_popup_edit);
625 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
626 ws_gui_app->ws_gui_menu->ws_gui_separator);
628 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in =
629 gtk_menu_item_new_with_label (_("ws_mp_zoom_in"));
630 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
631 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in);
633 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out =
634 gtk_menu_item_new_with_label (_("ws_mp_zoom_out"));
635 gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
636 ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out);
638 gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_menu);
639 gtk_menu_item_set_submenu(GTK_MENU_ITEM
640 (ws_gui_app->ws_gui_menu->ws_gui_popup_edit),
641 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
643 g_signal_connect(G_OBJECT
644 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
646 G_CALLBACK(ws_gui_popup_search),
649 g_signal_connect(G_OBJECT
650 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
652 G_CALLBACK(ws_gui_dictionary_add_bookmark),
655 g_signal_connect(G_OBJECT
656 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
658 G_CALLBACK(ws_gui_html_copy),
660 g_signal_connect(G_OBJECT
661 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
663 G_CALLBACK(ws_gui_html_paste),
665 g_signal_connect(G_OBJECT
666 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
668 G_CALLBACK(ws_gui_html_select_all),
670 g_signal_connect(G_OBJECT
671 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in),
673 G_CALLBACK(ws_gui_html_zoom_in), ws_gui_app);
674 g_signal_connect(G_OBJECT
675 (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out),
677 G_CALLBACK(ws_gui_html_zoom_out),
680 if (gtk_clipboard_wait_for_text(ws_gui_app->ws_gui_clipboard) != NULL)
682 gtk_widget_set_sensitive(GTK_WIDGET
683 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
688 gtk_widget_set_sensitive(GTK_WIDGET
689 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
693 if (ws_gui_app->bookmark_mode == TRUE)
695 gtk_widget_set_sensitive(GTK_WIDGET
696 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
701 if (ws_gui_app->last_word != NULL)
703 gtk_widget_set_sensitive(GTK_WIDGET
704 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
709 gtk_widget_set_sensitive(GTK_WIDGET
710 (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
714 gtk_menu_popup(GTK_MENU(ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
723 /** this function creates dialog popup window and allows to select dictionaries
724 * which user wants to use
726 * @param menuitem - the object which received the signal
727 * @param user_data - set when the signal handler was connected
729 void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
731 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
733 GtkWidget *dialog_vbox1;
734 GtkWidget *scrolledwindow1;
735 GtkWidget *viewport1;
738 GtkWidget *checkbutton;
739 GtkWidget *cancel_button;
740 GtkWidget *ok_button;
747 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
749 if (gconf_client_dir_exists(ws_gui_app->client,
750 GCONF_PATH, NULL) == TRUE)
752 ws_gui_app->directories =
753 gconf_client_all_dirs(ws_gui_app->client,
759 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
760 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
763 dialog1 = gtk_dialog_new ();
764 gtk_window_set_title (GTK_WINDOW (dialog1),
765 (_("ws_ti_choose_dictionaries_title")));
766 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
767 GDK_WINDOW_TYPE_HINT_DIALOG);
768 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
770 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
771 gtk_widget_show (dialog_vbox1);
773 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
774 gtk_widget_show (scrolledwindow1);
775 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
781 viewport1 = gtk_viewport_new (NULL, NULL);
782 gtk_widget_show (viewport1);
783 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
785 vbox1 = gtk_vbox_new (FALSE, 0);
786 gtk_widget_show (vbox1);
787 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
789 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
791 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
792 name = g_path_get_basename(string);
793 checkbutton = gtk_check_button_new_with_label(name);
794 path = g_strconcat(string, "/active", NULL);
796 if (gconf_client_get_bool(ws_gui_app->client,
800 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
806 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
811 g_array_append_val(checkboxes, checkbutton);
812 gtk_box_pack_start (GTK_BOX (vbox1),
817 gtk_widget_show (checkbutton);
820 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
821 gtk_widget_show (cancel_button);
822 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
824 GTK_RESPONSE_CANCEL);
826 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
827 gtk_widget_show (ok_button);
828 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
832 i = gtk_dialog_run(GTK_DIALOG(dialog1));
834 if (i == GTK_RESPONSE_OK)
836 for(i=0;i<(checkboxes->len);i++)
838 if (gtk_toggle_button_get_active(
839 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
840 GtkWidget *, i))) == TRUE)
842 name = gtk_button_get_label(GTK_BUTTON(
843 g_array_index(checkboxes, GtkWidget *, i)));
844 path=g_strconcat(GCONF_PATH,
849 gconf_client_set_bool(ws_gui_app->client,
855 if (gtk_toggle_button_get_active(
856 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
857 GtkWidget *, i))) == FALSE)
859 name = gtk_button_get_label(GTK_BUTTON(
860 g_array_index(checkboxes, GtkWidget *, i)));
861 path=g_strconcat(GCONF_PATH,
866 gconf_client_set_bool(ws_gui_app->client,
873 ws_dbus_notify(ws_gui_app->dbus_data,
874 WS_DBUS_INFO_CONFIG_CHANGED);
875 gtk_widget_destroy (dialog1);
877 else if (i == GTK_RESPONSE_CANCEL)
879 gtk_widget_destroy (dialog1);
882 g_slist_free(ws_gui_app->directories);
885 /** this function creates dialog popup window and allows optimize dictionaries
887 * @param menuitem - the object which received the signal
888 * @param user_data - set when the signal handler was connected
890 void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
892 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
895 GtkWidget *dialog_vbox1;
896 GtkWidget *scrolledwindow1;
897 GtkWidget *viewport1;
900 GtkWidget *checkbutton;
901 GtkWidget *cancel_button;
902 GtkWidget *ok_button;
909 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
911 if (gconf_client_dir_exists(ws_gui_app->client,
915 ws_gui_app->directories =
916 gconf_client_all_dirs(ws_gui_app->client, GCONF_PATH, NULL);
920 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
921 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
924 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
926 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
927 name = g_path_get_basename(string);
929 path = g_strconcat(string, "/optimized", NULL);
930 if (gconf_client_get_bool (ws_gui_app->client,
934 checkbutton = gtk_check_button_new_with_label(name);
935 g_array_append_val(checkboxes, checkbutton);
938 if (checkboxes->len <= 0)
940 ws_gui_app->ws_message_dialog = gtk_message_dialog_new(
941 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
942 GTK_DIALOG_DESTROY_WITH_PARENT,
945 _("ws_ni_no_dictionaries_to_optimize"));
946 gtk_widget_show_all(ws_gui_app->ws_message_dialog);
947 if (gtk_dialog_run (GTK_DIALOG (
948 ws_gui_app->ws_message_dialog)) == GTK_RESPONSE_OK)
950 gtk_widget_destroy(ws_gui_app->ws_message_dialog);
955 dialog1 = gtk_dialog_new ();
956 gtk_window_set_title(GTK_WINDOW (dialog1),
957 (_("ws_ti_choose_dictionaries_title")));
958 gtk_window_set_type_hint(GTK_WINDOW (dialog1),
959 GDK_WINDOW_TYPE_HINT_DIALOG);
960 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
962 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
963 gtk_widget_show (dialog_vbox1);
965 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
966 gtk_widget_show (scrolledwindow1);
967 gtk_box_pack_start(GTK_BOX (dialog_vbox1),
973 viewport1 = gtk_viewport_new (NULL, NULL);
974 gtk_widget_show (viewport1);
975 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
977 vbox1 = gtk_vbox_new (FALSE, 0);
978 gtk_widget_show (vbox1);
979 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
980 for (i=0; i<checkboxes->len; i++)
982 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
983 g_array_index(checkboxes, GtkWidget*, i)),
985 gtk_box_pack_start(GTK_BOX (vbox1),
986 g_array_index(checkboxes, GtkWidget*, i),
990 gtk_widget_show(g_array_index(checkboxes,
994 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
995 gtk_widget_show (cancel_button);
996 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
998 GTK_RESPONSE_CANCEL);
999 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
1000 gtk_widget_show (ok_button);
1001 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1004 i = gtk_dialog_run(GTK_DIALOG(dialog1));
1005 if (i == GTK_RESPONSE_OK)
1007 for(i=0;i<(checkboxes->len);i++)
1009 if (gtk_toggle_button_get_active(
1011 g_array_index(checkboxes,
1012 GtkWidget *, i))) == TRUE)
1014 name = gtk_button_get_label(GTK_BUTTON(
1015 g_array_index(checkboxes,
1018 path=g_strconcat(GCONF_PATH,
1023 gconf_client_set_bool(
1029 if (gtk_toggle_button_get_active(
1031 g_array_index(checkboxes,
1032 GtkWidget *, i))) == FALSE)
1034 name = gtk_button_get_label(GTK_BUTTON
1035 (g_array_index(checkboxes,
1038 path=g_strconcat(GCONF_PATH,
1043 gconf_client_set_bool(
1050 ws_dbus_notify(ws_gui_app->dbus_data,
1051 WS_DBUS_INFO_CONFIG_CHANGED);
1052 gtk_widget_destroy (dialog1);
1054 else if (i == GTK_RESPONSE_CANCEL)
1056 gtk_widget_destroy (dialog1);
1059 g_slist_free(ws_gui_app->directories);
1062 /** this function creates dialog popup window which allows to load a new
1063 *dictionary file into application
1065 * @param menuitem - the object which received the signal
1066 * @param user_data - set when the signal handler was connected
1068 void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
1070 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1075 /*dialog = gtk_file_chooser_dialog_new(_("ws_ti_load_dictionary_title"),
1076 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1077 GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_OK,
1080 GTK_RESPONSE_CANCEL,
1084 dialog = hildon_file_chooser_dialog_new(
1085 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1086 GTK_FILE_CHOOSER_ACTION_OPEN);
1089 /*dialog = hildon_file_chooser_dialog_new(
1090 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1091 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
1094 gtk_window_set_default_size(GTK_WINDOW (dialog), 200, 200);
1095 gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), FALSE);
1097 //gtk_widget_show(GTK_WIDGET(dialog));
1099 if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
1109 filename = gtk_file_chooser_get_filename(
1110 GTK_FILE_CHOOSER (dialog));
1111 name = g_path_get_basename(filename);
1112 len = strlen(filename) - strlen(name) -1;
1113 tmp = g_strndup (filename, len);
1115 tmp = g_path_get_basename(tmp);
1117 if (g_str_has_suffix(name, ".xdxf")
1118 || g_str_has_suffix(name, ".idx")
1119 || g_str_has_suffix(name, ".ifo")
1120 || g_str_has_suffix(name, ".idx.gz")
1121 || g_str_has_suffix(name, ".dict")
1122 || g_str_has_suffix(name, ".dict.dz"))
1124 len = strlen(filename) - strlen(name) -1;
1125 filepath = g_strndup (filename, len);
1126 path = g_strconcat(GCONF_PATH, "/", tmp, "/path", NULL);
1127 gconf_client_set_string(ws_gui_app->client,
1133 path = g_strconcat(GCONF_PATH,
1138 gtk_widget_destroy (dialog);
1140 dialog2 = gtk_message_dialog_new(GTK_WINDOW(
1141 ws_gui_app->ws_gui_hildon_window),
1142 GTK_DIALOG_DESTROY_WITH_PARENT,
1143 GTK_MESSAGE_QUESTION,
1145 _("ws_ni_dictionaries_activation_question"));
1147 gtk_widget_show_all(GTK_WIDGET(dialog2));
1149 if (gtk_dialog_run (GTK_DIALOG (dialog2)) ==
1152 gconf_client_set_bool(ws_gui_app->client,
1159 gconf_client_set_bool(ws_gui_app->client,
1164 gtk_widget_destroy (dialog2);
1168 path = g_strconcat(GCONF_PATH,
1173 dialog2 = gtk_message_dialog_new(
1174 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
1175 GTK_DIALOG_DESTROY_WITH_PARENT,
1176 GTK_MESSAGE_QUESTION,
1178 _("ws_ni_dictionaries_optimalization_question"));
1180 gtk_widget_show_all(GTK_WIDGET(dialog2));
1182 if (gtk_dialog_run (GTK_DIALOG (dialog2))
1183 == GTK_RESPONSE_YES)
1185 gconf_client_set_bool(ws_gui_app->client,
1192 gconf_client_set_bool(ws_gui_app->client,
1197 gtk_widget_destroy (dialog2);
1199 ws_dbus_notify(ws_gui_app->dbus_data,
1200 WS_DBUS_INFO_CONFIG_CHANGED);
1201 gtk_infoprint(GTK_WINDOW(
1202 ws_gui_app->ws_gui_hildon_window),
1203 _("ws_ni_dictionary_added"));
1207 gtk_widget_destroy (dialog2);
1208 gtk_infoprint(GTK_WINDOW(
1209 ws_gui_app->ws_gui_hildon_window),
1210 _("ws_ni_dictionary_wrong_file"));
1211 gtk_widget_destroy (dialog);
1217 gtk_widget_destroy (dialog);
1222 /** this function creates dialog popup window which allows to remove dictionary
1223 * which is no longer used
1225 * @param menuitem - the object which received the signal
1226 * @param user_data - set when the signal handler was connected
1228 void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
1230 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1233 GtkWidget *dialog_vbox1;
1234 GtkWidget *scrolledwindow1;
1235 GtkWidget *viewport1;
1237 GtkWidget *checkbutton;
1238 GtkWidget *cancel_button;
1239 GtkWidget *ok_button;
1246 checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
1248 if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL)
1251 ws_gui_app->directories = gconf_client_all_dirs(
1258 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
1259 "\n.::GUI::. /apps/WhiteStork/Dictionaries does not exist!!");
1262 dialog1 = gtk_dialog_new ();
1263 gtk_window_set_title (GTK_WINDOW (dialog1),
1264 (_("ws_ti_remove_dictionaries_title")));
1265 gtk_window_set_type_hint (GTK_WINDOW (dialog1),
1266 GDK_WINDOW_TYPE_HINT_DIALOG);
1267 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1269 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1270 gtk_widget_show (dialog_vbox1);
1272 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
1273 gtk_widget_show (scrolledwindow1);
1274 gtk_box_pack_start (GTK_BOX (dialog_vbox1),
1280 viewport1 = gtk_viewport_new (NULL, NULL);
1281 gtk_widget_show (viewport1);
1282 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
1284 vbox1 = gtk_vbox_new (FALSE, 0);
1285 gtk_widget_show (vbox1);
1286 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
1288 for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
1290 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
1291 name = g_path_get_basename(string);
1292 checkbutton = gtk_check_button_new_with_label(name);
1294 g_array_append_val(checkboxes, checkbutton);
1295 gtk_box_pack_start (GTK_BOX (vbox1),
1301 if (strcmp(name, "bookmarks") == 0)
1303 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton), FALSE);
1305 gtk_widget_show (checkbutton);
1308 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
1309 gtk_widget_show (cancel_button);
1310 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1312 GTK_RESPONSE_CANCEL);
1314 ok_button = gtk_button_new_from_stock
1315 (_("ws_bd_remove_dictionaries_remove_selected"));
1316 gtk_widget_show (ok_button);
1317 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
1321 i = gtk_dialog_run(GTK_DIALOG(dialog1));
1323 if (i == GTK_RESPONSE_OK)
1325 for(i=0;i<(checkboxes->len);i++)
1327 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
1328 g_array_index(checkboxes, GtkWidget *, i))) == TRUE)
1331 name = gtk_button_get_label(GTK_BUTTON(
1332 g_array_index(checkboxes, GtkWidget *, i)));
1333 path=g_strconcat(GCONF_PATH, "/", name, NULL);
1334 gconf_client_recursive_unset(ws_gui_app->client,
1336 GCONF_UNSET_INCLUDING_SCHEMA_NAMES,
1341 ws_dbus_notify(ws_gui_app->dbus_data,
1342 WS_DBUS_INFO_CONFIG_CHANGED);
1343 gtk_infoprint(GTK_WINDOW(
1344 ws_gui_app->ws_gui_hildon_window),
1345 _("ws_ib_dictionary_removed"));
1346 gtk_widget_destroy (dialog1);
1348 else if (i == GTK_RESPONSE_CANCEL)
1350 gtk_widget_destroy (dialog1);
1353 g_slist_free(ws_gui_app->directories);
1356 /** this function creates dialog popup window which displays information about
1357 * application (about window)
1359 * @param menuitem - the object which received the signal
1360 * @param user_data - set when the signal handler was connected
1362 void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data)
1364 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1366 gtk_widget_set_sensitive(GTK_WIDGET
1367 (ws_gui_app->ws_gui_hildon_find_toolbar),
1370 GtkWidget *about_dialog;
1371 GtkWidget *dialog_vbox1;
1377 GtkWidget *scrolledwindow;
1378 GtkWidget *textview;
1381 const gchar *ws_version;
1383 about_dialog = gtk_dialog_new ();
1384 gtk_window_set_title (GTK_WINDOW (about_dialog),
1385 _("ws_ti_about_title"));
1386 gtk_window_set_default_size(GTK_WINDOW (about_dialog), 350, 200);
1388 dialog_vbox1 = GTK_DIALOG (about_dialog)->vbox;
1389 gtk_widget_show (dialog_vbox1);
1391 vbox1 = gtk_vbox_new (FALSE, 0);
1392 gtk_widget_show (vbox1);
1393 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0);
1395 image = gtk_image_new_from_file ("/usr/share/pixmaps/whitestork.png");
1396 gtk_box_pack_start (GTK_BOX (vbox1), image, TRUE, TRUE, 0);
1398 label2 = gtk_label_new ("WhiteStork");
1399 ws_gui_app->p = pango_font_description_from_string("Tahoma 18");
1400 gtk_widget_modify_font(GTK_WIDGET(label2), ws_gui_app->p);
1401 gtk_label_set_pattern (GTK_LABEL(label2), "__________");
1402 gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 5);
1404 ws_version = g_strconcat("Maemo Multilingual Dictionary\nver. ",
1407 label3 = gtk_label_new_with_mnemonic (_(ws_version));
1408 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1409 gtk_widget_modify_font(GTK_WIDGET(label3), ws_gui_app->p);
1410 gtk_box_pack_start (GTK_BOX (vbox1), label3, FALSE, FALSE, 5);
1411 gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_CENTER);
1413 label4 = gtk_label_new ("Copyright 2006, ComArch S.A\nAll rights "
1415 ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
1416 gtk_widget_modify_font(GTK_WIDGET(label4), ws_gui_app->p);
1417 gtk_box_pack_start (GTK_BOX (vbox1), label4, FALSE, FALSE, 5);
1418 gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_CENTER);
1420 scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1421 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW
1423 GTK_SHADOW_ETCHED_OUT);
1424 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
1426 GTK_POLICY_AUTOMATIC,
1427 GTK_POLICY_AUTOMATIC);
1428 gtk_box_pack_start (GTK_BOX (vbox1),
1434 textview = gtk_text_view_new ();
1435 ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
1436 gtk_widget_modify_font(GTK_WIDGET(textview), ws_gui_app->p);
1437 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE);
1438 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 10);
1439 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 10);
1440 gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
1441 gtk_text_buffer_set_text(
1442 gtk_text_view_get_buffer(GTK_TEXT_VIEW (textview)),
1443 "The following third party\ncomponents may be\nincluded"
1444 " depending \non your system configuration:\n\nD-BUS "
1445 "- License information:\nhttp://opensource.org/"
1446 "licenses/academic.php",
1449 button1 = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
1450 gtk_dialog_add_action_widget(GTK_DIALOG(about_dialog),
1452 GTK_RESPONSE_CLOSE);
1454 gtk_widget_show_all (GTK_WIDGET(about_dialog));
1456 if (gtk_dialog_run(GTK_DIALOG(about_dialog)) == GTK_RESPONSE_CLOSE)
1458 gtk_widget_destroy(GTK_WIDGET(about_dialog));
1461 gtk_widget_set_sensitive(
1462 GTK_WIDGET(ws_gui_app->ws_gui_hildon_find_toolbar),
1466 void ws_gui_add_bookmark_dialog(gpointer user_data)
1469 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1472 GtkWidget *dialog_vbox1;
1477 GtkWidget *cancelbutton1;
1478 GtkWidget *okbutton1;
1480 const gchar *book_word;
1482 dialog1 = gtk_dialog_new ();
1483 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_add_bookmark"));
1484 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1486 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1487 gtk_widget_show (dialog_vbox1);
1489 vbox1 = gtk_vbox_new (FALSE, 0);
1490 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1492 hbox1 = gtk_hbox_new (FALSE, 0);
1493 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1495 label = gtk_label_new(_("ws_ti_bookmarks_add_question"));
1496 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1498 entry1 = gtk_entry_new ();
1499 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1500 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1501 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1502 gtk_entry_set_editable(GTK_ENTRY(entry1), TRUE);
1504 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1505 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1509 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1510 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1512 GTK_RESPONSE_CANCEL);
1514 gtk_widget_show_all (dialog1);
1516 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1518 book_word = gtk_entry_get_text(GTK_ENTRY(entry1));
1519 ws_dbus_add_bookmark(ws_gui_app->dbus_data,
1521 ws_gui_app->raw_translation->str);
1522 gtk_widget_destroy(GTK_WIDGET(dialog1));
1527 gtk_widget_destroy(GTK_WIDGET(dialog1));
1531 void ws_gui_remove_bookmark_dialog(gpointer user_data)
1533 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
1536 GtkWidget *dialog_vbox1;
1541 GtkWidget *cancelbutton1;
1542 GtkWidget *okbutton1;
1544 dialog1 = gtk_dialog_new ();
1545 gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_remove_bookmark"));
1546 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
1548 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1549 gtk_widget_show (dialog_vbox1);
1551 vbox1 = gtk_vbox_new (FALSE, 0);
1552 gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
1554 hbox1 = gtk_hbox_new (FALSE, 0);
1555 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
1557 label = gtk_label_new(_("ws_ni_remove_bookmark_question"));
1558 gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
1560 entry1 = gtk_entry_new ();
1561 gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
1562 gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
1563 gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
1564 gtk_entry_set_editable(GTK_ENTRY(entry1), FALSE);
1566 cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
1567 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1571 okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
1572 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
1574 GTK_RESPONSE_CANCEL);
1576 gtk_widget_show_all (dialog1);
1578 if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
1580 gtk_widget_destroy(GTK_WIDGET(dialog1));
1583 ws_dbus_remove_bookmark(ws_gui_app->dbus_data,
1584 ws_gui_app->last_word);
1586 ws_gui_fill_html(" ", ws_gui_app);
1588 g_object_get(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
1593 if (strlen(tmp) != 0)
1595 ws_dbus_client_find_word (ws_gui_app->dbus_data, tmp);
1599 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "strlen(tmp)=0");
1600 gtk_list_store_clear(
1601 ws_gui_app->ws_gui_w_list->ws_gui_store);
1606 gtk_widget_destroy(GTK_WIDGET(dialog1));