Fixes bgo#608832.
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)
{
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 */
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)
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;
}
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)
typedef struct _EvRectangle EvRectangle;
+typedef struct _EvDocumentBackendInfo EvDocumentBackendInfo;
+struct _EvDocumentBackendInfo
+{
+ const gchar *name;
+ const gchar *version;
+};
+
struct _EvDocument
{
GObject base;
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;
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);
#include "ev-media-player-keys.h"
#endif /* ENABLE_DBUS */
-#ifdef ENABLE_PDF
-#include <poppler.h>
-#endif
-
typedef enum {
PAGE_MODE_DOCUMENT,
PAGE_MODE_PASSWORD
}
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
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),