Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/ev-window.c')
-rw-r--r--shell/ev-window.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 085f60a..f1b4160 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -1070,23 +1070,38 @@ using_postscript_printer (GnomePrintConfig *config)
}
static void
-ev_window_print (EvWindow *ev_window)
+ev_window_print (EvWindow *window)
+{
+ EvPageCache *page_cache;
+ int last_page;
+
+ page_cache = ev_document_get_page_cache (window->priv->document);
+ last_page = ev_page_cache_get_n_pages (page_cache);
+
+ ev_window_print_range (window, 1, -1);
+}
+
+void
+ev_window_print_range (EvWindow *ev_window, int first_page, int last_page)
{
GnomePrintConfig *config;
GnomePrintJob *job;
GtkWidget *print_dialog;
- EvPageCache *page_cache;
gchar *pages_label;
EvPrintJob *print_job = NULL;
+ EvPageCache *page_cache;
g_return_if_fail (EV_IS_WINDOW (ev_window));
g_return_if_fail (ev_window->priv->document != NULL);
+ page_cache = ev_document_get_page_cache (ev_window->priv->document);
+ if (last_page == -1) {
+ last_page = ev_page_cache_get_n_pages (page_cache);
+ }
+
config = gnome_print_config_default ();
job = gnome_print_job_new (config);
- page_cache = ev_document_get_page_cache (ev_window->priv->document);
-
print_dialog = gnome_print_dialog_new (job, (guchar *) _("Print"),
(GNOME_PRINT_DIALOG_RANGE |
GNOME_PRINT_DIALOG_COPIES));
@@ -1095,8 +1110,7 @@ ev_window_print (EvWindow *ev_window)
gnome_print_dialog_construct_range_page (GNOME_PRINT_DIALOG (print_dialog),
GNOME_PRINT_RANGE_ALL |
GNOME_PRINT_RANGE_RANGE,
- 1,
- ev_page_cache_get_n_pages (page_cache),
+ first_page, last_page,
NULL, (const guchar *)pages_label);
g_free (pages_label);