+ev_window_load_print_page_setup_from_metadata (EvWindow *window,
+ GtkPageSetup *page_setup)
+{
+ gint int_value;
+ gdouble double_value;
+ GtkPaperSize *paper_size = gtk_page_setup_get_paper_size (page_setup);
+
+ /* Load page setup options that are specific to the document */
+ if (window->priv->metadata &&
+ ev_metadata_get_int (window->priv->metadata, "page-setup-orientation", &int_value)) {
+ gtk_page_setup_set_orientation (page_setup, int_value);
+ } else {
+ gtk_page_setup_set_orientation (page_setup, GTK_PAGE_ORIENTATION_PORTRAIT);
+ }
+
+ if (window->priv->metadata &&
+ ev_metadata_get_double (window->priv->metadata, "page-setup-margin-top", &double_value)) {
+ gtk_page_setup_set_top_margin (page_setup, double_value, GTK_UNIT_MM);
+ } else {
+ gtk_page_setup_set_top_margin (page_setup,
+ gtk_paper_size_get_default_top_margin (paper_size, GTK_UNIT_MM),
+ GTK_UNIT_MM);
+ }
+
+ 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)