Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ev-application.c61
-rw-r--r--shell/ev-application.h4
-rw-r--r--shell/ev-window.c102
3 files changed, 81 insertions, 86 deletions
diff --git a/shell/ev-application.c b/shell/ev-application.c
index cc271f5..e2f0663 100644
--- a/shell/ev-application.c
+++ b/shell/ev-application.c
@@ -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,
diff --git a/shell/ev-application.h b/shell/ev-application.h
index 731670d..c08d3e8 100644
--- a/shell/ev-application.h
+++ b/shell/ev-application.h
@@ -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);
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 0c29e2a..f6000bb 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -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");