]> www.fi.muni.cz Git - evince.git/blobdiff - previewer/ev-previewer-window.c
[printing] Make use of gtk+-unix-print optional
[evince.git] / previewer / ev-previewer-window.c
index 8da587184402e177db66dc2148296db6e11cf887..686fb0d38ddd4b726f9a5f5c7be1ec1dc3f1aaa0 100644 (file)
@@ -20,7 +20,9 @@
 
 #include <config.h>
 
+#if GTKUNIXPRINT_ENABLED
 #include <gtk/gtkunixprint.h>
+#endif
 #include <glib/gi18n.h>
 #include <evince-view.h>
 #include "ev-page-action.h"
@@ -42,7 +44,9 @@ struct _EvPreviewerWindow {
        /* Printing */
        GtkPrintSettings *print_settings;
        GtkPageSetup     *print_page_setup;
+#if GTKUNIXPRINT_ENABLED
        GtkPrinter       *printer;
+#endif
        gchar            *print_job_title;
        gchar            *source_file;
 };
@@ -103,6 +107,7 @@ ev_previewer_window_set_view_size (EvPreviewerWindow *window)
                                   hsb_requisition.height + scrollbar_spacing);
 }
 
+#if GTKUNIXPRINT_ENABLED
 static void
 ev_previewer_window_error_dialog_run (EvPreviewerWindow *window,
                                      GError            *error)
@@ -120,6 +125,7 @@ ev_previewer_window_error_dialog_run (EvPreviewerWindow *window,
        gtk_dialog_run (GTK_DIALOG (dialog));
        gtk_widget_destroy (dialog);
 }
+#endif
 
 static void
 ev_previewer_window_previous_page (GtkAction         *action,
@@ -184,6 +190,7 @@ ev_previewer_window_action_page_activated (GtkAction         *action,
        gtk_widget_grab_focus (GTK_WIDGET (window->view));
 }
 
+#if GTKUNIXPRINT_ENABLED
 static void
 ev_previewer_window_print_finished (GtkPrintJob       *print_job,
                                    EvPreviewerWindow *window,
@@ -273,6 +280,7 @@ ev_previewer_window_print (GtkAction         *action,
                                (GDestroyNotify)ev_previewer_window_enumerate_finished,
                                FALSE);
 }
+#endif
 
 static const GtkActionEntry action_entries[] = {
        { "GoPreviousPage", GTK_STOCK_GO_UP, N_("_Previous Page"), "<control>Page_Up",
@@ -287,9 +295,11 @@ static const GtkActionEntry action_entries[] = {
         { "ViewZoomOut", GTK_STOCK_ZOOM_OUT, NULL, "<control>minus",
           N_("Shrink the document"),
           G_CALLBACK (ev_previewer_window_zoom_out) },
+#if GTKUNIXPRINT_ENABLED
        { "PreviewPrint", GTK_STOCK_PRINT, N_("Print"), NULL,
          N_("Print this document"),
          G_CALLBACK (ev_previewer_window_print) }
+#endif
 };
 
 static const GtkToggleActionEntry toggle_action_entries[] = {
@@ -368,10 +378,12 @@ ev_previewer_window_dispose (GObject *object)
                window->print_page_setup = NULL;
        }
 
+#if GTKUNIXPRINT_ENABLED
        if (window->printer) {
                g_object_unref (window->printer);
                window->printer = NULL;
        }
+#endif
 
        if (window->print_job_title) {
                g_free (window->print_job_title);
@@ -386,6 +398,23 @@ ev_previewer_window_dispose (GObject *object)
        G_OBJECT_CLASS (ev_previewer_window_parent_class)->dispose (object);
 }
 
+static gchar*
+data_dir (void)
+{
+       gchar *datadir;
+#ifdef G_OS_WIN32
+       gchar *dir;
+
+       dir = g_win32_get_package_installation_directory_of_module (NULL);
+       datadir = g_build_filename (dir, "share", "evince", NULL);
+       g_free (dir);
+#else
+       datadir = g_strdup (DATADIR);
+#endif
+
+       return datadir;
+}
+
 static void
 ev_previewer_window_init (EvPreviewerWindow *window)
 {
@@ -393,6 +422,7 @@ ev_previewer_window_init (EvPreviewerWindow *window)
        GtkWidget *toolbar;
        GtkAction *action;
        GError    *error = NULL;
+       gchar     *datadir, *ui_path;
 
        gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
        
@@ -424,12 +454,14 @@ ev_previewer_window_init (EvPreviewerWindow *window)
                                            window->action_group, 0);
        gtk_window_add_accel_group (GTK_WINDOW (window),
                                    gtk_ui_manager_get_accel_group (window->ui_manager));
-       if (!gtk_ui_manager_add_ui_from_file (window->ui_manager,
-                                             DATADIR"/evince-previewer-ui.xml",
-                                             &error)) {
+       datadir = data_dir ();
+       ui_path = g_build_filename (datadir, "evince-previewer-ui.xml", NULL);
+       if (!gtk_ui_manager_add_ui_from_file (window->ui_manager, ui_path, &error)) {
                g_warning ("Failed to load ui from evince-previewer-ui.xml: %s", error->message);
                g_error_free (error);
        }
+       g_free (ui_path);
+       g_free (datadir);
 
        vbox = gtk_vbox_new (FALSE, 0);