Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2005-07-31 13:06:37 (GMT)
committer Christian Persch <chpe@src.gnome.org>2005-07-31 13:06:37 (GMT)
commit5e2fe15d5965ed397f8bb3631c77926abba3ee99 (patch)
tree15588b9953f2a45acfa1b5d6a24b19241dbaded3 /shell
parent2a08b88d7fc1397335cc85812b8f2bd4d53125d9 (diff)
Persist the print settings. Fixes bug #311578.
2005-07-31 Christian Persch <chpe@cvs.gnome.org> * shell/ev-window.c: (load_print_config_from_file), (save_print_config_to_file), (ev_window_print_range): Persist the print settings. Fixes bug #311578.
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-window.c53
1 files changed, 51 insertions, 2 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 64d4967..cef9c24 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -157,6 +157,8 @@ static const GtkTargetEntry ev_drop_types[] = {
#define SIDEBAR_DEFAULT_SIZE 132
+#define PRINT_CONFIG_FILENAME "ev-print-config.xml"
+
static void ev_window_update_fullscreen_popup (EvWindow *window);
static void ev_window_sidebar_visibility_changed_cb (EvSidebar *ev_sidebar,
GParamSpec *pspec,
@@ -1296,6 +1298,49 @@ using_postscript_printer (GnomePrintConfig *config)
return FALSE;
}
+static GnomePrintConfig *
+load_print_config_from_file (void)
+{
+ GnomePrintConfig *print_config = NULL;
+ char *file_name, *contents = NULL;
+
+ file_name = g_build_filename (ev_dot_dir (), PRINT_CONFIG_FILENAME,
+ NULL);
+
+ if (g_file_get_contents (file_name, &contents, NULL, NULL)) {
+ print_config = gnome_print_config_from_string (contents, 0);
+ g_free (contents);
+ }
+
+ if (print_config == NULL) {
+ print_config = gnome_print_config_default ();
+ }
+
+ g_free (file_name);
+
+ return print_config;
+}
+
+static void
+save_print_config_to_file (GnomePrintConfig *config)
+{
+ char *file_name, *str;
+
+ g_return_if_fail (config != NULL);
+
+ str = gnome_print_config_to_string (config, 0);
+ if (str == NULL) return;
+
+ file_name = g_build_filename (ev_dot_dir (),
+ PRINT_CONFIG_FILENAME,
+ NULL);
+
+ g_file_set_contents (file_name, str, -1, NULL);
+
+ g_free (file_name);
+ g_free (str);
+}
+
static void
ev_window_print (EvWindow *window)
{
@@ -1332,7 +1377,7 @@ ev_window_print_range (EvWindow *ev_window, int first_page, int last_page)
last_page = ev_page_cache_get_n_pages (page_cache);
}
- config = gnome_print_config_default ();
+ config = load_print_config_from_file ();
job = gnome_print_job_new (config);
print_dialog = gnome_print_dialog_new (job, (guchar *) _("Print"),
@@ -1390,6 +1435,8 @@ ev_window_print_range (EvWindow *ev_window, int first_page, int last_page)
continue;
}
+ save_print_config_to_file (config);
+
print_job = g_object_new (EV_TYPE_PRINT_JOB,
"gnome_print_job", job,
"document", ev_window->priv->document,
@@ -1404,6 +1451,8 @@ ev_window_print_range (EvWindow *ev_window, int first_page, int last_page)
ev_print_job_print (print_job, GTK_WINDOW (ev_window));
g_object_unref (print_job);
}
+
+ g_object_unref (config);
}
static void
@@ -1986,7 +2035,7 @@ ev_window_cmd_edit_toolbar (GtkAction *action, EvWindow *ev_window)
{
GtkWidget *dialog;
GtkWidget *editor;
-
+
dialog = gtk_dialog_new_with_buttons (_("Toolbar editor"),
GTK_WINDOW (ev_window),
GTK_DIALOG_DESTROY_WITH_PARENT,