+
+ if (window->priv->metadata &&
+ ev_metadata_get_double (window->priv->metadata, "page-setup-margin-bottom", &double_value)) {
+ gtk_page_setup_set_bottom_margin (page_setup, double_value, GTK_UNIT_MM);
+ } else {
+ gtk_page_setup_set_bottom_margin (page_setup,
+ gtk_paper_size_get_default_bottom_margin (paper_size, GTK_UNIT_MM),
+ GTK_UNIT_MM);
+ }
+
+ if (window->priv->metadata &&
+ ev_metadata_get_double (window->priv->metadata, "page-setup-margin-left", &double_value)) {
+ gtk_page_setup_set_left_margin (page_setup, double_value, GTK_UNIT_MM);
+ } else {
+ gtk_page_setup_set_left_margin (page_setup,
+ gtk_paper_size_get_default_left_margin (paper_size, GTK_UNIT_MM),
+ GTK_UNIT_MM);
+ }
+
+ if (window->priv->metadata &&
+ ev_metadata_get_double (window->priv->metadata, "page-setup-margin-right", &double_value)) {
+ gtk_page_setup_set_right_margin (page_setup, double_value, GTK_UNIT_MM);
+ } else {
+ gtk_page_setup_set_right_margin (page_setup,
+ gtk_paper_size_get_default_right_margin (paper_size, GTK_UNIT_MM),
+ GTK_UNIT_MM);
+ }
+}
+
+static GtkPrintSettings *
+get_print_settings (GKeyFile *key_file)
+{
+ GtkPrintSettings *print_settings;
+
+ print_settings = g_key_file_has_group (key_file, EV_PRINT_SETTINGS_GROUP) ?
+ gtk_print_settings_new_from_key_file (key_file, EV_PRINT_SETTINGS_GROUP, NULL) :
+ gtk_print_settings_new ();
+
+ return print_settings ? print_settings : gtk_print_settings_new ();
+}
+
+static GtkPageSetup *
+get_print_page_setup (GKeyFile *key_file)
+{
+ GtkPageSetup *page_setup;
+
+ page_setup = g_key_file_has_group (key_file, EV_PAGE_SETUP_GROUP) ?
+ gtk_page_setup_new_from_key_file (key_file, EV_PAGE_SETUP_GROUP, NULL) :
+ gtk_page_setup_new ();
+
+ return page_setup ? page_setup : gtk_page_setup_new ();
+}
+
+static void
+ev_window_print_page_setup_done_cb (GtkPageSetup *page_setup,
+ EvWindow *window)
+{
+ /* Dialog was canceled */
+ if (!page_setup)
+ return;
+
+ ev_window_save_print_page_setup (window, page_setup);
+}
+
+static void
+ev_window_cmd_file_print_setup (GtkAction *action,
+ EvWindow *ev_window)
+{
+ GKeyFile *print_settings_file;
+ GtkPrintSettings *print_settings;
+ GtkPageSetup *print_page_setup;
+
+ print_settings_file = get_print_settings_file ();
+
+ print_settings = get_print_settings (print_settings_file);
+ ev_window_load_print_settings_from_metadata (ev_window, print_settings);
+
+ print_page_setup = get_print_page_setup (print_settings_file);
+ ev_window_load_print_page_setup_from_metadata (ev_window, print_page_setup);
+
+ gtk_print_run_page_setup_dialog_async (GTK_WINDOW (ev_window),
+ print_page_setup,
+ print_settings,
+ (GtkPageSetupDoneFunc)ev_window_print_page_setup_done_cb,
+ ev_window);
+ g_object_unref (print_settings);
+ g_object_unref (print_page_setup);
+ g_key_file_free (print_settings_file);