src/gui/src/ws_gui_layout.c

Go to the documentation of this file.
00001 /*******************************************************************************
00002 This file is part of mdictionary.
00003 
00004 mdictionary is free software; you can redistribute it and/or modify
00005 it under the terms of the GNU General Public License as published by
00006 the Free Software Foundation; either version 2 of the License, or
00007 (at your option) any later version.
00008 
00009 mdictionary is distributed in the hope that it will be useful, 
00010 but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00012 GNU General Public License for more details.
00013 
00014 You should have received a copy of the GNU General Public License 
00015 along with mdictionary; if not, write to the Free Software
00016 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00017 
00018 Copyright 2006 ComArch S.A.
00019 *******************************************************************************/
00032 #include <ws_gui_layout.h>
00033 #include <ws_gui.h>
00034 #include <ws_gui_callbacks.h>
00035 #include <ws_dbus.h>
00036 #include <libintl.h>
00037 
00038 
00044 void ws_gui_create_window(gpointer user_data) 
00045 {
00046         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
00047         
00048         ws_gui_app->welcome_note = g_strconcat("<br><br><center><font size=+3>", 
00049                                    _("ws_ni_welcome"), "<br><IMG SRC=file:/usr/share/pixmaps/mdictionary.png>", 
00050                                    NULL);
00051 
00052 /*      ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string = 
00053                                                      (ws_gui_app->welcome_note);*/
00054 
00055         GArray *array_tmp = g_array_new (TRUE, TRUE, sizeof(gchar*));
00056         ws_gui_app->raw_translation = g_string_new(" ");
00057         ws_gui_app->last_searched = NULL;
00058         ws_gui_app->last_searched_in_book = NULL;
00059         ws_gui_app->last_word = NULL;
00060 
00061         /*indicates that searching banner is displayed*/
00062         ws_gui_app->ws_gui_banner_flag = FALSE;
00063         /*indicates full screen mode*/
00064         ws_gui_app->ws_gui_full_screen_flag = FALSE;
00065         /*indicates that caching is in progress*/
00066         ws_gui_app->caching_flag = FALSE;
00067         /*used for doubleclick recognition*/
00068         ws_gui_app->ws_gui_double_click = FALSE;
00069         /*indicates a that a piece of text is selected*/
00070         ws_gui_app->ws_gui_sel_flag = FALSE;
00071         /*indicates whether bookmark mode is active or not*/
00072         ws_gui_app->bookmark_mode = FALSE;
00073         /*indicates if bookmarks database is available*/
00074         ws_gui_app->bookmark_avail = TRUE;
00075         /*indicates that no translation has been found*/
00076         ws_gui_app->html_flag = TRUE;
00077         /*indicates loading banner is displayed*/
00078         ws_gui_app->loading = FALSE;
00079         /*differentiates between tap and hold and ordinary tap*/
00080         ws_gui_app->stop_clicked = FALSE;
00081         /*if dictionary is just run*/
00082         ws_gui_app->first_run = TRUE; 
00083         /*indicates that no words match a given search pattern*/
00084         ws_gui_app->no_words_found = TRUE;
00085         
00086         ws_gui_app->zoom = ZOOM_DEFAULT;
00087 
00088         ws_gui_app->timer = g_timer_new();
00089         g_timer_stop(ws_gui_app->timer);
00090 
00091         ws_gui_app->ws_gui_history = g_array_new(TRUE, TRUE, sizeof(gchar*));
00092         ws_gui_app->ws_gui_history_list = g_array_new(TRUE, TRUE, sizeof(gchar*));
00093         ws_gui_app->ws_gui_history_iter = g_array_new(TRUE, TRUE, sizeof(gchar*));
00094         ws_gui_app->history_flag = FALSE;
00095         ws_gui_app->ws_gui_history_cur_pos = -1;
00096         
00097         ws_gui_app->ws_gui_hildon_program = 
00098         HILDON_PROGRAM(hildon_program_get_instance());
00099 
00100         g_set_application_name(PACKAGE);
00101 
00102         ws_gui_app->ws_gui_hildon_window = HILDON_WINDOW(hildon_window_new());
00103 
00104         hildon_program_add_window(ws_gui_app->ws_gui_hildon_program,
00105                                 ws_gui_app->ws_gui_hildon_window);
00106 
00107         ws_gui_create_main_menu(ws_gui_app);
00108         ws_gui_create_find_toolbar(ws_gui_app);
00109 
00110         ws_gui_app->ws_gui_hpane = gtk_hpaned_new();
00111 
00112         ws_gui_app->ws_gui_scrolledwindow_left = 
00113                 gtk_scrolled_window_new (NULL, NULL);
00114 
00115         gtk_scrolled_window_set_policy(
00116                 GTK_SCROLLED_WINDOW (ws_gui_app->ws_gui_scrolledwindow_left), 
00117                 GTK_POLICY_AUTOMATIC,
00118                 GTK_POLICY_AUTOMATIC);
00119 
00120         gtk_paned_set_position(GTK_PANED(ws_gui_app->ws_gui_hpane), 100);
00121 
00122         gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW
00123                                 (ws_gui_app->ws_gui_scrolledwindow_left),
00124                                 GTK_CORNER_TOP_LEFT);
00125 
00126         ws_gui_app->ws_gui_scrolledwindow_right = 
00127                 gtk_scrolled_window_new (NULL, NULL);
00128 
00129         gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
00130                                 (ws_gui_app->ws_gui_scrolledwindow_right), 
00131                                 GTK_POLICY_NEVER,
00132                                 GTK_POLICY_AUTOMATIC);
00133 
00134         ws_gui_app->ws_gui_w_list->ws_gui_store = 
00135                 gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
00136 
00137         ws_gui_app->ws_gui_w_list->ws_gui_view = 
00138                 create_view_and_model(array_tmp, ws_gui_app);
00139 
00140         g_array_free(array_tmp, TRUE);
00141 
00142         gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
00143 
00144         gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
00145                                 (ws_gui_app->ws_gui_scrolledwindow_left), 
00146                                         ws_gui_app->ws_gui_w_list->ws_gui_view);
00147 
00148         ws_gui_app->ws_gui_html = gtk_html_new();
00149 
00150         ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
00151         gtk_widget_modify_font(GTK_WIDGET(
00152                                         ws_gui_app->ws_gui_html),ws_gui_app->p);
00153 
00154         g_signal_connect(GTK_OBJECT (ws_gui_app->ws_gui_html),
00155                                 "url_requested",
00156                                 G_CALLBACK(ws_gui_url_requested),
00157                                 ws_gui_app);
00158 
00159         gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
00160                         ws_gui_app->welcome_note,
00161                         -1);
00162         
00163         gtk_html_set_magnification(GTK_HTML(ws_gui_app->ws_gui_html), 
00164                                 ws_gui_app->zoom);
00165 
00166         gtk_html_set_editable(GTK_HTML(ws_gui_app->ws_gui_html), FALSE); 
00167         gtk_html_allow_selection(GTK_HTML(ws_gui_app->ws_gui_html), TRUE);
00168 
00169         gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
00170                                 (ws_gui_app->ws_gui_scrolledwindow_right),
00171                                 ws_gui_app->ws_gui_html);
00172 
00173         /*adding vbox & label - used for notifications */
00174 
00175         ws_gui_app->ws_gui_list_image = gtk_image_new_from_file("/usr/share/pixmaps/ws_warning_icon.png");
00176         ws_gui_app->ws_gui_list_eventbox = gtk_event_box_new ();
00177         ws_gui_app->ws_gui_list_vbox = gtk_vbox_new(FALSE, 0);
00178         ws_gui_app->ws_gui_list_hbox = gtk_hbox_new(FALSE, 5);
00179         ws_gui_app->ws_gui_list_label = gtk_label_new(_("ws_ti_list_full"));
00180 
00181         ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
00182         gtk_widget_modify_font(GTK_WIDGET(ws_gui_app->ws_gui_list_label), ws_gui_app->p);
00183 
00184         /*HBox packing ....*/
00185         gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_hbox),
00186                         ws_gui_app->ws_gui_list_image,
00187                         FALSE,
00188                         FALSE,
00189                         0);
00190         
00191         gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_hbox),
00192                         ws_gui_app->ws_gui_list_label,
00193                         FALSE,
00194                         FALSE,
00195                         0);
00196         
00197         // gtk_widget_set_size_request (ws_gui_app->ws_gui_list_label, 150, -1);
00198 
00199         /*VBox packing ....*/
00200         gtk_box_pack_start(GTK_BOX(ws_gui_app->ws_gui_list_vbox),
00201                         ws_gui_app->ws_gui_scrolledwindow_left,
00202                         TRUE,
00203                         TRUE,
00204                         0);
00205 
00206         gtk_box_pack_end(GTK_BOX(ws_gui_app->ws_gui_list_vbox),
00207                         ws_gui_app->ws_gui_list_eventbox,
00208                         FALSE,
00209                         FALSE,
00210                         0);
00211         
00212         gtk_container_add (GTK_CONTAINER (ws_gui_app->ws_gui_list_eventbox), 
00213                         ws_gui_app->ws_gui_list_hbox);
00214         /************************************************/
00215 
00216 
00217         gtk_paned_pack1(GTK_PANED(ws_gui_app->ws_gui_hpane),
00218                 ws_gui_app->ws_gui_list_vbox,
00219                 TRUE,
00220                 TRUE);
00221         gtk_paned_pack2(GTK_PANED(ws_gui_app->ws_gui_hpane),
00222                 ws_gui_app->ws_gui_scrolledwindow_right,
00223                 TRUE,
00224                 TRUE);
00225 
00226         gtk_container_add(GTK_CONTAINER(ws_gui_app->ws_gui_hildon_window), 
00227                         ws_gui_app->ws_gui_hpane);
00228 
00229         gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_hildon_window));
00230 
00231         gtk_widget_hide_all(GTK_WIDGET(ws_gui_app->ws_gui_list_eventbox));
00232         /*gtk_widget_hide_all(GTK_WIDGET(ws_gui_app->ws_gui_list_hbox));*/
00233 
00234         ws_gui_app->ws_gui_w_list->ws_gui_selection = 
00235                 gtk_tree_view_get_selection (GTK_TREE_VIEW
00236                 (ws_gui_app->ws_gui_w_list->ws_gui_view));
00237 
00238         gtk_tree_selection_set_mode(
00239                                 ws_gui_app->ws_gui_w_list->ws_gui_selection,
00240                                 GTK_SELECTION_BROWSE);
00241         
00242         ws_gui_app->directories = g_slist_alloc();
00243         ws_gui_set_bookmarks_sensitivity(ws_gui_app);
00244 
00245         ws_gui_app->ws_gui_banner_list_searching = hildon_banner_show_animation(
00246                                 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
00247                                 NULL,
00248                                 _("ws_ab_searching"));
00249 
00250         ws_gui_app->ws_gui_banner_translation_loading = hildon_banner_show_animation(
00251                                 GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
00252                                 NULL,
00253                                 _("ws_ab_loading"));
00254         
00255 //      gtk_widget_set_sensitive(GTK_WIDGET
00256 //                      (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
00257 //                      FALSE);
00258 
00259         gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_list_searching));
00260         gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner_translation_loading));
00261 }
00262 
00268 void ws_gui_create_find_toolbar(gpointer user_data)
00269 {
00270         WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;
00271         
00272         GtkToolItem *space;
00273         ws_gui_app->ws_gui_hildon_find_toolbar = 
00274         HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("ws_me_search_find")));
00275         
00276         ws_gui_app->ws_gui_toobar_button_hide =
00277         gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
00278         ws_gui_app->ws_gui_toobar_button_back = 
00279         gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
00280         ws_gui_app->ws_gui_toobar_button_forward =
00281         gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
00282         ws_gui_app->ws_gui_toobar_button_stop = 
00283         gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
00284         space = gtk_separator_tool_item_new(); 
00285         
00286         ws_gui_app->ws_gui_toobar_button_close = 
00287                 gtk_toolbar_get_nth_item(GTK_TOOLBAR(
00288                                         ws_gui_app->ws_gui_hildon_find_toolbar),
00289                                         4);
00290 
00291         ws_gui_app->ws_gui_toobar_button_start = gtk_toolbar_get_nth_item(GTK_TOOLBAR(
00292                                         ws_gui_app->ws_gui_hildon_find_toolbar),
00293                                         2);
00294 
00295         gtk_tool_item_set_visible_horizontal(
00296                                 ws_gui_app->ws_gui_toobar_button_close,
00297                                 FALSE);
00298         
00299         gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
00300                                 ws_gui_app->ws_gui_toobar_button_hide,
00301                                 0);
00302         gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
00303                                 ws_gui_app->ws_gui_toobar_button_back,
00304                                 -1);
00305         gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
00306                                 ws_gui_app->ws_gui_toobar_button_forward,
00307                                 -1);
00308         gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
00309                                 space,
00310                                 -1);
00311         gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
00312                                 ws_gui_app->ws_gui_toobar_button_stop,
00313                                 -1);
00314         
00315         g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar), 
00316                         "search",
00317                         G_CALLBACK(ws_gui_search),
00318                         ws_gui_app);
00319         
00320         g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_hide), 
00321                         "toggled",
00322                         G_CALLBACK(ws_gui_words_list_hide),
00323                         ws_gui_app);
00324         
00325         g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_back), 
00326                         "clicked",
00327                         G_CALLBACK(ws_gui_history_back),
00328                         ws_gui_app);
00329         
00330         g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_forward), 
00331                         "clicked",
00332                         G_CALLBACK(ws_gui_history_next),
00333                         ws_gui_app);
00334         g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_stop), 
00335                         "clicked",
00336                         G_CALLBACK(ws_gui_search_stop),
00337                         ws_gui_app);
00338         
00339         gtk_widget_set_sensitive(
00340                         GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
00341                         FALSE);
00342         gtk_widget_set_sensitive(
00343                         GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
00344                         FALSE);
00345         gtk_widget_set_sensitive(
00346                         GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop),
00347                         FALSE);
00348         
00349         hildon_find_toolbar_highlight_entry((HildonFindToolbar*)(ws_gui_app->ws_gui_hildon_find_toolbar),
00350                                              FALSE);
00351         //gtk_toolbar_set_tooltips(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar), TRUE);
00352 
00353         hildon_window_add_toolbar(ws_gui_app->ws_gui_hildon_window,
00354                         GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar));
00355 }
00356 
00362 void ws_gui_create_main_menu (gpointer user_data) 
00363 {
00364         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
00365 
00366         ws_gui_app->ws_gui_menu->ws_gui_submenu_0 = gtk_menu_new();
00367         ws_gui_app->ws_gui_menu->ws_gui_submenu_1 = gtk_menu_new();
00368         ws_gui_app->ws_gui_menu->ws_gui_submenu_2 = gtk_menu_new();
00369         ws_gui_app->ws_gui_menu->ws_gui_submenu_3 = gtk_menu_new();
00370         ws_gui_app->ws_gui_menu->ws_gui_submenu_4 = gtk_menu_new();
00371         ws_gui_app->ws_gui_menu->ws_gui_main_menu = gtk_menu_new();
00372 
00373         ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries =
00374                 gtk_menu_item_new_with_label(_("ws_me_dictionaries"));
00375         ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks =
00376                 gtk_menu_item_new_with_label(_("ws_me_bookmarks"));
00377         ws_gui_app->ws_gui_menu->ws_gui_menu_edit = 
00378                 gtk_menu_item_new_with_label(_("ws_me_edit"));
00379         ws_gui_app->ws_gui_menu->ws_gui_menu_view = 
00380                 gtk_menu_item_new_with_label(_("ws_me_view"));
00381         ws_gui_app->ws_gui_menu->ws_gui_menu_search = 
00382                 gtk_menu_item_new_with_label(_("ws_me_search"));
00383         ws_gui_app->ws_gui_menu->ws_gui_menu_about = 
00384                 gtk_menu_item_new_with_label(_("ws_me_about"));
00385         ws_gui_app->ws_gui_menu->ws_gui_menu_close = 
00386                 gtk_menu_item_new_with_label(_("ws_me_close"));
00387         ws_gui_app->ws_gui_menu->ws_gui_separator = 
00388                 gtk_separator_menu_item_new();
00389         ws_gui_app->ws_gui_menu->ws_gui_separator1 = 
00390                 gtk_separator_menu_item_new();
00391 
00392         ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict = 
00393                 gtk_menu_item_new_with_label(_("ws_me_dictionaries_load"));
00394         ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict = 
00395                 gtk_menu_item_new_with_label(_("ws_me_dictionaries_select"));
00396         ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict = 
00397                 gtk_menu_item_new_with_label(_("ws_me_dictionaries_remove"));
00398         ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict = 
00399                 gtk_menu_item_new_with_label(_("ws_me_dictionaries_optimize"));
00400 
00401         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
00402                         ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict);
00403         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
00404                         ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict);
00405         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
00406                         ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict);
00407         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
00408                         ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict);
00409 
00410         ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark = 
00411                 gtk_menu_item_new_with_label(_("ws_me_bookmarks_open"));
00412         ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark = 
00413                 gtk_menu_item_new_with_label(_("ws_me_bookmarks_close"));
00414         ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark = 
00415                 gtk_menu_item_new_with_label(_("ws_me_bookmarks_add"));
00416         ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark = 
00417                 gtk_menu_item_new_with_label(_("ws_me_bookmarks_remove"));
00418 
00419         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
00420                         ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark);
00421         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
00422                         ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark);
00423         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
00424                         ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark);
00425         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
00426                         ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark);
00427 
00428         ws_gui_app->ws_gui_menu->ws_gui_menu_copy = 
00429                 gtk_menu_item_new_with_label(_("ws_me_edit_copy"));
00430         ws_gui_app->ws_gui_menu->ws_gui_menu_paste = 
00431                 gtk_menu_item_new_with_label(_("ws_me_edit_paste"));
00432         ws_gui_app->ws_gui_menu->ws_gui_menu_select_all = 
00433                 gtk_menu_item_new_with_label(_("ws_me_edit_select_all"));
00434         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
00435                         ws_gui_app->ws_gui_menu->ws_gui_menu_copy);
00436         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
00437                         ws_gui_app->ws_gui_menu->ws_gui_menu_paste);
00438         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
00439                         ws_gui_app->ws_gui_menu->ws_gui_menu_select_all);
00440         
00441         ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list = 
00442         gtk_check_menu_item_new_with_label(_("ws_me_view_hide_words_list"));
00443         ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in = 
00444                 gtk_menu_item_new_with_label(_("ws_me_view_zoom_in"));
00445         ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out = 
00446                 gtk_menu_item_new_with_label(_("ws_me_view_zoom_out"));
00447         ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen = 
00448                 gtk_check_menu_item_new_with_label(_("ws_me_view_fullscreen"));
00449         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
00450                         ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list);
00451         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
00452                         ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in);
00453         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
00454                         ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out);
00455         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
00456                         ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen);
00457         
00458         ws_gui_app->ws_gui_menu->ws_gui_menu_find_word = 
00459                 gtk_menu_item_new_with_label(_("ws_me_search_find"));
00460         ws_gui_app->ws_gui_menu->ws_gui_menu_find_next = 
00461                 gtk_menu_item_new_with_label(_("ws_me_search_find_next"));
00462         ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev = 
00463         gtk_menu_item_new_with_label(_("ws_me_search_find_prev"));
00464         ws_gui_app->ws_gui_menu->ws_gui_menu_stop = 
00465         gtk_menu_item_new_with_label(_("ws_me_search_stop"));
00466         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
00467                 ws_gui_app->ws_gui_menu->ws_gui_menu_find_word);
00468         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
00469                 ws_gui_app->ws_gui_menu->ws_gui_menu_find_next);
00470         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
00471                 ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev);
00472         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
00473                 ws_gui_app->ws_gui_menu->ws_gui_menu_stop);
00474 
00475 
00476         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
00477                 ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries);
00478         gtk_menu_item_set_submenu(GTK_MENU_ITEM
00479                         (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
00480                         ws_gui_app->ws_gui_menu->ws_gui_submenu_0);
00481 
00482         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
00483                 ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks);
00484         gtk_menu_item_set_submenu(GTK_MENU_ITEM
00485                         (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
00486                         ws_gui_app->ws_gui_menu->ws_gui_submenu_4);
00487 
00488         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
00489                 ws_gui_app->ws_gui_menu->ws_gui_separator1);
00490 
00491         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
00492                 ws_gui_app->ws_gui_menu->ws_gui_menu_edit);
00493         gtk_menu_item_set_submenu(GTK_MENU_ITEM
00494                                 (ws_gui_app->ws_gui_menu->ws_gui_menu_edit), 
00495                                 ws_gui_app->ws_gui_menu->ws_gui_submenu_1);
00496 
00497         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
00498                         ws_gui_app->ws_gui_menu->ws_gui_menu_view);
00499         gtk_menu_item_set_submenu(GTK_MENU_ITEM
00500                                 (ws_gui_app->ws_gui_menu->ws_gui_menu_view), 
00501                                 ws_gui_app->ws_gui_menu->ws_gui_submenu_2);
00502 
00503         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
00504                         ws_gui_app->ws_gui_menu->ws_gui_menu_search);
00505         gtk_menu_item_set_submenu(GTK_MENU_ITEM
00506                                 (ws_gui_app->ws_gui_menu->ws_gui_menu_search), 
00507                                 ws_gui_app->ws_gui_menu->ws_gui_submenu_3);
00508 
00509         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
00510                         ws_gui_app->ws_gui_menu->ws_gui_separator);
00511         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
00512                         ws_gui_app->ws_gui_menu->ws_gui_menu_about);
00513         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_main_menu,
00514                         ws_gui_app->ws_gui_menu->ws_gui_menu_close);
00515 
00516         g_signal_connect(G_OBJECT
00517                         (ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict),
00518                         "activate",
00519                         G_CALLBACK(ws_gui_dictionary_loader),
00520                         ws_gui_app);
00521         g_signal_connect(G_OBJECT(
00522                         ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
00523                         "activate",
00524                         G_CALLBACK(ws_gui_dictionary_chooser),
00525                         ws_gui_app);
00526         g_signal_connect(G_OBJECT
00527                         (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
00528                         "activate",
00529                         G_CALLBACK(ws_gui_dictionary_remover),
00530                         ws_gui_app);
00531         g_signal_connect(G_OBJECT
00532                         (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
00533                         "activate",
00534                         G_CALLBACK(ws_gui_dictionary_optimizer), ws_gui_app);
00535         g_signal_connect(G_OBJECT
00536                         (ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark),
00537                         "activate",
00538                         G_CALLBACK(ws_gui_dictionary_open_bookmark), 
00539                         ws_gui_app);
00540         g_signal_connect(G_OBJECT
00541                         (ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark),
00542                         "activate",
00543                         G_CALLBACK(ws_gui_dictionary_close_bookmark), 
00544                         ws_gui_app);
00545         g_signal_connect(G_OBJECT
00546                         (ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark),
00547                         "activate",
00548                         G_CALLBACK(ws_gui_dictionary_add_bookmark), 
00549                         ws_gui_app);
00550         g_signal_connect(G_OBJECT
00551                         (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark),
00552                         "activate",
00553                         G_CALLBACK(ws_gui_dictionary_remove_bookmark), 
00554                         ws_gui_app);
00555         g_signal_connect(G_OBJECT
00556                         (ws_gui_app->ws_gui_menu->ws_gui_menu_copy),
00557                         "activate", 
00558                         GTK_SIGNAL_FUNC(ws_gui_html_copy),
00559                         ws_gui_app);
00560         g_signal_connect(G_OBJECT
00561                         (ws_gui_app->ws_gui_menu->ws_gui_menu_paste),
00562                         "activate",
00563                         GTK_SIGNAL_FUNC(ws_gui_html_paste),
00564                         ws_gui_app);
00565         g_signal_connect(G_OBJECT
00566                         (ws_gui_app->ws_gui_menu->ws_gui_menu_select_all),
00567                         "activate",
00568                         GTK_SIGNAL_FUNC(ws_gui_html_select_all),
00569                         ws_gui_app);
00570         g_signal_connect(G_OBJECT
00571                         (ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list),
00572                         "activate",
00573                         GTK_SIGNAL_FUNC(ws_gui_words_list_hide_from_menu),
00574                         ws_gui_app);
00575         g_signal_connect(G_OBJECT
00576                         (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in),
00577                         "activate",
00578                         G_CALLBACK(ws_gui_html_zoom_in),
00579                         ws_gui_app);
00580         g_signal_connect(G_OBJECT
00581                         (ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out),
00582                         "activate",
00583                         G_CALLBACK(ws_gui_html_zoom_out),
00584                         ws_gui_app);
00585         g_signal_connect(G_OBJECT
00586                         (ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen),
00587                         "activate",
00588                         GTK_SIGNAL_FUNC(ws_gui_full_screen),
00589                         ws_gui_app);
00590         g_signal_connect(G_OBJECT
00591                         (ws_gui_app->ws_gui_menu->ws_gui_menu_find_word),
00592                         "activate",
00593                         GTK_SIGNAL_FUNC(ws_gui_search),
00594                         ws_gui_app);
00595         g_signal_connect(G_OBJECT
00596                         (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
00597                         "activate",
00598                         GTK_SIGNAL_FUNC(ws_gui_history_next),
00599                         ws_gui_app);
00600         g_signal_connect(G_OBJECT
00601                         (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
00602                         "activate",
00603                         GTK_SIGNAL_FUNC(ws_gui_history_back),
00604                         ws_gui_app);
00605         g_signal_connect(G_OBJECT
00606                         (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
00607                         "activate",
00608                         GTK_SIGNAL_FUNC(ws_gui_search_stop),
00609                         ws_gui_app);
00610         g_signal_connect(G_OBJECT
00611                         (ws_gui_app->ws_gui_menu->ws_gui_menu_about), 
00612                         "activate",
00613                         G_CALLBACK(ws_gui_about_application),
00614                         ws_gui_app);
00615         g_signal_connect(G_OBJECT
00616                         (ws_gui_app->ws_gui_menu->ws_gui_menu_close),
00617                         "activate", 
00618                         G_CALLBACK(ws_gui_menu_quit),
00619                         ws_gui_app);
00620 
00621         g_signal_connect(G_OBJECT
00622                         (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
00623                         "activate",
00624                         GTK_SIGNAL_FUNC(ws_gui_check_clipboard),
00625                         ws_gui_app);
00626 
00627         g_signal_connect(G_OBJECT
00628                         (ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
00629                         "activate",
00630                         GTK_SIGNAL_FUNC(ws_gui_dict_availablity),
00631                         ws_gui_app);
00632 
00633         g_signal_connect(G_OBJECT
00634                         (ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks),
00635                         "activate",
00636                         GTK_SIGNAL_FUNC(ws_gui_set_bookmark_menu_items),
00637                         ws_gui_app);
00638 
00639         hildon_window_set_menu(HILDON_WINDOW(ws_gui_app->ws_gui_hildon_window),
00640                         GTK_MENU(
00641                                 ws_gui_app->ws_gui_menu->ws_gui_main_menu));
00642 
00643         gtk_widget_set_sensitive(GTK_WIDGET
00644                                 (ws_gui_app->ws_gui_menu->ws_gui_menu_stop),
00645                                 FALSE);
00646         gtk_widget_set_sensitive(GTK_WIDGET
00647                         (ws_gui_app->ws_gui_menu->ws_gui_menu_find_next),
00648                         FALSE);
00649         gtk_widget_set_sensitive(GTK_WIDGET
00650                         (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
00651                         FALSE);
00652 
00653         
00654         
00655         gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_main_menu);
00656 }
00657 
00658 
00664 void ws_gui_create_popup_menu (gpointer user_data)
00665 {
00666         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
00667         
00668         ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
00669         ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
00670         ws_gui_app->ws_gui_menu->ws_gui_separator = 
00671                                                 gtk_separator_menu_item_new();
00672         
00673         ws_gui_app->ws_gui_menu->ws_gui_popup_search = 
00674                 gtk_menu_item_new_with_label(_("ws_mp_search"));
00675         gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
00676                         ws_gui_app->ws_gui_menu->ws_gui_popup_search);
00677         gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
00678                         gtk_separator_menu_item_new());
00679         ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark = 
00680                 gtk_menu_item_new_with_label(_("ws_mp_add_bookmark"));
00681         gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
00682                         ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark);
00683         
00684         ws_gui_app->ws_gui_menu->ws_gui_popup_copy = 
00685                 gtk_menu_item_new_with_label(_("ws_mp_edit_copy"));
00686         gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
00687                         ws_gui_app->ws_gui_menu->ws_gui_popup_copy);
00688         
00689         ws_gui_app->ws_gui_menu->ws_gui_popup_paste = 
00690                 gtk_menu_item_new_with_label(_("ws_mp_edit_paste"));
00691         gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
00692                         ws_gui_app->ws_gui_menu->ws_gui_popup_paste);
00693         
00694         ws_gui_app->ws_gui_menu->ws_gui_popup_select_all = 
00695                 gtk_menu_item_new_with_label(_("ws_mp_edit_select_all"));
00696         gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
00697                         ws_gui_app->ws_gui_menu->ws_gui_popup_select_all);
00698         
00699         gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
00700         
00701         ws_gui_app->ws_gui_menu->ws_gui_popup_edit = 
00702                         gtk_menu_item_new_with_label (_("ws_mp_edit"));
00703         gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
00704                         ws_gui_app->ws_gui_menu->ws_gui_popup_edit);
00705         
00706         gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
00707                         ws_gui_app->ws_gui_menu->ws_gui_separator);
00708         
00709         ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in = 
00710                 gtk_menu_item_new_with_label (_("ws_mp_zoom_in"));
00711         gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
00712                         ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in);
00713         
00714         ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out =
00715                 gtk_menu_item_new_with_label (_("ws_mp_zoom_out"));
00716         gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
00717                         ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out);
00718         
00719         gtk_menu_item_set_submenu(GTK_MENU_ITEM
00720                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_edit),
00721                                 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
00722 
00723         struct _GtkHTML *tmp = (struct _GtkHTML *)(ws_gui_app->ws_gui_html);
00724 
00725         if (html_engine_is_selection_active(tmp->engine) == TRUE)
00726         {
00727                 gtk_widget_set_sensitive(GTK_WIDGET
00728                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
00729                                 TRUE);
00730                 gtk_widget_set_sensitive(GTK_WIDGET
00731                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
00732                                 TRUE);
00733         }
00734         else 
00735         {
00736                 gtk_widget_set_sensitive(GTK_WIDGET
00737                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
00738                                 FALSE);
00739                 gtk_widget_set_sensitive(GTK_WIDGET
00740                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
00741                                 FALSE);
00742         }
00743         
00744         if (ws_gui_app->html_flag == FALSE)
00745         {
00746                 gtk_widget_set_sensitive(GTK_WIDGET
00747                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
00748                                 FALSE);
00749         }
00750         else
00751         {
00752                 gtk_widget_set_sensitive(GTK_WIDGET
00753                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
00754                                 TRUE);
00755         }       
00756         
00757         gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_menu);
00758         
00759         
00760         g_signal_connect(G_OBJECT
00761                         (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
00762                         "activate",
00763                         G_CALLBACK(ws_gui_popup_search),
00764                         ws_gui_app);
00765         
00766         g_signal_connect(G_OBJECT
00767                         (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
00768                         "activate",
00769                         G_CALLBACK(ws_gui_dictionary_add_bookmark),
00770                         ws_gui_app);
00771         
00772         g_signal_connect(G_OBJECT
00773                         (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
00774                         "activate", 
00775                         G_CALLBACK(ws_gui_html_copy),
00776                         ws_gui_app);
00777         g_signal_connect(G_OBJECT
00778                         (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
00779                         "activate",
00780                         G_CALLBACK(ws_gui_html_paste),
00781                         ws_gui_app);
00782         g_signal_connect(G_OBJECT
00783                         (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
00784                         "activate",
00785                         G_CALLBACK(ws_gui_html_select_all),
00786                         ws_gui_app);
00787         g_signal_connect(G_OBJECT
00788                         (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in),
00789                         "activate",
00790                         G_CALLBACK(ws_gui_html_zoom_in), ws_gui_app);
00791         g_signal_connect(G_OBJECT
00792                         (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out),
00793                         "activate",
00794                         G_CALLBACK(ws_gui_html_zoom_out),
00795                         ws_gui_app);
00796         
00797         if (gtk_clipboard_wait_for_text(ws_gui_app->ws_gui_clipboard) != NULL)
00798         {
00799                 gtk_widget_set_sensitive(GTK_WIDGET
00800                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
00801                                 TRUE);
00802         }
00803         else
00804         {
00805                 gtk_widget_set_sensitive(GTK_WIDGET
00806                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
00807                                 FALSE);
00808         }
00809         
00810         
00811         if (ws_gui_app->bookmark_avail == FALSE)
00812         {
00813         gtk_widget_set_sensitive(GTK_WIDGET
00814                         (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
00815                         FALSE);
00816         }
00817         
00818         else
00819         {
00820         if (ws_gui_app->bookmark_mode == TRUE)
00821         {
00822                 gtk_widget_set_sensitive(GTK_WIDGET
00823                         (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
00824                         FALSE);
00825         }
00826         else
00827         {
00828                 g_strstrip(ws_gui_app->last_word);
00829                 //g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nlast_word: %s\n\n", ws_gui_app->last_word);
00830                 
00831                 if (ws_gui_app->last_word == NULL || 
00832                     (ws_gui_app->last_word[0] == '\0'))
00833                 {
00834                         gtk_widget_set_sensitive(GTK_WIDGET
00835                         (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
00836                         FALSE);
00837                 }
00838                 else
00839                 {
00840                         gtk_widget_set_sensitive(GTK_WIDGET
00841                         (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
00842                         TRUE);
00843                 }
00844         }
00845         }
00846         gtk_menu_popup(GTK_MENU(ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
00847                         NULL,
00848                         NULL,
00849                         NULL,
00850                         ws_gui_app,
00851                         0,
00852                         0);
00853 }
00854 
00861 void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
00862 {
00863         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
00864         GtkWidget *dialog1;
00865         GtkWidget *dialog_vbox1;
00866         GtkWidget *scrolledwindow1;
00867         GtkWidget *viewport1;
00868         GtkWidget *vbox1;
00869 
00870         GtkWidget *checkbutton;
00871         GtkWidget *cancel_button;
00872         GtkWidget *ok_button;
00873         guint i =0;
00874         gchar* string;
00875         gchar* path;
00876         const gchar* name;
00877         GArray *checkboxes;
00878 
00879         checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
00880 
00881         if (gconf_client_dir_exists(ws_gui_app->client, 
00882                                 GCONF_PATH, NULL) == TRUE)
00883         {
00884         ws_gui_app->directories = 
00885                 gconf_client_all_dirs(ws_gui_app->client,
00886                                         GCONF_PATH,
00887                                         NULL);
00888         }
00889         else 
00890         {
00891         g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
00892                 "\n.::GUI::. /apps/mdictionary/dictionaries does not exist!!");
00893         }
00894 
00895         dialog1 = gtk_dialog_new ();
00896         gtk_window_set_title (GTK_WINDOW (dialog1), 
00897                         (_("ws_ti_choose_dictionaries_title")));
00898         gtk_window_set_type_hint (GTK_WINDOW (dialog1),
00899                                 GDK_WINDOW_TYPE_HINT_DIALOG);
00900         gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
00901 
00902         dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
00903         gtk_widget_show (dialog_vbox1);
00904 
00905         scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
00906         gtk_widget_show (scrolledwindow1);
00907         gtk_box_pack_start (GTK_BOX (dialog_vbox1),
00908                         scrolledwindow1,
00909                         TRUE,
00910                         TRUE,
00911                         0);
00912 
00913         viewport1 = gtk_viewport_new (NULL, NULL);
00914         gtk_widget_show (viewport1);
00915         gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
00916 
00917         vbox1 = gtk_vbox_new (FALSE, 0);
00918         gtk_widget_show (vbox1);
00919         gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
00920 
00921         for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
00922         {
00923         string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i); 
00924         name = g_path_get_basename(string);
00925         checkbutton = gtk_check_button_new_with_label(name);
00926         path = g_strconcat(string, "/active", NULL);
00927 
00928         if (gconf_client_get_bool(ws_gui_app->client, 
00929                                         path, 
00930                                         NULL) == TRUE)
00931         {
00932                 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
00933                                                 checkbutton),
00934                                                 TRUE);
00935         }
00936         else 
00937         {
00938                 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
00939                                                 checkbutton),
00940                                                 FALSE);
00941         }
00942 
00943                 g_array_append_val(checkboxes, checkbutton);
00944                 gtk_box_pack_start (GTK_BOX (vbox1), 
00945                                 checkbutton, 
00946                                 FALSE, 
00947                                 FALSE, 
00948                                 0);
00949                 
00950                 if (strcmp(name, "bookmarks") == 0)
00951                 {
00952                         if (ws_gui_app->bookmark_avail == FALSE) 
00953                         {
00954                         gtk_widget_set_sensitive(GTK_WIDGET(checkbutton),
00955                                                 FALSE);
00956                         }
00957                 }
00958 
00959                 gtk_widget_show (checkbutton);
00960         }
00961 
00962         cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
00963         gtk_widget_show (cancel_button);
00964         gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
00965                                         cancel_button,
00966                                         GTK_RESPONSE_CANCEL);
00967         
00968         ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
00969         gtk_widget_show (ok_button);
00970         gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
00971                                         ok_button,
00972                                         GTK_RESPONSE_OK);
00973         
00974         i = gtk_dialog_run(GTK_DIALOG(dialog1));
00975         
00976         if (i == GTK_RESPONSE_OK) 
00977         {
00978                 for(i=0;i<(checkboxes->len);i++)
00979                 {
00980                         if (gtk_toggle_button_get_active(
00981                                 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
00982                                                 GtkWidget *, i))) == TRUE)
00983                         {
00984                                 name = gtk_button_get_label(GTK_BUTTON(
00985                                 g_array_index(checkboxes, GtkWidget *, i)));
00986                                 
00987                                 path=g_strconcat(GCONF_PATH,
00988                                                 "/",
00989                                                 name,
00990                                                 "/active",
00991                                                 NULL);
00992                                 gconf_client_set_bool(ws_gui_app->client,
00993                                                         path,
00994                                                         TRUE,
00995                                                         NULL);
00996                         }
00997         
00998                         if (gtk_toggle_button_get_active(
00999                                 GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
01000                                                 GtkWidget *, i))) == FALSE)
01001                         {
01002                                 name = gtk_button_get_label(GTK_BUTTON(
01003                                 g_array_index(checkboxes, GtkWidget *, i)));
01004                                 
01005                                 path=g_strconcat(GCONF_PATH,
01006                                                 "/",
01007                                                 name,
01008                                                 "/active",
01009                                                 NULL);
01010                                 gconf_client_set_bool(ws_gui_app->client,
01011                                                         path,
01012                                                         FALSE,
01013                                                         NULL);
01014                         }
01015                 }
01016         
01017                 ws_dbus_notify(ws_gui_app->dbus_data, 
01018                                 WS_DBUS_INFO_CONFIG_CHANGED);
01019 
01020                 if(ws_gui_app->ws_gui_history->len >= 0)
01021                 {
01022                 ws_gui_clear_array(ws_gui_app->ws_gui_history);
01023                 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
01024                 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
01025                 ws_gui_app->ws_gui_history_cur_pos = -1;
01026                 }
01027                 ws_gui_check_history(ws_gui_app);
01028         
01029                 gtk_widget_destroy (dialog1);
01030                 ws_refresh_search_results(ws_gui_app); //refreshing words list
01031         }
01032         else if (i == GTK_RESPONSE_CANCEL) 
01033         {
01034                 gtk_widget_destroy (dialog1);
01035         }
01036         
01037         g_slist_free(ws_gui_app->directories);
01038 }
01039 
01045 void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
01046 {
01047         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
01048 
01049         GtkWidget *dialog1;
01050         GtkWidget *dialog_vbox1;
01051         GtkWidget *scrolledwindow1;
01052         GtkWidget *viewport1;
01053         GtkWidget *vbox1;
01054 
01055         GtkWidget *checkbutton;
01056         GtkWidget *cancel_button;
01057         GtkWidget *ok_button;
01058         guint i =0;
01059         gchar* string;
01060         gchar* path;
01061         const gchar* name;
01062         GArray *checkboxes;
01063 
01064         checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
01065 
01066         //check if a gconf directory exists
01067         if (gconf_client_dir_exists(ws_gui_app->client, 
01068                                 GCONF_PATH, 
01069                                 NULL) == TRUE)
01070         {
01071                 ws_gui_app->directories = 
01072                 gconf_client_all_dirs(ws_gui_app->client, GCONF_PATH, NULL);
01073         }
01074         else 
01075         {
01076                 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
01077                 "\n.::GUI::. /apps/mdictionary/dictionaries does not exist!!");
01078         }
01079 
01080         for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
01081         {
01082                 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i); 
01083                 name = g_path_get_basename(string);
01084 
01085                 path = g_strconcat(string, "/optimized", NULL);
01086                 if (gconf_client_get_bool (ws_gui_app->client,
01087                                         path, 
01088                                         NULL) == FALSE)
01089                 {
01090                         checkbutton = gtk_check_button_new_with_label(name);
01091                         g_array_append_val(checkboxes, checkbutton);
01092                 }
01093         }
01094         if (checkboxes->len <= 0)
01095         {
01096                 ws_gui_app->ws_message_dialog = gtk_message_dialog_new(
01097                                 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
01098                                 GTK_DIALOG_DESTROY_WITH_PARENT,
01099                                 GTK_MESSAGE_ERROR,
01100                                 GTK_BUTTONS_OK,
01101                                 _("ws_ni_no_dictionaries_to_optimize"));
01102         gtk_widget_show_all(ws_gui_app->ws_message_dialog);
01103         if (gtk_dialog_run (GTK_DIALOG (
01104                         ws_gui_app->ws_message_dialog)) == GTK_RESPONSE_OK)
01105         {
01106                         gtk_widget_destroy(ws_gui_app->ws_message_dialog);
01107         }
01108         }
01109         else
01110         {
01111                 dialog1 = gtk_dialog_new ();
01112                 gtk_window_set_title(GTK_WINDOW (dialog1),
01113                                 (_("ws_ti_choose_dictionaries_title")));
01114                 gtk_window_set_type_hint(GTK_WINDOW (dialog1),
01115                                         GDK_WINDOW_TYPE_HINT_DIALOG);
01116                 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
01117 
01118                 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
01119                 gtk_widget_show (dialog_vbox1);
01120 
01121                 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
01122                 gtk_widget_show (scrolledwindow1);
01123                 gtk_box_pack_start(GTK_BOX (dialog_vbox1),
01124                                 scrolledwindow1,
01125                                 TRUE,
01126                                 TRUE,
01127                                 0);
01128 
01129                 viewport1 = gtk_viewport_new (NULL, NULL);
01130                 gtk_widget_show (viewport1);
01131                 gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
01132 
01133                 vbox1 = gtk_vbox_new (FALSE, 0);
01134                 gtk_widget_show (vbox1);
01135                 gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
01136                 for (i=0; i<checkboxes->len; i++)
01137                 {
01138                         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
01139                                 g_array_index(checkboxes, GtkWidget*, i)),
01140                                 FALSE);
01141                         gtk_box_pack_start(GTK_BOX (vbox1),
01142                                 g_array_index(checkboxes, GtkWidget*, i),
01143                                 FALSE,
01144                                 FALSE,
01145                                 0);
01146                         gtk_widget_show(g_array_index(checkboxes, 
01147                                                 GtkWidget*, 
01148                                                 i));
01149                 }
01150                 cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
01151                 gtk_widget_show (cancel_button);
01152                 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
01153                                         cancel_button,
01154                                         GTK_RESPONSE_CANCEL);
01155                 ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
01156                 gtk_widget_show (ok_button);
01157                 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
01158                                         ok_button,
01159                                         GTK_RESPONSE_OK);
01160                 i = gtk_dialog_run(GTK_DIALOG(dialog1));
01161                 if (i == GTK_RESPONSE_OK) 
01162                 {
01163                         for(i=0;i<(checkboxes->len);i++)
01164                         {
01165                                 if (gtk_toggle_button_get_active(
01166                                 GTK_TOGGLE_BUTTON(
01167                                         g_array_index(checkboxes,
01168                                                 GtkWidget *, i))) == TRUE)
01169                                 {
01170                                         name = gtk_button_get_label(GTK_BUTTON(
01171                                                 g_array_index(checkboxes,
01172                                                         GtkWidget *,
01173                                                         i)));
01174                                         path=g_strconcat(GCONF_PATH,
01175                                                         "/",
01176                                                         name,
01177                                                         "/optimized",
01178                                                         NULL);
01179                                         gconf_client_set_bool(
01180                                                         ws_gui_app->client,
01181                                                         path,
01182                                                         TRUE,
01183                                                         NULL);
01184                                 }
01185                                 if (gtk_toggle_button_get_active(
01186                                 GTK_TOGGLE_BUTTON(
01187                                 g_array_index(checkboxes,
01188                                                 GtkWidget *, i))) == FALSE)
01189                                 {
01190                                         name = gtk_button_get_label(GTK_BUTTON
01191                                                 (g_array_index(checkboxes,
01192                                                                 GtkWidget*,
01193                                                                 i)));
01194                                         path=g_strconcat(GCONF_PATH,
01195                                                         "/",
01196                                                         name,
01197                                                         "/optimized",
01198                                                         NULL);
01199                                         gconf_client_set_bool(
01200                                                         ws_gui_app->client,
01201                                                         path,
01202                                                         FALSE,
01203                                                         NULL);
01204                                 }
01205                         }
01206                         ws_dbus_notify(ws_gui_app->dbus_data,
01207                                 WS_DBUS_INFO_CONFIG_CHANGED);
01208                         gtk_widget_destroy (dialog1);
01209                 }
01210                 else if (i == GTK_RESPONSE_CANCEL) 
01211                 {
01212                         gtk_widget_destroy (dialog1);
01213                 }
01214         }
01215         g_slist_free(ws_gui_app->directories);
01216 }
01217 
01224 void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
01225 {
01226         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
01227 
01228         GtkWidget *dialog;
01229 //      GtkWidget *dialog2;     
01230 
01231         dialog = hildon_file_chooser_dialog_new(
01232                                 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
01233                                 GTK_FILE_CHOOSER_ACTION_OPEN);
01234 
01235         gtk_window_set_default_size(GTK_WINDOW (dialog), 200, 200);
01236         gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), FALSE);
01237 
01238         //gtk_widget_show(GTK_WIDGET(dialog));
01239 
01240         if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
01241         { 
01242                 gchar *filename;
01243                 gchar *name;
01244         //   gchar *path;
01245                 gint len;
01246         //  gchar *filepath;
01247 
01248                 gchar* tmp;
01249                 
01250                 filename = gtk_file_chooser_get_filename(
01251                                                 GTK_FILE_CHOOSER (dialog));
01252                 name = g_path_get_basename(filename);
01253                 len = strlen(filename) - strlen(name) -1;
01254                 tmp = g_strndup (filename, len);
01255                                 
01256                 
01257                 tmp = g_path_get_basename(tmp);
01258                 
01259                 if (g_str_has_suffix(name, ".xdxf") 
01260                         || g_str_has_suffix(name, ".idx") 
01261                         || g_str_has_suffix(name, ".ifo")
01262                         || g_str_has_suffix(name, ".idx.gz")
01263                         || g_str_has_suffix(name, ".dict")
01264                         || g_str_has_suffix(name, ".dict.dz"))
01265                 {
01266                         g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n:::GUUUUIII GUIII::: check");
01267                         if (ws_gui_load_dict(filename, ws_gui_app) == TRUE)
01268                         {
01269                                 gtk_widget_destroy(dialog);
01270                                 ws_refresh_search_results(ws_gui_app);
01271                                 hildon_banner_show_information(GTK_WIDGET(
01272                                         ws_gui_app->ws_gui_hildon_window),
01273                                         NULL,
01274                                 _("ws_ni_dictionary_added"));
01275                         } 
01276                 }
01277                 else if (g_str_has_suffix(name, ".bz2"))
01278                 {       
01279                         ws_dbus_client_extract_dictionary(ws_gui_app->dbus_data, filename);
01280                         gtk_widget_destroy(dialog);
01281                         ws_refresh_search_results(ws_gui_app);
01282                 }
01283                 else
01284                 {
01285                         gtk_widget_destroy (dialog);
01286                         hildon_banner_show_information(GTK_WIDGET(
01287                                         ws_gui_app->ws_gui_hildon_window),
01288                                         NULL,
01289                                 _("ws_ni_dictionary_wrong_file"));
01290                 }
01291 
01292         }
01293         else 
01294         {
01295                 gtk_widget_destroy (dialog);
01296         }
01297         
01298 }
01299 
01305 gboolean ws_gui_load_dict(gchar *filename, gpointer user_data)
01306 {
01307         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
01308 
01309         GtkWidget *dialog1;
01310         GtkWidget *dialog2;
01311         gchar *name = g_path_get_basename(filename);
01312         gchar *path;
01313         gint len;
01314         gchar *filepath;
01315 
01316         len = strlen(filename) - strlen(name) -1;
01317         gchar *tmp = g_strndup (filename, len);;
01318         tmp = g_path_get_basename(tmp);
01319         
01320 
01321         filepath = g_strndup (filename, len);
01322         path = g_strconcat(GCONF_PATH, "/", tmp, "/path", NULL);
01323         gconf_client_set_string(ws_gui_app->client,
01324                                 path,
01325                                 filepath,
01326                                 NULL);
01327         g_free(path); 
01328         path = NULL;
01329         path = g_strconcat(GCONF_PATH,
01330                                 "/",
01331                                 tmp,
01332                                 "/active",
01333                                 NULL);
01334         
01335         dialog1 = gtk_message_dialog_new(GTK_WINDOW(
01336                                         ws_gui_app->ws_gui_hildon_window),
01337                                         GTK_DIALOG_DESTROY_WITH_PARENT,
01338                                         GTK_MESSAGE_QUESTION,
01339                                         GTK_BUTTONS_YES_NO,
01340                                 _("ws_ni_dictionaries_activation_question"));
01341 
01342         gtk_widget_show_all(GTK_WIDGET(dialog1));
01343 
01344         if (gtk_dialog_run (GTK_DIALOG (dialog1)) == GTK_RESPONSE_YES)
01345         {
01346                 gconf_client_set_bool(ws_gui_app->client,
01347                                         path,
01348                                         TRUE,
01349                                         NULL);
01350         }
01351         else 
01352         {
01353                 gconf_client_set_bool(ws_gui_app->client,
01354                                         path,
01355                                         FALSE,
01356                                         NULL);
01357         }
01358         gtk_widget_destroy (dialog1);
01359         g_free(path); 
01360         path = NULL;
01361 
01362         path = g_strconcat(GCONF_PATH, "/", tmp, "/optimized", NULL);
01363 
01364         dialog2 = gtk_message_dialog_new(
01365                 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
01366                 GTK_DIALOG_DESTROY_WITH_PARENT,
01367                 GTK_MESSAGE_QUESTION,
01368                 GTK_BUTTONS_YES_NO,
01369                 _("ws_ni_dictionaries_optimalization_question"));
01370 
01371         gtk_widget_show_all(GTK_WIDGET(dialog2));
01372 
01373         if (gtk_dialog_run (GTK_DIALOG (dialog2)) == GTK_RESPONSE_YES)
01374         {
01375                 gconf_client_set_bool(ws_gui_app->client,
01376                                         path,
01377                                         TRUE,
01378                                         NULL);
01379         }
01380         else 
01381         {
01382                 gconf_client_set_bool(ws_gui_app->client,
01383                                         path,
01384                                         FALSE,
01385                                         NULL);
01386         }
01387         gtk_widget_destroy (dialog2);
01388 
01389         if(ws_gui_app->ws_gui_history->len > 0)
01390         {
01391                 ws_gui_clear_array(ws_gui_app->ws_gui_history);
01392                 ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
01393                 ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
01394                 ws_gui_app->ws_gui_history_cur_pos = -1;
01395         }
01396         ws_gui_check_history(ws_gui_app);
01397 
01398         ws_dbus_notify(ws_gui_app->dbus_data,
01399                                 WS_DBUS_INFO_CONFIG_CHANGED);
01400         
01401         return TRUE;
01402 }
01403 
01410 void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
01411 {
01412         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
01413 
01414         GtkWidget *dialog1;
01415         GtkWidget *dialog_vbox1;
01416         GtkWidget *scrolledwindow1;
01417         GtkWidget *viewport1;
01418         GtkWidget *vbox1;
01419         GtkWidget *checkbutton;
01420         GtkWidget *cancel_button;
01421         GtkWidget *ok_button;
01422         guint i =0;
01423         gchar* string;
01424         gchar* path;
01425         const gchar* name;
01426         GArray *checkboxes;
01427 
01428         checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
01429 
01430         if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL) 
01431                                                                         == TRUE)
01432         {
01433                 ws_gui_app->directories = gconf_client_all_dirs(
01434                                                         ws_gui_app->client,
01435                                                         GCONF_PATH,
01436                                                         NULL);
01437         }
01438         else 
01439         {
01440                 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
01441                 "\n.::GUI::. /apps/mdictionary/dictionaries does not exist!!");
01442         }
01443 
01444         dialog1 = gtk_dialog_new ();
01445         gtk_window_set_title (GTK_WINDOW (dialog1), 
01446                         (_("ws_ti_remove_dictionaries_title")));
01447         gtk_window_set_type_hint (GTK_WINDOW (dialog1),
01448                                 GDK_WINDOW_TYPE_HINT_DIALOG);
01449         gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
01450 
01451         dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
01452         gtk_widget_show (dialog_vbox1);
01453 
01454         scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
01455         gtk_widget_show (scrolledwindow1);
01456         gtk_box_pack_start (GTK_BOX (dialog_vbox1),
01457                         scrolledwindow1,
01458                         TRUE,
01459                         TRUE,
01460                         0);
01461 
01462         viewport1 = gtk_viewport_new (NULL, NULL);
01463         gtk_widget_show (viewport1);
01464         gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
01465 
01466         vbox1 = gtk_vbox_new (FALSE, 0);
01467         gtk_widget_show (vbox1);
01468         gtk_container_add (GTK_CONTAINER (viewport1), vbox1);
01469 
01470         for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
01471         {
01472                 string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i); 
01473                 name = g_path_get_basename(string);
01474                 checkbutton = gtk_check_button_new_with_label(name);
01475 
01476                 g_array_append_val(checkboxes, checkbutton);
01477                 gtk_box_pack_start (GTK_BOX (vbox1),
01478                                 checkbutton,
01479                                 FALSE,
01480                                 FALSE,
01481                                 0);
01482                 
01483                 if (strcmp(name, "bookmarks") == 0)
01484                 {
01485                 gtk_widget_set_sensitive(GTK_WIDGET(checkbutton), FALSE);
01486                 }
01487                 gtk_widget_show (checkbutton);
01488         }
01489 
01490         cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
01491         gtk_widget_show (cancel_button);
01492         gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
01493                                 cancel_button,
01494                                 GTK_RESPONSE_CANCEL);
01495 
01496         ok_button = gtk_button_new_from_stock 
01497                         (_("ws_bd_remove_dictionaries_remove_selected"));
01498         gtk_widget_show (ok_button);
01499         gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
01500                                 ok_button,
01501                                 GTK_RESPONSE_OK);
01502 
01503         i = gtk_dialog_run(GTK_DIALOG(dialog1));
01504 
01505         if (i == GTK_RESPONSE_OK) 
01506         {
01507                 for(i=0;i<(checkboxes->len);i++)
01508                 {
01509                         if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
01510                         g_array_index(checkboxes, GtkWidget *, i))) == TRUE)
01511                         {
01512 
01513                                 name = gtk_button_get_label(GTK_BUTTON(
01514                                 g_array_index(checkboxes, GtkWidget *, i)));
01515                                 path=g_strconcat(GCONF_PATH, "/", name, NULL);
01516                                 gconf_client_recursive_unset(ws_gui_app->client,
01517                                         path,
01518                                         GCONF_UNSET_INCLUDING_SCHEMA_NAMES,
01519                                         NULL);
01520                         } 
01521                 }
01522 
01523                 if(ws_gui_app->ws_gui_history->len >= 0)
01524                 {
01525                         ws_gui_clear_array(ws_gui_app->ws_gui_history);
01526                         ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
01527                         ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
01528                         ws_gui_app->ws_gui_history_cur_pos = -1;
01529                 }
01530                 ws_gui_check_history(ws_gui_app);               
01531 
01532                 ws_dbus_notify(ws_gui_app->dbus_data, 
01533                         WS_DBUS_INFO_CONFIG_CHANGED);
01534 
01535                 hildon_banner_show_information(GTK_WIDGET(
01536                                 ws_gui_app->ws_gui_hildon_window),
01537                                 NULL,
01538                                 _("ws_ib_dictionary_removed"));
01539 
01540                 gtk_widget_destroy (dialog1);
01541                 ws_refresh_search_results(ws_gui_app);
01542         }
01543         else if (i == GTK_RESPONSE_CANCEL) 
01544         {
01545                 gtk_widget_destroy (dialog1);
01546         }
01547 
01548         g_slist_free(ws_gui_app->directories);
01549 }
01550 
01557 void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data)
01558 {
01559         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
01560 
01561         gtk_widget_set_sensitive(GTK_WIDGET
01562                                 (ws_gui_app->ws_gui_hildon_find_toolbar),
01563                                 FALSE);
01564 
01565         GtkWidget *about_dialog;
01566         GtkWidget *dialog_vbox1;
01567         GtkWidget *vbox1;
01568         GtkWidget *image;
01569         GtkWidget *label2;
01570         GtkWidget *label3;
01571         GtkWidget *label4;
01572         GtkWidget *scrolledwindow;
01573         GtkWidget *textview;
01574         GtkWidget *button1;
01575 
01576         const gchar *ws_version;
01577 
01578         about_dialog = gtk_dialog_new ();
01579         gtk_window_set_title (GTK_WINDOW (about_dialog), 
01580                         _("ws_ti_about_title"));
01581         gtk_window_set_default_size(GTK_WINDOW (about_dialog), 350, 350);
01582 
01583         dialog_vbox1 = GTK_DIALOG (about_dialog)->vbox;
01584         gtk_widget_show (dialog_vbox1);
01585 
01586         vbox1 = gtk_vbox_new (FALSE, 0);
01587         gtk_widget_show (vbox1);
01588         gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0);
01589 
01590         image = gtk_image_new_from_file ("/usr/share/pixmaps/mdictionary_about.png");
01591         gtk_box_pack_start (GTK_BOX (vbox1), image, TRUE, TRUE, 0);
01592 
01593         label2 = gtk_label_new ("mDictionary");
01594         ws_gui_app->p = pango_font_description_from_string("Tahoma 18");
01595         gtk_widget_modify_font(GTK_WIDGET(label2), ws_gui_app->p);
01596         gtk_label_set_pattern (GTK_LABEL(label2), "__________");
01597         gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 5);
01598 
01599         ws_version = g_strconcat("Maemo Multilingual Dictionary\nver. ",
01600                                 WS_VERSION,
01601                                 NULL);
01602         label3 = gtk_label_new_with_mnemonic (_(ws_version));
01603         ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
01604         gtk_widget_modify_font(GTK_WIDGET(label3), ws_gui_app->p);
01605         gtk_box_pack_start (GTK_BOX (vbox1), label3, FALSE, FALSE, 5);
01606         gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_CENTER);
01607 
01608         label4 = gtk_label_new ("Copyright 2006 - 2007, ComArch S.A\nAll rights " 
01609                                 "reserved");
01610         ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
01611         gtk_widget_modify_font(GTK_WIDGET(label4), ws_gui_app->p);
01612         gtk_box_pack_start (GTK_BOX (vbox1), label4, FALSE, FALSE, 5);
01613         gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_CENTER);
01614 
01615         scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
01616         gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW
01617                                         (scrolledwindow),
01618                                         GTK_SHADOW_ETCHED_OUT);
01619         gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
01620                                         (scrolledwindow),
01621                                         GTK_POLICY_AUTOMATIC,
01622                                         GTK_POLICY_AUTOMATIC);
01623         gtk_box_pack_start (GTK_BOX (vbox1),
01624                         scrolledwindow,
01625                         TRUE,
01626                         TRUE,
01627                         0);
01628 
01629         textview = gtk_text_view_new ();
01630         ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
01631         gtk_widget_modify_font(GTK_WIDGET(textview), ws_gui_app->p);
01632         gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE);
01633         gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 10);
01634         gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 10);
01635         gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
01636         gtk_text_buffer_set_text(
01637                         gtk_text_view_get_buffer(GTK_TEXT_VIEW (textview)),
01638  /*                       "The following third party\ncomponents may be\nincluded"
01639                         " depending \non your system configuration:\n\nD-BUS "
01640                         "- License information:\nhttp://opensource.org/"
01641                         "licenses/academic.php",
01642 */
01643                         "This program is distributed\n"
01644                         " in the hope that it will be\n"
01645                         " useful, but WITHOUT ANY \n"
01646                         " WARRANTY; without even the\n"
01647                         " implied warranty of\n"
01648                         " MERCHANTABILITY or FITNESS\n"
01649                         " FOR A PARTICULAR PURPOSE.\n"
01650                         " See the GNU General Public\n"
01651                         " License for more details.\n"
01652                         
01653                         "The following third party\ncomponents may be\nincluded"
01654                         " depending \non your system configuration:\n\nD-BUS "
01655                         "- License information:\nhttp://opensource.org/"
01656                         " licenses/academic.php\n\n"
01657                         " Finnish-English dictionary -\n"
01658                         " Converted by swaj under GNU\n"
01659                         " Public License, Version: 1.1\n\n"
01660                         " English-Finnish dictionary -\n"
01661                         " Converted by swaj under GNU\n"
01662                         " Public License, Version: 1.0",
01663                         -1);
01664 
01665         button1 = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
01666         gtk_dialog_add_action_widget(GTK_DIALOG(about_dialog),
01667                                 button1,
01668                                 GTK_RESPONSE_CLOSE);
01669 
01670         gtk_widget_show_all (GTK_WIDGET(about_dialog));
01671 
01672         if (gtk_dialog_run(GTK_DIALOG(about_dialog)) == GTK_RESPONSE_CLOSE)
01673         {
01674                 gtk_widget_destroy(GTK_WIDGET(about_dialog));
01675         }
01676 
01677         gtk_widget_set_sensitive(
01678                         GTK_WIDGET(ws_gui_app->ws_gui_hildon_find_toolbar),
01679                         TRUE);
01680 }
01681 
01682 void ws_gui_add_bookmark_dialog(gpointer user_data)
01683 {
01684 
01685         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
01686         
01687         GtkWidget *dialog1;
01688         GtkWidget *dialog_vbox1;
01689         GtkWidget *vbox1;
01690         GtkWidget *hbox1;
01691         GtkWidget *entry1;
01692         GtkWidget *label;
01693         GtkWidget *cancelbutton1;
01694         GtkWidget *okbutton1;
01695         
01696         const gchar *book_word;
01697         
01698         dialog1 = gtk_dialog_new ();
01699         gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_add_bookmark"));
01700         gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
01701         
01702         dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
01703         gtk_widget_show (dialog_vbox1);
01704         
01705         vbox1 = gtk_vbox_new (FALSE, 0);
01706         gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
01707         
01708         hbox1 = gtk_hbox_new (FALSE, 0);
01709         gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
01710         
01711         label = gtk_label_new(_("ws_ti_bookmarks_add_question"));
01712         gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
01713         
01714         entry1 = gtk_entry_new ();
01715         gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
01716         gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
01717         gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
01718         gtk_entry_set_editable(GTK_ENTRY(entry1), TRUE);
01719         
01720         cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
01721         gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), 
01722                                       cancelbutton1, 
01723                                       GTK_RESPONSE_OK);
01724         
01725         okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
01726         gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), 
01727                                       okbutton1, 
01728                                       GTK_RESPONSE_CANCEL);
01729         
01730         gtk_widget_show_all (dialog1);
01731         
01732         if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
01733         {
01734                 book_word = gtk_entry_get_text(GTK_ENTRY(entry1));
01735                 ws_dbus_client_add_bookmark(ws_gui_app->dbus_data, 
01736                                      (gchar*)book_word, 
01737                                      ws_gui_app->raw_translation->str);
01738                 gtk_widget_destroy(GTK_WIDGET(dialog1));
01739                 
01740         }
01741         else 
01742         {
01743                 gtk_widget_destroy(GTK_WIDGET(dialog1));
01744         }
01745 }
01746 
01747 void ws_gui_remove_bookmark_dialog(gpointer user_data)
01748 {
01749         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
01750         
01751         GtkWidget *dialog1;
01752         GtkWidget *dialog_vbox1;
01753         GtkWidget *vbox1;
01754         GtkWidget *hbox1;
01755         GtkWidget *entry1;
01756         GtkWidget *label;
01757         GtkWidget *cancelbutton1;
01758         GtkWidget *okbutton1;
01759         
01760         dialog1 = gtk_dialog_new ();
01761         gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_remove_bookmark"));
01762         gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
01763         
01764         dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
01765         gtk_widget_show (dialog_vbox1);
01766         
01767         vbox1 = gtk_vbox_new (FALSE, 0);
01768         gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
01769         
01770         hbox1 = gtk_hbox_new (FALSE, 0);
01771         gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
01772         
01773         label = gtk_label_new(_("ws_ni_remove_bookmark_question"));
01774         gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
01775         
01776         entry1 = gtk_entry_new ();
01777         gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
01778         gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
01779         gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
01780         gtk_entry_set_editable(GTK_ENTRY(entry1), FALSE);
01781         
01782         cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
01783         gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), 
01784                                       cancelbutton1, 
01785                                       GTK_RESPONSE_OK);
01786         
01787         okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
01788         gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), 
01789                                       okbutton1, 
01790                                       GTK_RESPONSE_CANCEL);
01791         
01792         gtk_widget_show_all (dialog1);
01793         
01794         if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
01795         {
01796                 gtk_widget_destroy(GTK_WIDGET(dialog1));
01797                 gchar* tmp;
01798                 
01799                 ws_dbus_client_remove_bookmark(ws_gui_app->dbus_data, 
01800                                         ws_gui_app->last_word);
01801 
01802                 ws_gui_app->last_word = NULL;
01803 
01804                 ws_gui_fill_html(" ", ws_gui_app);
01805 
01806                 g_object_get(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
01807                                 "prefix",
01808                                 &tmp,
01809                                 NULL);
01810                 
01811                 if (strlen(tmp) != 0)
01812                 {
01813                         ws_dbus_client_find_word (ws_gui_app->dbus_data, tmp);
01814                 }
01815                 else 
01816                 {       
01817                         g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "strlen(tmp)=0");
01818                         gtk_list_store_clear(
01819                                        ws_gui_app->ws_gui_w_list->ws_gui_store);
01820                 }
01821         }
01822         else 
01823         {
01824                 gtk_widget_destroy(GTK_WIDGET(dialog1));
01825         }
01826 }
01827 
01828 void ws_gui_list_full_dialog(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
01829         
01830         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
01831         
01832         ws_gui_app->ws_message_dialog =  gtk_message_dialog_new(
01833                                 GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
01834                                 GTK_DIALOG_DESTROY_WITH_PARENT,
01835                                 GTK_MESSAGE_INFO,
01836                                 GTK_BUTTONS_OK,
01837                                 _("ws_ni_words_list_full"));
01838 
01839         if (gtk_dialog_run(
01840                         GTK_DIALOG(ws_gui_app->ws_message_dialog)) 
01841                                 == GTK_RESPONSE_OK)
01842                 {
01843                         gtk_widget_destroy(
01844                                                 ws_gui_app->ws_message_dialog);
01845                 }
01846 }

Generated on Fri Jan 11 14:30:17 2008 for mDictionary Project by  doxygen 1.5.1