]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Remove libgnomeprint support. Fixes bug #512370.
[evince.git] / shell / ev-window.c
index f15e06fc20da6d1aa4a2867122c131353f7ee2b0..dc8ac94f2c7fcf0311bc22759d2ad6774e17b774 100644 (file)
 #include "ev-image.h"
 #include "ev-message-area.h"
 
-#ifdef WITH_GNOME_PRINT
-#include "ev-print-job.h"
-#include <libgnomeprintui/gnome-print-dialog.h>
-#endif
-
-#ifdef WITH_GTK_PRINT
 #include <gtk/gtkprintunixdialog.h>
-#endif
 
 #ifdef ENABLE_PDF
 #include <poppler.h>
 #include <string.h>
 #include <unistd.h>
 
-#if !GLIB_CHECK_VERSION (2, 13, 3)
-char *xdg_user_dir_lookup (char *type);
-#endif
-
 typedef enum {
        PAGE_MODE_DOCUMENT,
        PAGE_MODE_PASSWORD
@@ -132,9 +121,7 @@ struct _EvWindowPrivate {
 
        /* Dialogs */
        GtkWidget *properties;
-#ifdef WITH_PRINT
        GtkWidget *print_dialog;
-#endif
        GtkWidget *password_dialog;
 
        /* UI Builders */
@@ -178,21 +165,18 @@ struct _EvWindowPrivate {
        EvWindowPageMode page_mode;
        EvWindowTitle *title;
 
-       EvJob *load_job;
-       EvJob *thumbnail_job;
-       EvJob *save_job;
-#ifdef WITH_GNOME_PRINT
-       GnomePrintJob *print_job;
-#endif
-
-#ifdef WITH_GTK_PRINT
+       EvJob            *load_job;
+       EvJob            *thumbnail_job;
+       EvJob            *save_job;
        EvJob            *print_job;
+
+       /* Printing */
        gboolean          print_preview;
        GtkPrintJob      *gtk_print_job;
        GtkPrinter       *printer;
        GtkPrintSettings *print_settings;
        GtkPageSetup     *print_page_setup;
-#endif
+
 };
 
 #define EV_WINDOW_GET_PRIVATE(object) \
@@ -213,7 +197,6 @@ struct _EvWindowPrivate {
 #define THUMBNAILS_SIDEBAR_ID "thumbnails"
 #define ATTACHMENTS_SIDEBAR_ID "attachments"
 
-#ifdef WITH_GTK_PRINT
 static const gchar *document_print_settings[] = {
        GTK_PRINT_SETTINGS_N_COPIES,
        GTK_PRINT_SETTINGS_COLLATE,
@@ -224,7 +207,6 @@ static const gchar *document_print_settings[] = {
        GTK_PRINT_SETTINGS_PAGE_RANGES,
        GTK_PRINT_SETTINGS_PAGE_SET
 };
-#endif /* WITH_GTK_PRINT */
 
 static void    ev_window_update_actions                (EvWindow         *ev_window);
 static void     ev_window_sidebar_visibility_changed_cb (EvSidebar        *ev_sidebar,
@@ -236,10 +218,8 @@ static void        ev_window_load_job_cb                   (EvJobLoad        *job,
                                                         gpointer          data);
 static void     ev_window_set_icon_from_thumbnail       (EvJobThumbnail   *job,
                                                         EvWindow         *ev_window);
-#ifdef WITH_GTK_PRINT
 static void     ev_window_print_job_cb                  (EvJobPrint       *job,
                                                         EvWindow         *window);
-#endif
 static void     ev_window_save_job_cb                   (EvJobSave        *save,
                                                         EvWindow         *window);
 static void     ev_window_sizing_mode_changed_cb        (EvView           *view,
@@ -285,6 +265,7 @@ static void     ev_window_cmd_edit_find                 (GtkAction        *actio
 static void     find_bar_search_changed_cb              (EggFindBar       *find_bar,
                                                         GParamSpec       *param,
                                                         EvWindow         *ev_window);
+static void     ev_window_do_preview_print              (EvWindow         *window);
 
 G_DEFINE_TYPE (EvWindow, ev_window, GTK_TYPE_WINDOW)
 
@@ -357,24 +338,13 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window)
        if (gconf_client_get_bool (client, GCONF_LOCKDOWN_PRINT, NULL)) {
                ok_to_print = FALSE;
        }
-#ifndef WITH_PRINT
-       ok_to_print = FALSE;
-#endif
-       g_object_unref (client);
 
+       g_object_unref (client);
 
        /* 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);
-
-#ifdef WITH_GTK_PRINT
        ev_window_set_action_sensitive (ev_window, "FilePrintSetup", has_pages && ok_to_print);
-#endif
-
-#ifdef WITH_GNOME_PRINT
-       ev_window_set_action_sensitive (ev_window, "FilePrintSetup", FALSE);
-#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);
 
@@ -1445,17 +1415,9 @@ ev_window_close_dialogs (EvWindow *ev_window)
                gtk_widget_destroy (ev_window->priv->password_dialog);
        ev_window->priv->password_dialog = NULL;
        
-#ifdef WITH_PRINT
        if (ev_window->priv->print_dialog)
                gtk_widget_destroy (ev_window->priv->print_dialog);
        ev_window->priv->print_dialog = NULL;
-#endif
-
-#ifdef WITH_GNOME_PRINT
-       if (ev_window->priv->print_job)
-               g_object_unref (ev_window->priv->print_job);
-       ev_window->priv->print_job = NULL;
-#endif
        
        if (ev_window->priv->properties)
                gtk_widget_destroy (ev_window->priv->properties);
@@ -1595,20 +1557,11 @@ ev_window_cmd_file_open (GtkAction *action, EvWindow *window)
                gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (chooser),
                                          window->priv->uri);
        } else {
-#if GLIB_CHECK_VERSION (2, 13, 3)
                const gchar *folder;
 
                folder = g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
                gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser),
                                                     folder ? folder : g_get_home_dir ());
-#else
-               char *folder;
-               
-               folder = xdg_user_dir_lookup ("DOCUMENTS");
-               gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser),
-                                                    folder);
-               free (folder);
-#endif
        }
        
        g_signal_connect (chooser, "response",
@@ -2012,11 +1965,7 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window)
        GtkWidget *fc;
        gchar *base_name;
        GFile *file;
-#if GLIB_CHECK_VERSION (2, 13, 3)
        const gchar *folder;
-#else
-       gchar *folder;
-#endif
 
        fc = gtk_file_chooser_dialog_new (
                _("Save a Copy"),
@@ -2034,15 +1983,9 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window)
        base_name = g_file_get_basename (file);
        gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (fc), base_name);
        
-#if GLIB_CHECK_VERSION (2, 13, 3)
        folder = g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
        gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (fc),
                                             folder ? folder : g_get_home_dir ());
-#else
-       folder = xdg_user_dir_lookup ("DOCUMENTS");
-        gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (fc), folder);
-       free (folder);
-#endif
        
        g_object_unref (file);
        g_free (base_name);
@@ -2054,7 +1997,6 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window)
        gtk_widget_show (fc);
 }
 
-#ifdef WITH_GTK_PRINT
 static void
 ev_window_print_page_setup_done_cb (GtkPageSetup *page_setup,
                                    EvWindow     *window)
@@ -2067,22 +2009,18 @@ ev_window_print_page_setup_done_cb (GtkPageSetup *page_setup,
                g_object_unref (window->priv->print_page_setup);
        window->priv->print_page_setup = g_object_ref (page_setup);
 }
-#endif /* WITH_GTK_PRINT */
 
 static void
 ev_window_cmd_file_print_setup (GtkAction *action, EvWindow *ev_window)
 {
-#ifdef WITH_GTK_PRINT
        gtk_print_run_page_setup_dialog_async (
                GTK_WINDOW (ev_window),
                ev_window->priv->print_page_setup,
                ev_window->priv->print_settings,
                (GtkPageSetupDoneFunc) ev_window_print_page_setup_done_cb,
                ev_window);
-#endif /* WITH_GTK_PRINT */
 }
 
-#ifdef WITH_GTK_PRINT
 static void
 ev_window_clear_print_job (EvWindow *window)
 {
@@ -2465,124 +2403,6 @@ ev_window_print_range (EvWindow *ev_window, int first_page, int last_page)
 
        gtk_widget_show (dialog);
 }
-#endif /* WITH_GTK_PRINT */
-
-#ifdef WITH_GNOME_PRINT
-static gboolean
-ev_window_print_dialog_response_cb (GtkDialog *print_dialog,
-                                   gint       response,
-                                   EvWindow  *ev_window)
-{
-       EvPrintJob *print_job;
-       GnomePrintConfig *config;
-    
-       if (response != GNOME_PRINT_DIALOG_RESPONSE_PRINT) {
-               gtk_widget_destroy (GTK_WIDGET (print_dialog));
-               ev_window->priv->print_dialog = NULL;
-               g_object_unref (ev_window->priv->print_job);
-               ev_window->priv->print_job = NULL;
-               
-               return FALSE;
-       }
-
-       config = gnome_print_dialog_get_config (GNOME_PRINT_DIALOG (print_dialog));
-
-       /* FIXME: Change this when we have the first backend
-        * that can print more than postscript
-        */
-       if (using_pdf_printer (config)) {
-               GtkWidget *dialog;
-               
-               dialog = gtk_message_dialog_new (GTK_WINDOW (print_dialog), GTK_DIALOG_MODAL,
-                                                GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
-                                                _("Generating PDF is not supported"));
-               gtk_dialog_run (GTK_DIALOG (dialog));
-               gtk_widget_destroy (dialog);
-               
-               return FALSE;
-       } else if (!using_postscript_printer (config)) {
-               GtkWidget *dialog;
-
-               dialog = gtk_message_dialog_new (GTK_WINDOW (print_dialog), GTK_DIALOG_MODAL,
-                                                GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
-                                                _("Printing is not supported on this printer."));
-               gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                                         _("You were trying to print to a printer using the ā€œ%sā€ driver. "
-                                                           "This program requires a PostScript printer driver."),
-                                                         gnome_print_config_get (config, (guchar *)"Settings.Engine.Backend.Driver"));
-               gtk_dialog_run (GTK_DIALOG (dialog));
-               gtk_widget_destroy (dialog);
-               
-               return FALSE;
-       }
-
-       save_print_config_to_file (config);
-    
-       print_job = g_object_new (EV_TYPE_PRINT_JOB,
-                                 "gnome_print_job", ev_window->priv->print_job,
-                                 "document", ev_window->priv->document,
-                                 "print_dialog", print_dialog,
-                                 NULL);
-
-       if (print_job != NULL) {
-               ev_print_job_print (print_job, GTK_WINDOW (ev_window));
-               g_object_unref (print_job);
-       }
-
-       g_object_unref (config);
-
-       gtk_widget_destroy (GTK_WIDGET (print_dialog));
-       ev_window->priv->print_dialog = NULL;
-       g_object_unref (ev_window->priv->print_job);
-       ev_window->priv->print_job = NULL;
-
-       return FALSE;
-}
-
-void
-ev_window_print_range (EvWindow *ev_window, int first_page, int last_page)
-{
-       GnomePrintConfig *config;
-       gchar *pages_label;
-
-        g_return_if_fail (EV_IS_WINDOW (ev_window));
-       g_return_if_fail (ev_window->priv->document != NULL);
-
-       config = load_print_config_from_file ();
-
-       if (ev_window->priv->print_job == NULL)
-               ev_window->priv->print_job = gnome_print_job_new (config);
-       
-       if (ev_window->priv->print_dialog == NULL) {
-               ev_window->priv->print_dialog =
-                       gnome_print_dialog_new (ev_window->priv->print_job,
-                                               (guchar *) _("Print"),
-                                               (GNOME_PRINT_DIALOG_RANGE |
-                                                GNOME_PRINT_DIALOG_COPIES));
-       }
-       
-       gtk_window_set_transient_for (GTK_WINDOW (ev_window->priv->print_dialog),
-                                     GTK_WINDOW (ev_window));                                                          
-       g_object_unref (config);                                                                
-
-       pages_label = g_strconcat (_("Pages"), " ", NULL);
-       gnome_print_dialog_construct_range_page (GNOME_PRINT_DIALOG (ev_window->priv->print_dialog),
-                                                GNOME_PRINT_RANGE_ALL |
-                                                GNOME_PRINT_RANGE_RANGE,
-                                                first_page, last_page,
-                                                NULL, (const guchar *)pages_label);
-       g_free (pages_label);
-                                                
-       gtk_dialog_set_response_sensitive (GTK_DIALOG (ev_window->priv->print_dialog),
-                                          GNOME_PRINT_DIALOG_RESPONSE_PREVIEW,
-                                          FALSE);
-
-       g_signal_connect (G_OBJECT (ev_window->priv->print_dialog), "response",
-                         G_CALLBACK (ev_window_print_dialog_response_cb),
-                         ev_window);
-       gtk_widget_show (ev_window->priv->print_dialog);
-}
-#endif /* WITH_GNOME_PRINT */
 
 static void
 ev_window_print (EvWindow *window)
@@ -2593,9 +2413,7 @@ ev_window_print (EvWindow *window)
        page_cache = ev_page_cache_get (window->priv->document);
        last_page = ev_page_cache_get_n_pages (page_cache);
 
-#ifdef WITH_PRINT
        ev_window_print_range (window, 1, last_page);
-#endif
 }
 
 static void
@@ -2924,15 +2742,9 @@ presentation_set_timeout (EvWindow *window)
                g_source_remove (window->priv->presentation_timeout_id);
        }
 
-#if GLIB_CHECK_VERSION (2, 13, 0)
        window->priv->presentation_timeout_id =
                g_timeout_add_seconds (PRESENTATION_TIMEOUT,
                                       (GSourceFunc)presentation_timeout_cb, window);
-#else
-       window->priv->presentation_timeout_id = 
-           g_timeout_add (PRESENTATION_TIMEOUT * 1000,
-                          (GSourceFunc)presentation_timeout_cb, window);
-#endif 
 
        ev_view_show_cursor (EV_VIEW (window->priv->view));
 }
@@ -3367,9 +3179,6 @@ ev_window_cmd_start_presentation (GtkAction *action, EvWindow *window)
        ev_window_run_presentation (window);
 }
 
-#ifdef WITH_GTK_PRINT
-static void ev_window_do_preview_print (EvWindow *window);
-
 static gboolean
 ev_window_enumerate_printer_cb (GtkPrinter *printer,
                                EvWindow   *window)
@@ -3461,12 +3270,9 @@ ev_window_do_preview_print (EvWindow *window)
        gtk_widget_hide (GTK_WIDGET (window));
 }
 
-#endif /* WITH_GTK_PRINT */
-
 static void
 ev_window_cmd_preview_print (GtkAction *action, EvWindow *window)
 {
-#ifdef WITH_GTK_PRINT
        EvWindowPrivate *priv = window->priv;
        GtkPrintSettings *print_settings = NULL;
 #if GTK_CHECK_VERSION (2, 11, 0)
@@ -3497,7 +3303,6 @@ ev_window_cmd_preview_print (GtkAction *action, EvWindow *window)
 
        gtk_enumerate_printers ((GtkPrinterFunc) ev_window_enumerate_printer_cb,
                                window, NULL, FALSE);
-#endif /* WITH_GTK_PRINT */
 }
 
 static void
@@ -3505,7 +3310,7 @@ ev_window_cmd_escape (GtkAction *action, EvWindow *window)
 {
        GtkWidget *widget;
 
-       ev_view_autoscroll_stop (window->priv->view);
+       ev_view_autoscroll_stop (EV_VIEW (window->priv->view));
        
        widget = gtk_window_get_focus (GTK_WINDOW (window));
        if (widget && gtk_widget_get_ancestor (widget, EGG_TYPE_FIND_BAR)) {
@@ -4194,8 +3999,6 @@ ev_window_dispose (GObject *object)
        }
        
        ev_window_close_dialogs (window);
-
-#ifdef WITH_GTK_PRINT
        ev_window_clear_print_job (window);
 
        if (window->priv->gtk_print_job) {
@@ -4217,7 +4020,6 @@ ev_window_dispose (GObject *object)
                g_object_unref (window->priv->print_page_setup);
                window->priv->print_page_setup = NULL;
        }
-#endif
 
        if (priv->link) {
                g_object_unref (priv->link);