00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
00053
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
00062 ws_gui_app->ws_gui_banner_flag = FALSE;
00063
00064 ws_gui_app->ws_gui_full_screen_flag = FALSE;
00065
00066 ws_gui_app->caching_flag = FALSE;
00067
00068 ws_gui_app->ws_gui_double_click = FALSE;
00069
00070 ws_gui_app->ws_gui_sel_flag = FALSE;
00071
00072 ws_gui_app->bookmark_mode = FALSE;
00073
00074 ws_gui_app->bookmark_avail = TRUE;
00075
00076 ws_gui_app->html_flag = TRUE;
00077
00078 ws_gui_app->loading = FALSE;
00079
00080 ws_gui_app->stop_clicked = FALSE;
00081
00082 ws_gui_app->first_run = TRUE;
00083
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
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
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
00198
00199
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
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
00256
00257
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
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
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);
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
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
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
01239
01240 if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
01241 {
01242 gchar *filename;
01243 gchar *name;
01244
01245 gint len;
01246
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
01639
01640
01641
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 }