diff options
Diffstat (limited to 'shell/ev-window.c')
-rw-r--r-- | shell/ev-window.c | 26 |
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); |