Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ev-print-operation.c85
-rw-r--r--shell/ev-print-operation.h3
-rw-r--r--shell/ev-window.c22
3 files changed, 107 insertions, 3 deletions
diff --git a/shell/ev-print-operation.c b/shell/ev-print-operation.c
index 08c655d..8d4df9f 100644
--- a/shell/ev-print-operation.c
+++ b/shell/ev-print-operation.c
@@ -78,6 +78,9 @@ struct _EvPrintOperationClass {
void (* cancel) (EvPrintOperation *op);
void (* get_error) (EvPrintOperation *op,
GError **error);
+ void (* set_embed_page_setup) (EvPrintOperation *op,
+ gboolean embed);
+ gboolean (* get_embed_page_setup) (EvPrintOperation *op);
/* signals */
void (* done) (EvPrintOperation *op,
@@ -282,6 +285,33 @@ ev_print_operation_get_error (EvPrintOperation *op,
class->get_error (op, error);
}
+void
+ev_print_operation_set_embed_page_setup (EvPrintOperation *op,
+ gboolean embed)
+{
+#if GTK_CHECK_VERSION (2, 17, 4)
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_if_fail (EV_IS_PRINT_OPERATION (op));
+
+ class->set_embed_page_setup (op, embed);
+#endif
+}
+
+gboolean
+ev_print_operation_get_embed_page_setup (EvPrintOperation *op)
+{
+#if GTK_CHECK_VERSION (2, 17, 4)
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), FALSE);
+
+ return class->get_embed_page_setup (op);
+#else
+ return FALSE;
+#endif
+}
+
const gchar *
ev_print_operation_get_status (EvPrintOperation *op)
{
@@ -364,7 +394,8 @@ struct _EvPrintOperationExport {
gint fd;
gchar *temp_file;
gchar *job_name;
-
+ gboolean embed_page_setup;
+
guint idle_id;
/* Context */
@@ -1292,6 +1323,10 @@ ev_print_operation_export_run (EvPrintOperation *op,
ev_file_exporter_get_capabilities (EV_FILE_EXPORTER (op->document));
gtk_print_unix_dialog_set_manual_capabilities (GTK_PRINT_UNIX_DIALOG (dialog),
capabilities);
+#if GTK_CHECK_VERSION (2, 17, 4)
+ gtk_print_unix_dialog_set_embed_page_setup (GTK_PRINT_UNIX_DIALOG (dialog),
+ export->embed_page_setup);
+#endif
gtk_print_unix_dialog_set_current_page (GTK_PRINT_UNIX_DIALOG (dialog),
export->current_page);
@@ -1302,7 +1337,7 @@ ev_print_operation_export_run (EvPrintOperation *op,
if (export->page_setup)
gtk_print_unix_dialog_set_page_setup (GTK_PRINT_UNIX_DIALOG (dialog),
export->page_setup);
-
+
g_signal_connect (dialog, "response",
G_CALLBACK (ev_print_operation_export_print_dialog_response_cb),
export);
@@ -1334,6 +1369,25 @@ ev_print_operation_export_get_error (EvPrintOperation *op,
}
static void
+ev_print_operation_export_set_embed_page_setup (EvPrintOperation *op,
+ gboolean embed)
+{
+#if GTK_CHECK_VERSION (2, 17, 4)
+ EvPrintOperationExport *export = EV_PRINT_OPERATION_EXPORT (op);
+
+ export->embed_page_setup = embed;
+#endif
+}
+
+static gboolean
+ev_print_operation_export_get_embed_page_setup (EvPrintOperation *op)
+{
+ EvPrintOperationExport *export = EV_PRINT_OPERATION_EXPORT (op);
+
+ return export->embed_page_setup;
+}
+
+static void
ev_print_operation_export_finalize (GObject *object)
{
EvPrintOperationExport *export = EV_PRINT_OPERATION_EXPORT (object);
@@ -1443,6 +1497,8 @@ ev_print_operation_export_class_init (EvPrintOperationExportClass *klass)
ev_print_op_class->run = ev_print_operation_export_run;
ev_print_op_class->cancel = ev_print_operation_export_cancel;
ev_print_op_class->get_error = ev_print_operation_export_get_error;
+ ev_print_op_class->set_embed_page_setup = ev_print_operation_export_set_embed_page_setup;
+ ev_print_op_class->get_embed_page_setup = ev_print_operation_export_get_embed_page_setup;
g_object_class->constructor = ev_print_operation_export_constructor;
g_object_class->finalize = ev_print_operation_export_finalize;
@@ -1577,6 +1633,29 @@ ev_print_operation_print_get_error (EvPrintOperation *op,
}
static void
+ev_print_operation_print_set_embed_page_setup (EvPrintOperation *op,
+ gboolean embed)
+{
+#if GTK_CHECK_VERSION (2, 17, 4)
+ EvPrintOperationPrint *print = EV_PRINT_OPERATION_PRINT (op);
+
+ gtk_print_operation_set_embed_page_setup (print->op, embed);
+#endif
+}
+
+static gboolean
+ev_print_operation_print_get_embed_page_setup (EvPrintOperation *op)
+{
+#if GTK_CHECK_VERSION (2, 17, 4)
+ EvPrintOperationPrint *print = EV_PRINT_OPERATION_PRINT (op);
+
+ return gtk_print_operation_get_embed_page_setup (print->op);
+#else
+ return FALSE;
+#endif
+}
+
+static void
ev_print_operation_print_begin_print (EvPrintOperationPrint *print,
GtkPrintContext *context)
{
@@ -1761,6 +1840,8 @@ ev_print_operation_print_class_init (EvPrintOperationPrintClass *klass)
ev_print_op_class->run = ev_print_operation_print_run;
ev_print_op_class->cancel = ev_print_operation_print_cancel;
ev_print_op_class->get_error = ev_print_operation_print_get_error;
+ ev_print_op_class->set_embed_page_setup = ev_print_operation_print_set_embed_page_setup;
+ ev_print_op_class->get_embed_page_setup = ev_print_operation_print_get_embed_page_setup;
g_object_class->finalize = ev_print_operation_print_finalize;
}
diff --git a/shell/ev-print-operation.h b/shell/ev-print-operation.h
index 20120d6..06a2845 100644
--- a/shell/ev-print-operation.h
+++ b/shell/ev-print-operation.h
@@ -56,6 +56,9 @@ void ev_print_operation_run (EvPrintOperation *o
void ev_print_operation_cancel (EvPrintOperation *op);
void ev_print_operation_get_error (EvPrintOperation *op,
GError **error);
+void ev_print_operation_set_embed_page_setup (EvPrintOperation *op,
+ gboolean embed);
+gboolean ev_print_operation_get_embed_page_setup (EvPrintOperation *op);
const gchar *ev_print_operation_get_status (EvPrintOperation *op);
gdouble ev_print_operation_get_progress (EvPrintOperation *op);
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 528226b..6f98711 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -395,7 +395,9 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window)
/* File menu */
ev_window_set_action_sensitive (ev_window, "FileOpenCopy", has_document);
ev_window_set_action_sensitive (ev_window, "FileSaveAs", has_document && ok_to_copy);
+#if !GTK_CHECK_VERSION (2, 17, 4)
ev_window_set_action_sensitive (ev_window, "FilePageSetup", has_pages && ok_to_print);
+#endif
ev_window_set_action_sensitive (ev_window, "FilePrint", has_pages && ok_to_print);
ev_window_set_action_sensitive (ev_window, "FileProperties", has_document && has_properties);
@@ -2908,6 +2910,13 @@ ev_window_print_operation_done (EvPrintOperation *op,
print_settings = ev_print_operation_get_print_settings (op);
ev_window_save_print_settings (ev_window, print_settings);
+
+ if (ev_print_operation_get_embed_page_setup (op)) {
+ GtkPageSetup *page_setup;
+
+ page_setup = ev_print_operation_get_default_page_setup (op);
+ ev_window_save_print_page_setup (ev_window, page_setup);
+ }
}
break;
@@ -3081,6 +3090,7 @@ ev_window_print_range (EvWindow *ev_window,
ev_print_operation_set_current_page (op, current_page);
ev_print_operation_set_print_settings (op, print_settings);
ev_print_operation_set_default_page_setup (op, print_page_setup);
+ ev_print_operation_set_embed_page_setup (op, TRUE);
g_object_unref (print_settings);
g_object_unref (print_page_setup);
@@ -6039,7 +6049,17 @@ ev_window_init (EvWindow *ev_window)
g_error_free (error);
}
g_free (ui_path);
-
+
+#if GTK_CHECK_VERSION (2, 17, 4)
+ {
+ GtkAction *action;
+
+ action = gtk_action_group_get_action (ev_window->priv->action_group,
+ "FilePageSetup");
+ g_object_set (action, "visible", FALSE, "sensitive", FALSE, NULL);
+ }
+#endif
+
ev_window->priv->recent_manager = gtk_recent_manager_get_default ();
ev_window->priv->recent_action_group = NULL;
ev_window->priv->recent_ui_id = 0;