Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--backend/pdf/ev-poppler.cc24
-rw-r--r--configure.ac4
-rw-r--r--libdocument/ev-document.c13
-rw-r--r--libdocument/ev-document.h11
-rw-r--r--shell/ev-window.c45
5 files changed, 63 insertions, 34 deletions
diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
index 6d1c937..389b436 100644
--- a/backend/pdf/ev-poppler.cc
+++ b/backend/pdf/ev-poppler.cc
@@ -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 */
diff --git a/configure.ac b/configure.ac
index 35e34e9..f95532a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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)
diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c
index c126293..edebe37 100644
--- a/libdocument/ev-document.c
+++ b/libdocument/ev-document.c
@@ -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)
diff --git a/libdocument/ev-document.h b/libdocument/ev-document.h
index 89acbe6..f905377 100644
--- a/libdocument/ev-document.h
+++ b/libdocument/ev-document.h
@@ -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);
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 9d1f99a..e9aee88 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -97,10 +97,6 @@
#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),