]> www.fi.muni.cz Git - evince.git/commitdiff
[shell] Do not link to poppler directly
authorHib Eris <hib@hiberis.nl>
Tue, 2 Feb 2010 16:54:32 +0000 (17:54 +0100)
committerHib Eris <hib@hiberis.nl>
Wed, 3 Feb 2010 16:17:29 +0000 (17:17 +0100)
Fixes bgo#608832.

backend/pdf/ev-poppler.cc
configure.ac
libdocument/ev-document.c
libdocument/ev-document.h
shell/ev-window.c

index 6d1c937a9401d231b6e1cec1d9d73831c7657f41..389b436e9388a9db3f246b7b059a7aca893aa1be 100644 (file)
@@ -830,6 +830,29 @@ pdf_document_get_info (EvDocument *document)
        return info;
 }
 
+static gboolean
+pdf_document_get_backend_info (EvDocument *document, EvDocumentBackendInfo *info)
+{
+       PopplerBackend backend;
+
+       backend = poppler_get_backend ();
+       switch (backend) {
+               case POPPLER_BACKEND_CAIRO:
+                       info->name = "poppler/cairo";
+                       break;
+               case POPPLER_BACKEND_SPLASH:
+                       info->name = "poppler/splash";
+                       break;
+               default:
+                       info->name = "poppler/unknown";
+                       break;
+       }
+
+       info->version = poppler_get_version ();
+
+       return TRUE;
+}
+
 static void
 pdf_document_class_init (PdfDocumentClass *klass)
 {
@@ -846,6 +869,7 @@ pdf_document_class_init (PdfDocumentClass *klass)
        ev_document_class->get_page_label = pdf_document_get_page_label;
        ev_document_class->render = pdf_document_render;
        ev_document_class->get_info = pdf_document_get_info;
+       ev_document_class->get_backend_info = pdf_document_get_backend_info;
 }
 
 /* EvDocumentSecurity */
index 35e34e935fda261f962c53515afb9472143afc8a..f95532a19a6f1141295f76739d55365ac5fb0f89 100644 (file)
@@ -490,10 +490,6 @@ if test "x$enable_pdf" = "xyes"; then
     PKG_CHECK_MODULES(POPPLER, poppler-glib >= $POPPLER_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED,enable_pdf=yes,enable_pdf=no)
 
     if test "x$enable_pdf" = "xyes"; then
-           AC_DEFINE([ENABLE_PDF], [1], [Enable pdf support.])
-           SHELL_LIBS="$SHELL_LIBS $POPPLER_LIBS"
-           SHELL_CFLAGS="$SHELL_CFLAGS $POPPLER_CFLAGS"
-
            evince_save_LIBS=$LIBS
            LIBS="$LIBS $POPPLER_LIBS"
            AC_CHECK_FUNCS(poppler_page_render)
index c1262933268517a6eafd6be84bd5ea9390a36f5c..edebe372ea23f5494efe17c7f0cc8135e24ff01f 100644 (file)
@@ -141,6 +141,7 @@ ev_document_class_init (EvDocumentClass *klass)
 
        klass->get_page = ev_document_impl_get_page;
        klass->get_info = ev_document_impl_get_info;
+       klass->get_backend_info = NULL;
 
        g_object_class->finalize = ev_document_finalize;
 }
@@ -423,6 +424,18 @@ ev_document_get_info (EvDocument *document)
        return document->priv->info;
 }
 
+gboolean
+ev_document_get_backend_info (EvDocument *document, EvDocumentBackendInfo *info)
+{
+       g_return_val_if_fail (EV_IS_DOCUMENT (document), FALSE);
+
+       EvDocumentClass *klass = EV_DOCUMENT_GET_CLASS (document);
+       if (klass->get_backend_info == NULL)
+               return FALSE;
+
+       return klass->get_backend_info (document, info);
+}
+
 cairo_surface_t *
 ev_document_render (EvDocument      *document,
                    EvRenderContext *rc)
index 89acbe67877f6b5db1a37f31495e8cad16b405f2..f9053772907fb0b5a9993894c0f76701ef153463 100644 (file)
@@ -66,6 +66,13 @@ typedef struct {
 
 typedef struct _EvRectangle EvRectangle;
 
+typedef struct _EvDocumentBackendInfo EvDocumentBackendInfo;
+struct _EvDocumentBackendInfo
+{
+       const gchar *name;
+       const gchar *version;
+};
+
 struct _EvDocument
 {
        GObject base;
@@ -96,6 +103,8 @@ struct _EvDocumentClass
         cairo_surface_t * (* render)          (EvDocument      *document,
                                                EvRenderContext *rc);
         EvDocumentInfo  * (* get_info)        (EvDocument      *document);
+        gboolean          (* get_backend_info)(EvDocument      *document,
+                                               EvDocumentBackendInfo *info);
 };
 
 GType            ev_document_get_type             (void) G_GNUC_CONST;
@@ -114,6 +123,8 @@ void             ev_document_fc_mutex_unlock      (void);
 gboolean         ev_document_fc_mutex_trylock     (void);
 
 EvDocumentInfo  *ev_document_get_info             (EvDocument      *document);
+gboolean         ev_document_get_backend_info     (EvDocument      *document,
+                                                  EvDocumentBackendInfo *info);
 gboolean         ev_document_load                 (EvDocument      *document,
                                                   const char      *uri,
                                                   GError         **error);
index 9d1f99ae59dfe86862fb664e6eb07763c091ff27..e9aee88912ca71f9aa47c7496f646089e6a05b26 100644 (file)
 #include "ev-media-player-keys.h"
 #endif /* ENABLE_DBUS */
 
-#ifdef ENABLE_PDF
-#include <poppler.h>
-#endif
-
 typedef enum {
        PAGE_MODE_DOCUMENT,
        PAGE_MODE_PASSWORD
@@ -4173,33 +4169,21 @@ ev_window_dual_mode_changed_cb (EvDocumentModel *model,
 }
 
 static char *
-build_comments_string (void)
-{
-#ifdef ENABLE_PDF
-       PopplerBackend backend;
-       const char *backend_name;
-       const char *version;
-
-       backend = poppler_get_backend ();
-       version = poppler_get_version ();
-       switch (backend) {
-               case POPPLER_BACKEND_CAIRO:
-                       backend_name = "cairo";
-                       break;
-               case POPPLER_BACKEND_SPLASH:
-                       backend_name = "splash";
-                       break;
-               default:
-                       backend_name = "unknown";
-                       break;
+build_comments_string (EvDocument *document)
+{
+       gchar *comments = NULL;
+       EvDocumentBackendInfo info;
+
+       if (document && ev_document_get_backend_info (document, &info)) {
+               comments = g_strdup_printf (
+                       _("Document Viewer\nUsing %s (%s)"),
+                       info.name, info.version);
+       } else {
+               comments = g_strdup_printf (
+                       _("Document Viewer"));
        }
 
-       return g_strdup_printf (_("Document Viewer.\n"
-                                 "Using Poppler %s (%s)"),
-                               version, backend_name);
-#else
-       return g_strdup_printf (_("Document Viewer"));
-#endif
+       return comments;
 }
 
 static void
@@ -4251,7 +4235,8 @@ ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window)
 
        license_trans = g_strconcat (_(license[0]), "\n", _(license[1]), "\n",
                                     _(license[2]), "\n", NULL);
-       comments = build_comments_string ();
+
+       comments = build_comments_string (ev_window->priv->document);
 
        gtk_show_about_dialog (
                GTK_WINDOW (ev_window),