From: Marco Pesenti Gritti Date: Tue, 5 Jul 2005 16:03:47 +0000 (+0000) Subject: Support all mime types X-Git-Tag: EVINCE_0_3_3~165 X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=ffd47fa767f69c0b534037a6e067534d7d2345c9;p=evince.git Support all mime types 2005-07-05 Marco Pesenti Gritti * Makefile.am: * properties/Makefile.am: * properties/ev-properties-main.c: (ev_properties_get_pages): Support all mime types * shell/Makefile.am: * thumbnailer/Makefile.am: * thumbnailer/evince-thumbnailer.c: (get_document_from_uri), (evince_thumbnail_pngenc_get): Use the document factory --- diff --git a/ChangeLog b/ChangeLog index b954d0dc..a3f20490 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2005-07-05 Marco Pesenti Gritti + + * Makefile.am: + * properties/Makefile.am: + * properties/ev-properties-main.c: (ev_properties_get_pages): + + Support all mime types + + * shell/Makefile.am: + * thumbnailer/Makefile.am: + * thumbnailer/evince-thumbnailer.c: (get_document_from_uri), + (evince_thumbnail_pngenc_get): + + Use the document factory + 2005-07-05 Marco Pesenti Gritti * backend/Makefile.am: diff --git a/Makefile.am b/Makefile.am index 229a03bf..7c4883ae 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,7 +18,7 @@ endif # Applications -SUBDIRS += properties shell thumbnailer +SUBDIRS += shell thumbnailer properties intltool_extra = intltool-extract.in intltool-merge.in intltool-update.in diff --git a/properties/Makefile.am b/properties/Makefile.am index 597fb5a8..e00edd80 100644 --- a/properties/Makefile.am +++ b/properties/Makefile.am @@ -4,7 +4,6 @@ INCLUDES= \ -DDATADIR=\"$(pkgdatadir)\" \ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ -I$(top_srcdir)/backend \ - -I$(top_srcdir)/pdf \ $(PROPERTIES_CFLAGS) \ $(NAUTILUS_CFLAGS) \ $(EVINCE_DISABLE_DEPRECATED) \ @@ -33,6 +32,6 @@ libevince_properties_page_la_SOURCES = \ libevince_properties_page_la_LIBADD = \ $(PROPERTIES_LIBS) \ libevproperties.la \ - $(top_builddir)/pdf/libpdfdocument.la \ - $(top_builddir)/backend/libevbackend.la \ - $(top_builddir)/lib/libev.la + $(top_builddir)/shell/libevbackendfactory.la \ + $(top_builddir)/lib/libev.la \ + -ltiff -lz diff --git a/properties/ev-properties-main.c b/properties/ev-properties-main.c index 87f4a590..64f5707b 100644 --- a/properties/ev-properties-main.c +++ b/properties/ev-properties-main.c @@ -28,7 +28,7 @@ */ #include "ev-properties-view.h" -#include "pdf-document.h" +#include "ev-document-factory.h" #include #include @@ -83,6 +83,7 @@ ev_properties_get_pages (NautilusPropertyPageProvider *provider, GList *files) { GError *error; + char *mime; EvDocument *document; GList *pages = NULL; NautilusFileInfo *file; @@ -95,12 +96,12 @@ ev_properties_get_pages (NautilusPropertyPageProvider *provider, goto end; file = files->data; - if (!nautilus_file_info_is_mime_type (file, "application/pdf")) { - goto end; - } /* okay, make the page */ - document = EV_DOCUMENT (pdf_document_new ()); + mime = nautilus_file_info_get_mime_type (file); + document = ev_document_factory_get_document (mime); + g_free (mime); + uri = nautilus_file_info_get_uri (file); if (!ev_document_load (document, uri, &error)) { g_error_free (error); diff --git a/shell/Makefile.am b/shell/Makefile.am index 7dc939ff..2b887967 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -22,9 +22,7 @@ endif bin_PROGRAMS=evince noinst_LTLIBRARIES = libevbackendfactory.la -libevbackendfactory_la_SOURCES= \ - ev-document-types.c \ - ev-document-types.h +libevbackendfactory_la_SOURCES = libevbackendfactory_la_LIBADD = \ $(top_builddir)/pdf/libpdfdocument.la \ @@ -57,6 +55,8 @@ evince_SOURCES= \ eggfindbar.h \ ev-application.c \ ev-application.h \ + ev-document-types.c \ + ev-document-types.h \ ev-job-queue.h \ ev-job-queue.c \ ev-jobs.h \ diff --git a/thumbnailer/Makefile.am b/thumbnailer/Makefile.am index 8a4e9334..a2f7909e 100644 --- a/thumbnailer/Makefile.am +++ b/thumbnailer/Makefile.am @@ -5,9 +5,7 @@ NULL= INCLUDES= \ -DDATADIR=\"$(pkgdatadir)\" \ -I$(top_srcdir)/lib \ - -I$(top_srcdir)/pdf \ -I$(top_srcdir)/backend \ - -I$(top_srcdir)/shell \ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ -DGNOMEICONDIR=\""$(datadir)/pixmaps"\" \ $(THUMBNAILER_CFLAGS) \ diff --git a/thumbnailer/evince-thumbnailer.c b/thumbnailer/evince-thumbnailer.c index 9c672463..4e9f3000 100644 --- a/thumbnailer/evince-thumbnailer.c +++ b/thumbnailer/evince-thumbnailer.c @@ -20,15 +20,42 @@ #include #include #include +#include #include -#include #include +#include #include #define THUMBNAIL_SIZE 128 +static EvDocument * +get_document_from_uri (const char *uri, gboolean slow, gchar **mime_type) +{ + EvDocument *document = NULL; + GnomeVFSFileInfo *info; + GnomeVFSResult result; + + info = gnome_vfs_file_info_new (); + result = gnome_vfs_get_file_info (uri, info, + GNOME_VFS_FILE_INFO_GET_MIME_TYPE | + GNOME_VFS_FILE_INFO_FOLLOW_LINKS | + (slow ? GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE : 0)); + if (result != GNOME_VFS_OK || info->mime_type == NULL) { + goto end; + } + + document = ev_document_factory_get_document (info->mime_type); + if (mime_type != NULL) { + *mime_type = info->mime_type ? g_strdup (info->mime_type) : NULL; + } + +end: + gnome_vfs_file_info_unref (info); + return document; +} + static gboolean evince_thumbnail_pngenc_get (const char *uri, const char *thumbnail, int size) { @@ -37,9 +64,13 @@ evince_thumbnail_pngenc_get (const char *uri, const char *thumbnail, int size) GdkPixbuf *pixbuf; char *mime_type = NULL; - document = ev_document_types_get_document (uri, &mime_type, &error); - if (document == NULL) + document = get_document_from_uri (uri, FALSE, &mime_type); + if (document == NULL) { + document = get_document_from_uri (uri, TRUE, &mime_type); + } + if (document == NULL) { return FALSE; + } if (!ev_document_load (document, uri, &error)) { if (error->domain == EV_DOCUMENT_ERROR &&