working on bug with GtkTreeView
[mdictionary] / src / gui / src / ws_gui_layout.c
index d7edd89..6b99a09 100644 (file)
@@ -66,8 +66,7 @@ void ws_gui_create_window(gpointer user_data)
        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->history_mode = 0;
-
+       
         ws_gui_app->ws_gui_hildon_program = 
         HILDON_PROGRAM(hildon_program_get_instance());
 
@@ -167,7 +166,7 @@ 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_SINGLE);
+                                     GTK_SELECTION_BROWSE);
        
        ws_gui_app->directories = g_slist_alloc();
        ws_gui_set_bookmarks_sensitivity(ws_gui_app);
@@ -177,6 +176,10 @@ void ws_gui_create_window(gpointer user_data)
                                    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(ws_gui_app->welcome_note);
 }
@@ -738,17 +741,21 @@ void ws_gui_create_popup_menu (gpointer user_data)
        }
        else
        {
-               if (ws_gui_app->last_word != NULL)
+               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);
+                       FALSE);
                }
                else
                {
                        gtk_widget_set_sensitive(GTK_WIDGET
                        (ws_gui_app->ws_gui_menu->ws_gui_popup_bookmark),
-                       FALSE);
+                       TRUE);
                }
        }
        }
@@ -1133,7 +1140,7 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
 
         GtkWidget *dialog;
-        GtkWidget *dialog2;    
+  //      GtkWidget *dialog2;  
 
        dialog = hildon_file_chooser_dialog_new(
                                GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
@@ -1148,9 +1155,9 @@ 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;
                
@@ -1160,9 +1167,9 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
                 len = strlen(filename) - strlen(name) -1;
                 tmp = g_strndup (filename, len);
                                
+               
                 tmp = g_path_get_basename(tmp);
-               //gchar *tmp2 = g_strndup(name, (g_strrstr(name, ".") - name));
-
+               
                 if (g_str_has_suffix(name, ".xdxf") 
                        || g_str_has_suffix(name, ".idx") 
                        || g_str_has_suffix(name, ".ifo")
@@ -1170,151 +1177,26 @@ 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);
-
-                       if(ws_gui_app->ws_gui_history->len >= 0)
+                       g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n:::GUUUUIII GUIII::: check");
+                       if (ws_gui_load_dict(filename, ws_gui_app) == TRUE)
                        {
-                       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(
+                               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"))
                {
-                       GtkWidget *dialog_optimize;
-                       GtkWidget *dialog_activate;
-                       gboolean optimize;
-                       gboolean activate;
-
-                       dialog_activate = 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"));
-
-                       
-                        if (gtk_dialog_run (GTK_DIALOG (dialog_activate)) 
-                                                            == GTK_RESPONSE_YES)
-                        {
-                               activate = TRUE;
-                               gtk_widget_destroy (dialog_activate);
-                       }
-                       else 
-                       {
-                               activate = FALSE;
-                               gtk_widget_destroy (dialog_activate);
-                       }
-                       
-                       dialog_optimize = 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"));
-
-                       
-                        if (gtk_dialog_run (GTK_DIALOG (dialog_optimize)) 
-                                                            == GTK_RESPONSE_YES)
-                        {
-                               optimize = TRUE;
-                               gtk_widget_destroy (dialog_optimize);
-                       }
-                       else 
-                       {
-                               optimize = FALSE;
-                               gtk_widget_destroy (dialog_optimize);
-                       }
-
+                       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);
                 }
 
                }
@@ -1325,6 +1207,110 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
 
 }
 
+/** 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
  *  which is no longer used
  *