X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=previewer%2Fev-previewer-window.c;h=686fb0d38ddd4b726f9a5f5c7be1ec1dc3f1aaa0;hb=03a4afa9aeab342a63530db46888e405ea1c8afc;hp=cbddbd83f235c57a8c3046ffe6ec4ef59d63a869;hpb=faace27fc6850ac153a41d47e51dfbd589dc1411;p=evince.git diff --git a/previewer/ev-previewer-window.c b/previewer/ev-previewer-window.c index cbddbd83..686fb0d3 100644 --- a/previewer/ev-previewer-window.c +++ b/previewer/ev-previewer-window.c @@ -20,10 +20,11 @@ #include +#if GTKUNIXPRINT_ENABLED #include +#endif #include #include -#include "ev-stock-icons.h" #include "ev-page-action.h" #include "ev-previewer-window.h" @@ -43,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; }; @@ -104,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) @@ -121,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, @@ -185,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, @@ -274,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"), "Page_Up", @@ -288,9 +295,11 @@ static const GtkActionEntry action_entries[] = { { "ViewZoomOut", GTK_STOCK_ZOOM_OUT, NULL, "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[] = { @@ -369,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); @@ -387,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) { @@ -394,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); @@ -425,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);