]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Expose api to print a range (with dialog). Make private _print use it.
[evince.git] / shell / ev-window.c
index 085f60ab9a9e9d98ca043e311273f8b6fb26ba92..f1b41602fa17dd3953f17ea5ee0e5d759ff336bb 100644 (file)
@@ -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);