]> www.fi.muni.cz Git - evince.git/commitdiff
Move load/save toolbars model from EvApplication to EvWindow
authorCarlos Garcia Campos <carlosgc@gnome.org>
Fri, 23 Oct 2009 09:12:28 +0000 (11:12 +0200)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Fri, 23 Oct 2009 09:12:28 +0000 (11:12 +0200)
shell/ev-application.c
shell/ev-application.h
shell/ev-window.c

index cc271f5d64c3cc6390050a0b67e58f3e65b2efca..e2f066344b212a0e32a6070773e503d9c9f08ade 100644 (file)
@@ -66,15 +66,12 @@ struct _EvApplication {
        gchar *dot_dir;
        gchar *data_dir;
        gchar *accel_map_file;
-       gchar *toolbars_file;
 
 #ifdef ENABLE_DBUS
        DBusGConnection *connection;
        EvMediaPlayerKeys *keys;
 #endif
 
-       EggToolbarsModel *toolbars_model;
-
        TotemScrsaver *scr_saver;
 
 #ifdef WITH_SMCLIENT
@@ -807,13 +804,6 @@ ev_application_shutdown (EvApplication *application)
                application->accel_map_file = NULL;
        }
        
-       if (application->toolbars_model) {
-               g_object_unref (application->toolbars_model);
-               g_free (application->toolbars_file);
-               application->toolbars_model = NULL;
-               application->toolbars_file = NULL;
-       }
-
 #ifdef ENABLE_DBUS
        if (application->keys) {
                g_object_unref (application->keys);
@@ -848,9 +838,7 @@ ev_application_class_init (EvApplicationClass *ev_application_class)
 static void
 ev_application_init (EvApplication *ev_application)
 {
-       gint i;
        const gchar *home_dir;
-       gchar *toolbar_path;
        GError *error = NULL;
 
         ev_application->dot_dir = g_build_filename (g_get_home_dir (),
@@ -885,42 +873,6 @@ ev_application_init (EvApplication *ev_application)
                                                                   NULL);
                gtk_accel_map_load (ev_application->accel_map_file);
        }
-       
-       ev_application->toolbars_model = egg_toolbars_model_new ();
-
-       ev_application->toolbars_file = g_build_filename
-                       (ev_application->dot_dir, "evince_toolbar.xml", NULL);
-
-       toolbar_path = g_build_filename (ev_application->data_dir,
-                                        "evince-toolbar.xml", NULL);
-       egg_toolbars_model_load_names (ev_application->toolbars_model,
-                                      toolbar_path);
-
-       if (!egg_toolbars_model_load_toolbars (ev_application->toolbars_model,
-                                              ev_application->toolbars_file)) {
-               egg_toolbars_model_load_toolbars (ev_application->toolbars_model,
-                                                 toolbar_path);
-       }
-       g_free (toolbar_path);
-
-       /* Open item doesn't exist anymore,
-        * convert it to OpenRecent for compatibility
-        */
-       for (i = 0; i < egg_toolbars_model_n_items (ev_application->toolbars_model, 0); i++) {
-               const gchar *item;
-               
-               item = egg_toolbars_model_item_nth (ev_application->toolbars_model, 0, i);
-               if (g_ascii_strcasecmp (item, "FileOpen") == 0) {
-                       egg_toolbars_model_remove_item (ev_application->toolbars_model, 0, i);
-                       egg_toolbars_model_add_item (ev_application->toolbars_model, 0, i,
-                                                    "FileOpenRecent");
-                       ev_application_save_toolbars_model (ev_application);
-                       break;
-               }
-       }
-
-       egg_toolbars_model_set_flags (ev_application->toolbars_model, 0,
-                                     EGG_TB_MODEL_NOT_REMOVABLE);
 
 #ifdef ENABLE_DBUS
        ev_application->connection = dbus_g_bus_get (DBUS_BUS_STARTER, &error);
@@ -972,19 +924,6 @@ ev_application_get_media_keys (EvApplication *application)
 #endif /* ENABLE_DBUS */
 }
 
-EggToolbarsModel *
-ev_application_get_toolbars_model (EvApplication *application)
-{
-       return application->toolbars_model;
-}
-
-void
-ev_application_save_toolbars_model (EvApplication *application)
-{
-        egg_toolbars_model_save_toolbars (application->toolbars_model,
-                                         application->toolbars_file, "1.0");
-}
-
 void
 ev_application_set_filechooser_uri (EvApplication       *application,
                                    GtkFileChooserAction action,
index 731670d1b28f52909b760f0ba166b218d26da14c..c08d3e8ef18c789d89d8c2542ec0625671498159 100644 (file)
@@ -30,8 +30,6 @@
 #include <glib.h>
 #include <gtk/gtk.h>
 
-#include "egg-toolbars-model.h"
-
 #include "ev-window.h"
 
 G_BEGIN_DECLS
@@ -71,8 +69,6 @@ gboolean        ev_application_has_window          (EvApplication   *application);
 const gchar *     ev_application_get_uri             (EvApplication   *application);
 GObject                 *ev_application_get_media_keys      (EvApplication   *application);
 
-EggToolbarsModel *ev_application_get_toolbars_model  (EvApplication   *application);
-void              ev_application_save_toolbars_model (EvApplication   *application);
 void             ev_application_set_filechooser_uri (EvApplication   *application,
                                                      GtkFileChooserAction action,
                                                      const gchar     *uri);
index 0c29e2a68b04f16feaca64fb78863440a2f7680a..f6000bb40825763983f4d769ffd1fadb6c60ef44 100644 (file)
@@ -231,6 +231,8 @@ struct _EvWindowPrivate {
 #define EV_PRINT_SETTINGS_GROUP "Print Settings"
 #define EV_PAGE_SETUP_GROUP     "Page Setup"
 
+#define EV_TOOLBARS_FILENAME "evince-toolbar.xml"
+
 #define MIN_SCALE 0.05409
 #define MAX_SCALE 4.0
 
@@ -3778,42 +3780,54 @@ ev_window_cmd_edit_rotate_right (GtkAction *action, EvWindow *ev_window)
 }
 
 static void
-ev_window_cmd_edit_toolbar_cb (GtkDialog *dialog, gint response, gpointer data)
+ev_window_cmd_edit_toolbar_cb (GtkDialog *dialog,
+                              gint       response,
+                              EvWindow  *ev_window)
 {
-       EvWindow *ev_window = EV_WINDOW (data);
-        egg_editable_toolbar_set_edit_mode
-                       (EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar), FALSE);
-       ev_application_save_toolbars_model (EV_APP);
+       EggEditableToolbar *toolbar;
+       gchar              *toolbars_file;
+
+       toolbar = EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar);
+        egg_editable_toolbar_set_edit_mode (toolbar, FALSE);
+
+       toolbars_file = g_build_filename (ev_application_get_dot_dir (EV_APP),
+                                         "evince_toolbar.xml", NULL);
+       egg_toolbars_model_save_toolbars (egg_editable_toolbar_get_model (toolbar),
+                                         toolbars_file, "1.0");
+       g_free (toolbars_file);
+
         gtk_widget_destroy (GTK_WIDGET (dialog));
 }
 
 static void
 ev_window_cmd_edit_toolbar (GtkAction *action, EvWindow *ev_window)
 {
-       GtkWidget *dialog;
-       GtkWidget *editor;
+       GtkWidget          *dialog;
+       GtkWidget          *editor;
+       EggEditableToolbar *toolbar;
 
        dialog = gtk_dialog_new_with_buttons (_("Toolbar Editor"),
-                                             GTK_WINDOW (ev_window), 
-                                             GTK_DIALOG_DESTROY_WITH_PARENT, 
+                                             GTK_WINDOW (ev_window),
+                                             GTK_DIALOG_DESTROY_WITH_PARENT,
                                              GTK_STOCK_CLOSE,
-                                             GTK_RESPONSE_CLOSE, 
+                                             GTK_RESPONSE_CLOSE,
                                              NULL);
        gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
        gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)), 5);
        gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 2);
        gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
        gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400);
-         
+
+       toolbar = EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar);
        editor = egg_toolbar_editor_new (ev_window->priv->ui_manager,
-                                        ev_application_get_toolbars_model (EV_APP));
+                                        egg_editable_toolbar_get_model (toolbar));
+
        gtk_container_set_border_width (GTK_CONTAINER (editor), 5);
        gtk_box_set_spacing (GTK_BOX (EGG_TOOLBAR_EDITOR (editor)), 5);
-             
+
        gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), editor);
 
-       egg_editable_toolbar_set_edit_mode
-               (EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar), TRUE);
+       egg_editable_toolbar_set_edit_mode (toolbar, TRUE);
 
        g_signal_connect (dialog, "response",
                          G_CALLBACK (ev_window_cmd_edit_toolbar_cb),
@@ -5882,6 +5896,49 @@ ev_window_media_player_key_pressed (EvWindow    *window,
        }
 }
 
+static EggToolbarsModel *
+get_toolbars_model (void)
+{
+       EggToolbarsModel *toolbars_model;
+       gchar            *toolbars_file;
+       gchar            *toolbars_path;
+       gint              i;
+
+       toolbars_model = egg_toolbars_model_new ();
+
+       toolbars_file = g_build_filename (ev_application_get_dot_dir (EV_APP),
+                                         "evince_toolbar.xml", NULL);
+       toolbars_path = g_build_filename (ev_application_get_data_dir (EV_APP),
+                                        "evince-toolbar.xml", NULL);
+       egg_toolbars_model_load_names (toolbars_model, toolbars_path);
+
+       if (!egg_toolbars_model_load_toolbars (toolbars_model, toolbars_file)) {
+               egg_toolbars_model_load_toolbars (toolbars_model, toolbars_path);
+       }
+       g_free (toolbars_path);
+
+       /* Open item doesn't exist anymore,
+        * convert it to OpenRecent for compatibility
+        */
+       for (i = 0; i < egg_toolbars_model_n_items (toolbars_model, 0); i++) {
+               const gchar *item;
+
+               item = egg_toolbars_model_item_nth (toolbars_model, 0, i);
+               if (g_ascii_strcasecmp (item, "FileOpen") == 0) {
+                       egg_toolbars_model_remove_item (toolbars_model, 0, i);
+                       egg_toolbars_model_add_item (toolbars_model, 0, i,
+                                                    "FileOpenRecent");
+                       egg_toolbars_model_save_toolbars (toolbars_model, toolbars_file, "1.0");
+                       break;
+               }
+       }
+       g_free (toolbars_file);
+
+       egg_toolbars_model_set_flags (toolbars_model, 0, EGG_TB_MODEL_NOT_REMOVABLE);
+
+       return toolbars_model;
+}
+
 static void
 ev_window_init (EvWindow *ev_window)
 {
@@ -5889,6 +5946,7 @@ ev_window_init (EvWindow *ev_window)
        GtkAccelGroup *accel_group;
        GError *error = NULL;
        GtkWidget *sidebar_widget;
+       EggToolbarsModel *toolbars_model;
        GObject *mpkeys;
        gchar *ui_path;
        gdouble dpi;
@@ -5973,12 +6031,14 @@ ev_window_init (EvWindow *ev_window)
                            ev_window->priv->menubar,
                            FALSE, FALSE, 0);
 
-       ev_window->priv->toolbar = GTK_WIDGET 
-         (g_object_new (EGG_TYPE_EDITABLE_TOOLBAR,
-                        "ui-manager", ev_window->priv->ui_manager,
-                        "popup-path", "/ToolbarPopup",
-                        "model", ev_application_get_toolbars_model (EV_APP),
-                        NULL));
+       toolbars_model = get_toolbars_model ();
+       ev_window->priv->toolbar = GTK_WIDGET
+               (g_object_new (EGG_TYPE_EDITABLE_TOOLBAR,
+                              "ui-manager", ev_window->priv->ui_manager,
+                              "popup-path", "/ToolbarPopup",
+                              "model", toolbars_model,
+                              NULL));
+       g_object_unref (toolbars_model);
 
        egg_editable_toolbar_show (EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar),
                                   "DefaultToolBar");