working on bug with GtkTreeView
[mdictionary] / src / gui / src / ws_gui_layout.c
index 7957dfe..6b99a09 100644 (file)
@@ -31,18 +31,20 @@ Copyright 2006 ComArch S.A.
  */
 void ws_gui_create_window(gpointer user_data) 
 {
-        WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
        
-       gchar *welcome_note;
-       welcome_note = g_strconcat("<br><br><center><font size=+3>", 
+       ws_gui_app->welcome_note = g_strconcat("<br><br><center><font size=+3>", 
                                   _("ws_ni_welcome"), "<br><IMG SRC=file:/usr/share/pixmaps/whitestork.png>", 
                                   NULL);
 
        ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string = 
-                                                          (welcome_note);
+                                                    (ws_gui_app->welcome_note);
 
         GArray *array_tmp = g_array_new (TRUE, TRUE, sizeof(gchar*));
        ws_gui_app->raw_translation = g_string_new(" ");
+       ws_gui_app->last_searched = NULL;
+       ws_gui_app->last_searched_in_book = NULL;
+       ws_gui_app->last_word = NULL;
 
         ws_gui_app->ws_gui_banner_flag = FALSE;
         ws_gui_app->ws_gui_full_screen_flag = FALSE;
@@ -50,13 +52,21 @@ void ws_gui_create_window(gpointer user_data)
         ws_gui_app->ws_gui_double_click = FALSE;
         ws_gui_app->ws_gui_sel_flag = FALSE;
        ws_gui_app->bookmark_mode = FALSE;
+       ws_gui_app->bookmark_avail = TRUE;
+       ws_gui_app->html_flag = TRUE;
+
+       ws_gui_app->zoom = ZOOM_DEFAULT;
 
         ws_gui_app->timer = g_timer_new();
         g_timer_stop(ws_gui_app->timer);
 
         ws_gui_app->ws_gui_history = g_array_new(TRUE, TRUE, sizeof(gchar*));
+       ws_gui_app->ws_gui_history_list = g_array_new(TRUE, TRUE, sizeof(gchar*));
+       ws_gui_app->ws_gui_history_iter = g_array_new(TRUE, TRUE, sizeof(gchar*));
+       ws_gui_app->ws_gui_history_bookmarks = g_array_new(TRUE, TRUE, sizeof(gchar*));
+       ws_gui_app->history_flag = FALSE;
         ws_gui_app->ws_gui_history_cur_pos = -1;
-
+       
         ws_gui_app->ws_gui_hildon_program = 
         HILDON_PROGRAM(hildon_program_get_instance());
 
@@ -67,7 +77,7 @@ void ws_gui_create_window(gpointer user_data)
         hildon_program_add_window(ws_gui_app->ws_gui_hildon_program,
                                   ws_gui_app->ws_gui_hildon_window);
 
-        ws_gui_create_main_menu(ws_gui_app);
+       ws_gui_create_main_menu(ws_gui_app);
         ws_gui_create_find_toolbar(ws_gui_app);
 
         ws_gui_app->ws_gui_hpane = gtk_hpaned_new();
@@ -99,6 +109,7 @@ void ws_gui_create_window(gpointer user_data)
 
         ws_gui_app->ws_gui_w_list->ws_gui_view = 
                 create_view_and_model(array_tmp, ws_gui_app);
+       ws_gui_app->ws_gui_w_list->path = gtk_tree_path_new();
 
         gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
 
@@ -120,6 +131,8 @@ void ws_gui_create_window(gpointer user_data)
         gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
                         ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string,
                         -1);
+       
+       gtk_html_set_magnification(GTK_HTML(ws_gui_app->ws_gui_html), ws_gui_app->zoom);
 
        /*gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
                         _("WhiteStork_Welcome_Note"),
@@ -153,23 +166,22 @@ void ws_gui_create_window(gpointer user_data)
 
        gtk_tree_selection_set_mode(
                                    ws_gui_app->ws_gui_w_list->ws_gui_selection,
-                                   GTK_SELECTION_BROWSE);
-
+                                     GTK_SELECTION_BROWSE);
        
        ws_gui_app->directories = g_slist_alloc();
-       //ws_gui_app->directories_last = gconf_client_all_dirs(
-       //                                              ws_gui_app->client, 
-       //                                              GCONF_PATH, NULL);
        ws_gui_set_bookmarks_sensitivity(ws_gui_app);
 
-
        ws_gui_app->ws_gui_banner = hildon_banner_show_animation(
                                    GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
                                    NULL,
                                    _("ws_ab_searching"));
        
+       gtk_widget_set_sensitive(GTK_WIDGET
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
+                       FALSE);
+
        gtk_widget_hide(GTK_WIDGET(ws_gui_app->ws_gui_banner));
-       g_free(welcome_note);
+       g_free(ws_gui_app->welcome_note);
 }
 
 /** this function creates a find toolbar and connects signals to the tollbars 
@@ -179,83 +191,83 @@ void ws_gui_create_window(gpointer user_data)
  */
 void ws_gui_create_find_toolbar(gpointer user_data)
 {
-       WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;
-
-       GtkToolItem *space;
-       ws_gui_app->ws_gui_hildon_find_toolbar = 
-       HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("ws_me_search_find")));
-
-       ws_gui_app->ws_gui_toobar_button_hide =
-       gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
-       ws_gui_app->ws_gui_toobar_button_back = 
-       gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
-       ws_gui_app->ws_gui_toobar_button_forward =
-       gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
-       ws_gui_app->ws_gui_toobar_button_stop = 
-       gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
-       space = gtk_separator_tool_item_new(); 
-
-       ws_gui_app->ws_gui_toobar_button_close = 
-                gtk_toolbar_get_nth_item(GTK_TOOLBAR(
-                                        ws_gui_app->ws_gui_hildon_find_toolbar),
-                                        4);
-
-       gtk_tool_item_set_visible_horizontal(
-                                         ws_gui_app->ws_gui_toobar_button_close,
-                                         FALSE);
-
-       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
-                          ws_gui_app->ws_gui_toobar_button_hide,
-                          0);
-       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
-                          ws_gui_app->ws_gui_toobar_button_back,
-                          -1);
-       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
-                          ws_gui_app->ws_gui_toobar_button_forward,
-                          -1);
-       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
-                          space,
-                          -1);
-       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
-                          ws_gui_app->ws_gui_toobar_button_stop,
-                          -1);
-       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar), 
-                        "search",
-                        G_CALLBACK(ws_gui_search),
-                        ws_gui_app);
-
-       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_hide), 
-                       "toggled",
-                       G_CALLBACK(ws_gui_words_list_hide),
-                       ws_gui_app);
-
-       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_back), 
-                        "clicked",
-                        G_CALLBACK(ws_gui_history_back),
-                        ws_gui_app);
-
-       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_forward), 
-                        "clicked",
-                        G_CALLBACK(ws_gui_history_next),
-                        ws_gui_app);
-       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_stop), 
-                         "clicked",
-                         G_CALLBACK(ws_gui_search_stop),
-                         ws_gui_app);
-
-       gtk_widget_set_sensitive(
-                             GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
-                              FALSE);
-       gtk_widget_set_sensitive(
-                           GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
-                           FALSE);
-       gtk_widget_set_sensitive(
-                              GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop),
-                              FALSE);
-
-       hildon_window_add_toolbar(ws_gui_app->ws_gui_hildon_window,
-                           GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar));
+       WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;
+       
+       GtkToolItem *space;
+       ws_gui_app->ws_gui_hildon_find_toolbar = 
+       HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("ws_me_search_find")));
+       
+       ws_gui_app->ws_gui_toobar_button_hide =
+       gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
+       ws_gui_app->ws_gui_toobar_button_back = 
+       gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
+       ws_gui_app->ws_gui_toobar_button_forward =
+       gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
+       ws_gui_app->ws_gui_toobar_button_stop = 
+       gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
+       space = gtk_separator_tool_item_new(); 
+       
+       ws_gui_app->ws_gui_toobar_button_close = 
+               gtk_toolbar_get_nth_item(GTK_TOOLBAR(
+                                       ws_gui_app->ws_gui_hildon_find_toolbar),
+                                       4);
+       
+       gtk_tool_item_set_visible_horizontal(
+                               ws_gui_app->ws_gui_toobar_button_close,
+                               FALSE);
+       
+       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
+                               ws_gui_app->ws_gui_toobar_button_hide,
+                               0);
+       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
+                               ws_gui_app->ws_gui_toobar_button_back,
+                               -1);
+       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
+                               ws_gui_app->ws_gui_toobar_button_forward,
+                               -1);
+       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
+                               space,
+                               -1);
+       gtk_toolbar_insert(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar),
+                               ws_gui_app->ws_gui_toobar_button_stop,
+                               -1);
+       
+       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar), 
+                       "search",
+                       G_CALLBACK(ws_gui_search),
+                       ws_gui_app);
+       
+       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_hide), 
+                       "toggled",
+                       G_CALLBACK(ws_gui_words_list_hide),
+                       ws_gui_app);
+       
+       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_back), 
+                       "clicked",
+                       G_CALLBACK(ws_gui_history_back),
+                       ws_gui_app);
+       
+       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_forward), 
+                       "clicked",
+                       G_CALLBACK(ws_gui_history_next),
+                       ws_gui_app);
+       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_toobar_button_stop), 
+                       "clicked",
+                       G_CALLBACK(ws_gui_search_stop),
+                       ws_gui_app);
+       
+       gtk_widget_set_sensitive(
+                       GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
+                       FALSE);
+       gtk_widget_set_sensitive(
+                       GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
+                       FALSE);
+       gtk_widget_set_sensitive(
+                       GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop),
+                       FALSE);
+       
+       hildon_window_add_toolbar(ws_gui_app->ws_gui_hildon_window,
+                       GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar));
 }
 
 /** this function creates application menu and its items and connect signals to 
@@ -265,7 +277,7 @@ void ws_gui_create_find_toolbar(gpointer user_data)
  */
 void ws_gui_create_main_menu (gpointer user_data) 
 {
-        WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
 
         ws_gui_app->ws_gui_menu->ws_gui_submenu_0 = gtk_menu_new();
         ws_gui_app->ws_gui_menu->ws_gui_submenu_1 = gtk_menu_new();
@@ -329,40 +341,40 @@ void ws_gui_create_main_menu (gpointer user_data)
        gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
                         ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark);
 
-       ws_gui_app->ws_gui_menu->ws_gui_menu_copy = 
-                gtk_menu_item_new_with_label(_("ws_me_edit_copy"));
-       ws_gui_app->ws_gui_menu->ws_gui_menu_paste = 
-                gtk_menu_item_new_with_label(_("ws_me_edit_paste"));
-       ws_gui_app->ws_gui_menu->ws_gui_menu_select_all = 
-                gtk_menu_item_new_with_label(_("ws_me_edit_select_all"));
-       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
-                       ws_gui_app->ws_gui_menu->ws_gui_menu_copy);
-       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
-                       ws_gui_app->ws_gui_menu->ws_gui_menu_paste);
-       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
-                       ws_gui_app->ws_gui_menu->ws_gui_menu_select_all);
-
-       ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list = 
-            gtk_check_menu_item_new_with_label(_("ws_me_view_hide_words_list"));
-       ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in = 
-                gtk_menu_item_new_with_label(_("ws_me_view_zoom_in"));
-       ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out = 
-                gtk_menu_item_new_with_label(_("ws_me_view_zoom_out"));
-       ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen = 
-                gtk_check_menu_item_new_with_label(_("ws_me_view_fullscreen"));
-       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
-                       ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list);
-       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
-                       ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in);
-       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
-                       ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out);
-       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
-                       ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen);
-
-       ws_gui_app->ws_gui_menu->ws_gui_menu_find_word = 
-                gtk_menu_item_new_with_label(_("ws_me_search_find"));
-       ws_gui_app->ws_gui_menu->ws_gui_menu_find_next = 
-               gtk_menu_item_new_with_label(_("ws_me_search_find_next"));
+       ws_gui_app->ws_gui_menu->ws_gui_menu_copy = 
+               gtk_menu_item_new_with_label(_("ws_me_edit_copy"));
+       ws_gui_app->ws_gui_menu->ws_gui_menu_paste = 
+               gtk_menu_item_new_with_label(_("ws_me_edit_paste"));
+       ws_gui_app->ws_gui_menu->ws_gui_menu_select_all = 
+               gtk_menu_item_new_with_label(_("ws_me_edit_select_all"));
+       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
+                       ws_gui_app->ws_gui_menu->ws_gui_menu_copy);
+       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
+                       ws_gui_app->ws_gui_menu->ws_gui_menu_paste);
+       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
+                       ws_gui_app->ws_gui_menu->ws_gui_menu_select_all);
+       
+       ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list = 
+           gtk_check_menu_item_new_with_label(_("ws_me_view_hide_words_list"));
+       ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in = 
+               gtk_menu_item_new_with_label(_("ws_me_view_zoom_in"));
+       ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out = 
+               gtk_menu_item_new_with_label(_("ws_me_view_zoom_out"));
+       ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen = 
+               gtk_check_menu_item_new_with_label(_("ws_me_view_fullscreen"));
+       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
+                       ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list);
+       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
+                       ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in);
+       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
+                       ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out);
+       gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
+                       ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen);
+       
+       ws_gui_app->ws_gui_menu->ws_gui_menu_find_word = 
+               gtk_menu_item_new_with_label(_("ws_me_search_find"));
+       ws_gui_app->ws_gui_menu->ws_gui_menu_find_next = 
+               gtk_menu_item_new_with_label(_("ws_me_search_find_next"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev = 
                gtk_menu_item_new_with_label(_("ws_me_search_find_prev"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_stop = 
@@ -522,7 +534,6 @@ void ws_gui_create_main_menu (gpointer user_data)
                          G_CALLBACK(ws_gui_menu_quit),
                          ws_gui_app);
 
-        
        g_signal_connect(G_OBJECT
                          (ws_gui_app->ws_gui_menu->ws_gui_menu_edit),
                          "activate",
@@ -555,6 +566,8 @@ void ws_gui_create_main_menu (gpointer user_data)
                                (ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev),
                                FALSE);
 
+       
+       
         gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_main_menu);
 }
 
@@ -566,158 +579,193 @@ void ws_gui_create_main_menu (gpointer user_data)
  */
 void ws_gui_create_popup_menu (gpointer user_data)
 {
-       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
-
-       ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
-       ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
-       ws_gui_app->ws_gui_menu->ws_gui_separator = 
-                                                 gtk_separator_menu_item_new();
-
-       struct _GtkHTML *tmp = (struct _GtkHTML *)(ws_gui_app->ws_gui_html);
-
-       ws_gui_app->ws_gui_menu->ws_gui_popup_search = 
-                gtk_menu_item_new_with_label(_("ws_mp_search"));
-       gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
-                       ws_gui_app->ws_gui_menu->ws_gui_popup_search);
-       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
-                        gtk_separator_menu_item_new());
-
-       if (html_engine_is_selection_active(tmp->engine) == TRUE)
-       {
-               gtk_widget_set_sensitive(GTK_WIDGET
-                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
-                                 TRUE);
-       }
-       else 
-       {
-               gtk_widget_set_sensitive(GTK_WIDGET
-                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
-                                 FALSE);
-       }
-
-       ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark = 
-                gtk_menu_item_new_with_label(_("ws_mp_add_bookmark"));
-       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
-                        ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark);
-
-       ws_gui_app->ws_gui_menu->ws_gui_popup_copy = 
-                gtk_menu_item_new_with_label(_("ws_mp_edit_copy"));
-       gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
-                       ws_gui_app->ws_gui_menu->ws_gui_popup_copy);
-
-       ws_gui_app->ws_gui_menu->ws_gui_popup_paste = 
-                gtk_menu_item_new_with_label(_("ws_mp_edit_paste"));
-       gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
-                       ws_gui_app->ws_gui_menu->ws_gui_popup_paste);
-
-       ws_gui_app->ws_gui_menu->ws_gui_popup_select_all = 
-                gtk_menu_item_new_with_label(_("ws_mp_edit_select_all"));
-       gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
-                       ws_gui_app->ws_gui_menu->ws_gui_popup_select_all);
-
-       gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
-
-                ws_gui_app->ws_gui_menu->ws_gui_popup_edit = 
-                gtk_menu_item_new_with_label (_("ws_mp_edit"));
-       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
-                        ws_gui_app->ws_gui_menu->ws_gui_popup_edit);
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       
+       ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
+       ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
+       ws_gui_app->ws_gui_menu->ws_gui_separator = 
+                                               gtk_separator_menu_item_new();
+       
+       ws_gui_app->ws_gui_menu->ws_gui_popup_search = 
+               gtk_menu_item_new_with_label(_("ws_mp_search"));
+       gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
+                       ws_gui_app->ws_gui_menu->ws_gui_popup_search);
+       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
+                       gtk_separator_menu_item_new());
+       ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark = 
+               gtk_menu_item_new_with_label(_("ws_mp_add_bookmark"));
+       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
+                       ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark);
+       
+       ws_gui_app->ws_gui_menu->ws_gui_popup_copy = 
+               gtk_menu_item_new_with_label(_("ws_mp_edit_copy"));
+       gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
+                       ws_gui_app->ws_gui_menu->ws_gui_popup_copy);
+       
+       ws_gui_app->ws_gui_menu->ws_gui_popup_paste = 
+               gtk_menu_item_new_with_label(_("ws_mp_edit_paste"));
+       gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
+                       ws_gui_app->ws_gui_menu->ws_gui_popup_paste);
+       
+       ws_gui_app->ws_gui_menu->ws_gui_popup_select_all = 
+               gtk_menu_item_new_with_label(_("ws_mp_edit_select_all"));
+       gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
+                       ws_gui_app->ws_gui_menu->ws_gui_popup_select_all);
+       
+       gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
+       
+       ws_gui_app->ws_gui_menu->ws_gui_popup_edit = 
+                       gtk_menu_item_new_with_label (_("ws_mp_edit"));
+       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
+                       ws_gui_app->ws_gui_menu->ws_gui_popup_edit);
+       
+       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
+                       ws_gui_app->ws_gui_menu->ws_gui_separator);
+       
+       ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in = 
+               gtk_menu_item_new_with_label (_("ws_mp_zoom_in"));
+       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
+                       ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in);
+       
+       ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out =
+               gtk_menu_item_new_with_label (_("ws_mp_zoom_out"));
+       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
+                       ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out);
+       
+       gtk_menu_item_set_submenu(GTK_MENU_ITEM
+                               (ws_gui_app->ws_gui_menu->ws_gui_popup_edit),
+                               ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
 
-       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
-                        ws_gui_app->ws_gui_menu->ws_gui_separator);
+       struct _GtkHTML *tmp = (struct _GtkHTML *)(ws_gui_app->ws_gui_html);
 
-       ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in = 
-                gtk_menu_item_new_with_label (_("ws_mp_zoom_in"));
-       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
-                        ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in);
-
-       ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out =
-                gtk_menu_item_new_with_label (_("ws_mp_zoom_out"));
-       gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
-                        ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out);
-
-       gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_menu);
-       gtk_menu_item_set_submenu(GTK_MENU_ITEM
-                                 (ws_gui_app->ws_gui_menu->ws_gui_popup_edit),
-                                 ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
-
-       g_signal_connect(G_OBJECT
-                        (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
-                        "activate",
-                        G_CALLBACK(ws_gui_popup_search),
-                        ws_gui_app);
-
-       g_signal_connect(G_OBJECT
-                        (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
-                        "activate",
-                        G_CALLBACK(ws_gui_dictionary_add_bookmark),
-                        ws_gui_app);
-
-       g_signal_connect(G_OBJECT
-                        (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
-                        "activate", 
-                        G_CALLBACK(ws_gui_html_copy),
-                        ws_gui_app);
-       g_signal_connect(G_OBJECT
-                        (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
-                        "activate",
-                        G_CALLBACK(ws_gui_html_paste),
-                        ws_gui_app);
-       g_signal_connect(G_OBJECT
-                        (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
-                        "activate",
-                        G_CALLBACK(ws_gui_html_select_all),
-                        ws_gui_app);
-       g_signal_connect(G_OBJECT
-                        (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in),
-                        "activate",
-                        G_CALLBACK(ws_gui_html_zoom_in), ws_gui_app);
-      g_signal_connect(G_OBJECT
-                       (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out),
-                       "activate",
-                       G_CALLBACK(ws_gui_html_zoom_out),
-                       ws_gui_app);
-
-      if (gtk_clipboard_wait_for_text(ws_gui_app->ws_gui_clipboard) != NULL)
-      {
-               gtk_widget_set_sensitive(GTK_WIDGET
-                                  (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
-                                  TRUE);
-      }
-      else
-      {
-               gtk_widget_set_sensitive(GTK_WIDGET
-                                  (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
-                                  FALSE);
-      }
-
-      if (ws_gui_app->bookmark_mode == TRUE)
-      {
+       if (html_engine_is_selection_active(tmp->engine) == TRUE)
+       {
+               gtk_widget_set_sensitive(GTK_WIDGET
+                               (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
+                               TRUE);
+               gtk_widget_set_sensitive(GTK_WIDGET
+                               (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
+                               TRUE);
+       }
+       else 
+       {
+               gtk_widget_set_sensitive(GTK_WIDGET
+                               (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
+                               FALSE);
+               gtk_widget_set_sensitive(GTK_WIDGET
+                               (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
+                               FALSE);
+       }
+       
+       if (ws_gui_app->html_flag == FALSE)
+       {
+               gtk_widget_set_sensitive(GTK_WIDGET
+                               (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
+                               FALSE);
+       }
+       else
+       {
+               gtk_widget_set_sensitive(GTK_WIDGET
+                               (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
+                               TRUE);
+       }       
+       
+       gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_menu);
+       
+       
+       g_signal_connect(G_OBJECT
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_search),
+                       "activate",
+                       G_CALLBACK(ws_gui_popup_search),
+                       ws_gui_app);
+       
+       g_signal_connect(G_OBJECT
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
+                       "activate",
+                       G_CALLBACK(ws_gui_dictionary_add_bookmark),
+                       ws_gui_app);
+       
+       g_signal_connect(G_OBJECT
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_copy),
+                       "activate", 
+                       G_CALLBACK(ws_gui_html_copy),
+                       ws_gui_app);
+       g_signal_connect(G_OBJECT
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
+                       "activate",
+                       G_CALLBACK(ws_gui_html_paste),
+                       ws_gui_app);
+       g_signal_connect(G_OBJECT
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_select_all),
+                       "activate",
+                       G_CALLBACK(ws_gui_html_select_all),
+                       ws_gui_app);
+       g_signal_connect(G_OBJECT
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in),
+                       "activate",
+                       G_CALLBACK(ws_gui_html_zoom_in), ws_gui_app);
+       g_signal_connect(G_OBJECT
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out),
+                       "activate",
+                       G_CALLBACK(ws_gui_html_zoom_out),
+                       ws_gui_app);
+       
+       if (gtk_clipboard_wait_for_text(ws_gui_app->ws_gui_clipboard) != NULL)
+       {
+               gtk_widget_set_sensitive(GTK_WIDGET
+                               (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
+                               TRUE);
+       }
+       else
+       {
+               gtk_widget_set_sensitive(GTK_WIDGET
+                               (ws_gui_app->ws_gui_menu->ws_gui_popup_paste),
+                               FALSE);
+       }
+       
+       
+       if (ws_gui_app->bookmark_avail == FALSE)
+       {
        gtk_widget_set_sensitive(GTK_WIDGET
-                               (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
-                               FALSE);
-      }
-      else
-      {
-               if (ws_gui_app->last_word != NULL)
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
+                       FALSE);
+       }
+       
+       else
+       {
+       if (ws_gui_app->bookmark_mode == TRUE)
+       {
+               gtk_widget_set_sensitive(GTK_WIDGET
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
+                       FALSE);
+       }
+       else
+       {
+               g_strstrip(ws_gui_app->last_word);
+               //g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nlast_word: %s\n\n", ws_gui_app->last_word);
+               
+               if (ws_gui_app->last_word == NULL || 
+                   (ws_gui_app->last_word[0] == '\0'))
                {
                        gtk_widget_set_sensitive(GTK_WIDGET
-                               (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
-                               TRUE);
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
+                       FALSE);
                }
                else
                {
                        gtk_widget_set_sensitive(GTK_WIDGET
-                               (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
-                               FALSE);
+                       (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
+                       TRUE);
                }
-      }
-      gtk_menu_popup(GTK_MENU(ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
-                     NULL,
-                     NULL,
-                     NULL,
-                     ws_gui_app,
-                     0,
-                     0);
+       }
+       }
+       gtk_menu_popup(GTK_MENU(ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
+                       NULL,
+                       NULL,
+                       NULL,
+                       ws_gui_app,
+                       0,
+                       0);
 }
 
 /** this function creates dialog popup window and allows to select dictionaries
@@ -808,78 +856,100 @@ void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
                                                     FALSE);
                }
 
-               g_array_append_val(checkboxes, checkbutton);
-               gtk_box_pack_start (GTK_BOX (vbox1), 
+                       g_array_append_val(checkboxes, checkbutton);
+                       gtk_box_pack_start (GTK_BOX (vbox1), 
                                   checkbutton, 
                                   FALSE, 
                                   FALSE, 
                                   0);
-               gtk_widget_show (checkbutton);
-       }
-
-       cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
-       gtk_widget_show (cancel_button);
-       gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
-                                     cancel_button,
-                                     GTK_RESPONSE_CANCEL);
-
-       ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
-       gtk_widget_show (ok_button);
-       gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
-                                    ok_button,
-                                    GTK_RESPONSE_OK);
-
-       i = gtk_dialog_run(GTK_DIALOG(dialog1));
-
-       if (i == GTK_RESPONSE_OK) 
-       {
-               for(i=0;i<(checkboxes->len);i++)
-               {
-                       if (gtk_toggle_button_get_active(
-                                GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
-                                                  GtkWidget *, i))) == TRUE)
-                       {
-                               name = gtk_button_get_label(GTK_BUTTON(
-                                    g_array_index(checkboxes, GtkWidget *, i)));
-                               path=g_strconcat(GCONF_PATH,
-                                                "/",
-                                                name,
-                                                "/active",
-                                                NULL);
-                               gconf_client_set_bool(ws_gui_app->client,
-                                                      path,
-                                                      TRUE,
-                                                      NULL);
-                       }
-
-                       if (gtk_toggle_button_get_active(
-                               GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
-                                                     GtkWidget *, i))) == FALSE)
-                       {
-                               name = gtk_button_get_label(GTK_BUTTON(
-                                    g_array_index(checkboxes, GtkWidget *, i)));
-                               path=g_strconcat(GCONF_PATH,
-                                                "/",
-                                                name,
-                                                "/active",
-                                                NULL);
-                               gconf_client_set_bool(ws_gui_app->client,
-                                                     path,
-                                                     FALSE,
-                                                     NULL);
-                       }
-               }
+               
+               if (strcmp(name, "bookmarks") == 0)
+               {
+                       if (ws_gui_app->bookmark_avail == FALSE) 
+                       {
+                       gtk_widget_set_sensitive(GTK_WIDGET(checkbutton),
+                                                FALSE);
+                       }
+               }
 
-               ws_dbus_notify(ws_gui_app->dbus_data, 
-                             WS_DBUS_INFO_CONFIG_CHANGED);
-               gtk_widget_destroy (dialog1);
-       }
-       else if (i == GTK_RESPONSE_CANCEL) 
-       {
-               gtk_widget_destroy (dialog1);
-       }
+               gtk_widget_show (checkbutton);
+               }
 
-       g_slist_free(ws_gui_app->directories);
+       cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
+       gtk_widget_show (cancel_button);
+       gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
+                                       cancel_button,
+                                       GTK_RESPONSE_CANCEL);
+       
+       ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
+       gtk_widget_show (ok_button);
+       gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
+                                       ok_button,
+                                       GTK_RESPONSE_OK);
+       
+       i = gtk_dialog_run(GTK_DIALOG(dialog1));
+       
+       if (i == GTK_RESPONSE_OK) 
+       {
+               for(i=0;i<(checkboxes->len);i++)
+               {
+                       if (gtk_toggle_button_get_active(
+                               GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
+                                               GtkWidget *, i))) == TRUE)
+                       {
+                               name = gtk_button_get_label(GTK_BUTTON(
+                               g_array_index(checkboxes, GtkWidget *, i)));
+                               
+                               path=g_strconcat(GCONF_PATH,
+                                               "/",
+                                               name,
+                                               "/active",
+                                               NULL);
+                               gconf_client_set_bool(ws_gui_app->client,
+                                                       path,
+                                                       TRUE,
+                                                       NULL);
+                       }
+       
+                       if (gtk_toggle_button_get_active(
+                               GTK_TOGGLE_BUTTON(g_array_index(checkboxes,
+                                               GtkWidget *, i))) == FALSE)
+                       {
+                               name = gtk_button_get_label(GTK_BUTTON(
+                               g_array_index(checkboxes, GtkWidget *, i)));
+                               
+                               path=g_strconcat(GCONF_PATH,
+                                               "/",
+                                               name,
+                                               "/active",
+                                               NULL);
+                               gconf_client_set_bool(ws_gui_app->client,
+                                                       path,
+                                                       FALSE,
+                                                       NULL);
+                       }
+               }
+       
+               ws_dbus_notify(ws_gui_app->dbus_data, 
+                               WS_DBUS_INFO_CONFIG_CHANGED);
+
+               if(ws_gui_app->ws_gui_history->len >= 0)
+               {
+               ws_gui_clear_array(ws_gui_app->ws_gui_history);
+               ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
+               ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
+               ws_gui_app->ws_gui_history_cur_pos = -1;
+               }
+               ws_gui_check_history(ws_gui_app);
+       
+               gtk_widget_destroy (dialog1);
+       }
+       else if (i == GTK_RESPONSE_CANCEL) 
+       {
+               gtk_widget_destroy (dialog1);
+       }
+       
+       g_slist_free(ws_gui_app->directories);
 }
 
 /** this function creates dialog popup window and allows optimize dictionaries
@@ -949,9 +1019,9 @@ void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
                {
                         gtk_widget_destroy(ws_gui_app->ws_message_dialog);
                }
-       }
-       else
-       {
+               }
+               else
+               {
                 dialog1 = gtk_dialog_new ();
                 gtk_window_set_title(GTK_WINDOW (dialog1),
                                      (_("ws_ti_choose_dictionaries_title")));
@@ -1070,27 +1140,12 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
 
         GtkWidget *dialog;
-        GtkWidget *dialog2;
-
-        /*dialog = gtk_file_chooser_dialog_new(_("ws_ti_load_dictionary_title"),
-                                   GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
-                                   GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_OK,
-                                   GTK_RESPONSE_OK,
-                                   GTK_STOCK_CANCEL,
-                                   GTK_RESPONSE_CANCEL,
-                                   NULL);*/
-       
+  //      GtkWidget *dialog2;  
 
        dialog = hildon_file_chooser_dialog_new(
                                GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
                                GTK_FILE_CHOOSER_ACTION_OPEN);
  
-
-       /*dialog = hildon_file_chooser_dialog_new(
-               GTK_WINDOW(ws_gui_app->ws_gui_hildon_window), 
-                          GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
-       */
-
        gtk_window_set_default_size(GTK_WINDOW (dialog), 200, 200);
         gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), FALSE);
 
@@ -1100,20 +1155,21 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
         { 
                 gchar *filename;
                 gchar *name;
-                gchar *path;
+             //   gchar *path;
                 gint len;
-                gchar *filepath;
+              //  gchar *filepath;
 
                 gchar* tmp;
-
+               
                 filename = gtk_file_chooser_get_filename(
                                                      GTK_FILE_CHOOSER (dialog));
                 name = g_path_get_basename(filename);
                 len = strlen(filename) - strlen(name) -1;
                 tmp = g_strndup (filename, len);
-
+                               
+               
                 tmp = g_path_get_basename(tmp);
-
+               
                 if (g_str_has_suffix(name, ".xdxf") 
                        || g_str_has_suffix(name, ".idx") 
                        || g_str_has_suffix(name, ".ifo")
@@ -1121,102 +1177,138 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
                        || g_str_has_suffix(name, ".dict")
                        || g_str_has_suffix(name, ".dict.dz"))
                 {
-                        len = strlen(filename) - strlen(name) -1;
-                        filepath = g_strndup (filename, len);
-                        path = g_strconcat(GCONF_PATH, "/", tmp, "/path", NULL);
-                        gconf_client_set_string(ws_gui_app->client,
-                                                path,
-                                                filepath,
-                                                NULL);
-                        g_free(path); 
-                       path = NULL;
-                       path = g_strconcat(GCONF_PATH,
-                                           "/",
-                                           tmp,
-                                           "/active",
-                                           NULL);
-                        gtk_widget_destroy (dialog);
-
-                        dialog2 = gtk_message_dialog_new(GTK_WINDOW(
-                                              ws_gui_app->ws_gui_hildon_window),
-                                              GTK_DIALOG_DESTROY_WITH_PARENT,
-                                              GTK_MESSAGE_QUESTION,
-                                              GTK_BUTTONS_YES_NO,
-                       _("ws_ni_dictionaries_activation_question"));
-
-                        gtk_widget_show_all(GTK_WIDGET(dialog2));
-
-                        if (gtk_dialog_run (GTK_DIALOG (dialog2)) ==
-                                 GTK_RESPONSE_YES)
-                        {
-                                gconf_client_set_bool(ws_gui_app->client,
-                                                      path,
-                                                      TRUE,
-                                                      NULL);
-                        }
-                        else 
-                        {
-                                gconf_client_set_bool(ws_gui_app->client,
-                                                      path,
-                                                      FALSE,
-                                                      NULL);
-                        }
-                        gtk_widget_destroy (dialog2);
-                        g_free(path); 
-                       path = NULL;
-
-                        path = g_strconcat(GCONF_PATH,
-                                           "/",
-                                           tmp,
-                                           "/optimized",
-                                            NULL);
-                        dialog2 = gtk_message_dialog_new(
-                               GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
-                               GTK_DIALOG_DESTROY_WITH_PARENT,
-                               GTK_MESSAGE_QUESTION,
-                               GTK_BUTTONS_YES_NO,
-                               _("ws_ni_dictionaries_optimalization_question"));
-
-                       gtk_widget_show_all(GTK_WIDGET(dialog2));
-
-                        if (gtk_dialog_run (GTK_DIALOG (dialog2)) 
-                                                            == GTK_RESPONSE_YES)
-                        {
-                           gconf_client_set_bool(ws_gui_app->client,
-                                                 path,
-                                                 TRUE,
-                                                 NULL);
-                        }
-                        else 
-                        {
-                                gconf_client_set_bool(ws_gui_app->client,
-                                                      path,
-                                                      FALSE,
-                                                      NULL);
-                        }
-                        gtk_widget_destroy (dialog2);
-
-                        ws_dbus_notify(ws_gui_app->dbus_data,
-                                       WS_DBUS_INFO_CONFIG_CHANGED);
-                        gtk_infoprint(GTK_WINDOW(
+                       g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n:::GUUUUIII GUIII::: check");
+                       if (ws_gui_load_dict(filename, ws_gui_app) == TRUE)
+                       {
+                               gtk_widget_destroy(dialog);
+                               gtk_infoprint(GTK_WINDOW(
                                       ws_gui_app->ws_gui_hildon_window),
                                       _("ws_ni_dictionary_added"));
+                       } 
                 }
+               else if (g_str_has_suffix(name, ".bz2"))
+               {
+                       gtk_widget_destroy(dialog);     
+                       ws_dbus_extract_dictionary(ws_gui_app->dbus_data, filename);
+               }
                 else
                 {
-                        gtk_widget_destroy (dialog2);
+                        gtk_widget_destroy (dialog);
                         gtk_infoprint(GTK_WINDOW(
                                       ws_gui_app->ws_gui_hildon_window),
                                       _("ws_ni_dictionary_wrong_file"));
-                       gtk_widget_destroy (dialog);
                 }
 
-       }
-       else 
-       {
-                gtk_widget_destroy (dialog);
-       }
+               }
+               else 
+               {
+               gtk_widget_destroy (dialog);
+               }
+
+}
+
+/** this function creates dialog popup window which allows to load dictionary
+ *
+ * @param filename - the object which received the signal
+ * @param user_data - set when the signal handler was connected
+ */
+gboolean ws_gui_load_dict(gchar *filename, gpointer user_data)
+{
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+
+       GtkWidget *dialog1;
+       GtkWidget *dialog2;
+       gchar *name = g_path_get_basename(filename);
+       gchar *path;
+       gint len;
+       gchar *filepath;
+
+       len = strlen(filename) - strlen(name) -1;
+       gchar *tmp = g_strndup (filename, len);;
+       tmp = g_path_get_basename(tmp);
+       
+       filepath = g_strndup (filename, len);
+        path = g_strconcat(GCONF_PATH, "/", tmp, "/path", NULL);
+        gconf_client_set_string(ws_gui_app->client,
+                               path,
+                                filepath,
+                                NULL);
+       g_free(path); 
+       path = NULL;
+       path = g_strconcat(GCONF_PATH,
+                               "/",
+                                tmp,
+                                "/active",
+                                NULL);
+       
+        dialog1 = gtk_message_dialog_new(GTK_WINDOW(
+                                         ws_gui_app->ws_gui_hildon_window),
+                                         GTK_DIALOG_DESTROY_WITH_PARENT,
+                                         GTK_MESSAGE_QUESTION,
+                                         GTK_BUTTONS_YES_NO,
+                                       _("ws_ni_dictionaries_activation_question"));
+
+        gtk_widget_show_all(GTK_WIDGET(dialog1));
+
+        if (gtk_dialog_run (GTK_DIALOG (dialog1)) == GTK_RESPONSE_YES)
+        {
+               gconf_client_set_bool(ws_gui_app->client,
+                                        path,
+                                        TRUE,
+                                        NULL);
+        }
+        else 
+        {
+               gconf_client_set_bool(ws_gui_app->client,
+                                        path,
+                                        FALSE,
+                                        NULL);
+        }
+       gtk_widget_destroy (dialog1);
+       g_free(path); 
+       path = NULL;
+
+       path = g_strconcat(GCONF_PATH, "/", tmp, "/optimized", NULL);
+
+       dialog2 = gtk_message_dialog_new(
+               GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
+               GTK_DIALOG_DESTROY_WITH_PARENT,
+               GTK_MESSAGE_QUESTION,
+               GTK_BUTTONS_YES_NO,
+               _("ws_ni_dictionaries_optimalization_question"));
+
+       gtk_widget_show_all(GTK_WIDGET(dialog2));
+
+       if (gtk_dialog_run (GTK_DIALOG (dialog2)) == GTK_RESPONSE_YES)
+       {
+               gconf_client_set_bool(ws_gui_app->client,
+                                       path,
+                                       TRUE,
+                                       NULL);
+       }
+       else 
+       {
+               gconf_client_set_bool(ws_gui_app->client,
+                                       path,
+                                       FALSE,
+                                       NULL);
+       }
+       gtk_widget_destroy (dialog2);
+
+       if(ws_gui_app->ws_gui_history->len > 0)
+       {
+               ws_gui_clear_array(ws_gui_app->ws_gui_history);
+               ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
+               ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
+               ws_gui_app->ws_gui_history_cur_pos = -1;
+       }
+       ws_gui_check_history(ws_gui_app);
 
+       ws_dbus_notify(ws_gui_app->dbus_data,
+                               WS_DBUS_INFO_CONFIG_CHANGED);
+       
+       return TRUE;
 }
 
 /** this function creates dialog popup window which allows to remove dictionary
@@ -1232,7 +1324,7 @@ void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
         GtkWidget *dialog1;
         GtkWidget *dialog_vbox1;
         GtkWidget *scrolledwindow1;
-        GtkWidget *viewport1;
+       GtkWidget *viewport1;
         GtkWidget *vbox1;
         GtkWidget *checkbutton;
         GtkWidget *cancel_button;
@@ -1338,6 +1430,15 @@ void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
                         } 
                  }
 
+               if(ws_gui_app->ws_gui_history->len >= 0)
+               {
+                       ws_gui_clear_array(ws_gui_app->ws_gui_history);
+                       ws_gui_clear_array(ws_gui_app->ws_gui_history_list);
+                       ws_gui_clear_array(ws_gui_app->ws_gui_history_iter);
+                       ws_gui_app->ws_gui_history_cur_pos = -1;
+               }
+               ws_gui_check_history(ws_gui_app);               
+
                 ws_dbus_notify(ws_gui_app->dbus_data, 
                               WS_DBUS_INFO_CONFIG_CHANGED);
                gtk_infoprint(GTK_WINDOW(