]> www.fi.muni.cz Git - evince.git/commitdiff
Rework factory functions so they are placed now in a single file
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Thu, 30 Mar 2006 22:20:35 +0000 (22:20 +0000)
committerNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Thu, 30 Mar 2006 22:20:35 +0000 (22:20 +0000)
* backend/ev-document-factory.c:
(ev_document_factory_get_from_mime),
(ev_document_factory_get_all_mime_types), (get_document_from_uri),
(ev_document_factory_get_document),
(file_filter_add_mime_list_and_free),
(ev_document_factory_add_filters):
* backend/ev-document-factory.h:
* properties/ev-properties-main.c: (ev_properties_get_pages):
* shell/Makefile.am:
* shell/ev-application.c:
* shell/ev-job-xfer.c: (ev_job_xfer_run):
* shell/ev-window.c: (ev_window_cmd_file_open),
(ev_window_cmd_save_as):
* thumbnailer/evince-thumbnailer.c: (evince_thumbnail_pngenc_get):

Rework factory functions so they are placed now in a single
file ev-document-factory.c

ChangeLog
backend/ev-document-factory.c
backend/ev-document-factory.h
properties/ev-properties-main.c
shell/Makefile.am
shell/ev-application.c
shell/ev-document-types.c [deleted file]
shell/ev-document-types.h [deleted file]
shell/ev-job-xfer.c
shell/ev-window.c
thumbnailer/evince-thumbnailer.c

index 0829bef43b15944370d5ef9b660c502fbb80a79a..68b1554a21fc64351f00148b735172abcb8cb084 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2006-03-31  Nickolay V. Shmyrev  <nshmyrev@yandex.ru>
+
+       * backend/ev-document-factory.c:
+       (ev_document_factory_get_from_mime),
+       (ev_document_factory_get_all_mime_types), (get_document_from_uri),
+       (ev_document_factory_get_document),
+       (file_filter_add_mime_list_and_free),
+       (ev_document_factory_add_filters):
+       * backend/ev-document-factory.h:
+       * properties/ev-properties-main.c: (ev_properties_get_pages):
+       * shell/Makefile.am:
+       * shell/ev-application.c:
+       * shell/ev-job-xfer.c: (ev_job_xfer_run):
+       * shell/ev-window.c: (ev_window_cmd_file_open),
+       (ev_window_cmd_save_as):
+       * thumbnailer/evince-thumbnailer.c: (evince_thumbnail_pngenc_get):
+       
+       Rework factory functions so they are placed now in a single 
+       file ev-document-factory.c
+
 2006-03-28  Nickolay V. Shmyrev  <nshmyrev@yandex.ru>
 
        * shell/ev-window.c: (update_chrome_visibility):
index e15f7213750c6831e94fa9cb2847a2f135dfd491..c7314ecffe28af832cc38305e10db6690117e3b0 100644 (file)
 #endif
 
 #include <string.h>
+#include <glib/gi18n.h>
+#include <libgnomevfs/gnome-vfs-mime-utils.h>
+#include <libgnomevfs/gnome-vfs-file-info.h>
+#include <libgnomevfs/gnome-vfs-ops.h>
+#include <gtk/gtkfilechooserdialog.h>
 
 typedef struct _EvDocumentType EvDocumentType;
 struct _EvDocumentType
@@ -137,40 +142,32 @@ mime_type_supported_by_gdk_pixbuf (const gchar *mime_type)
 }
 #endif
 
-static GType
-ev_document_type_get_from_mime (const char *mime_type)
+EvDocument*
+ev_document_factory_get_from_mime (const char *mime_type)
 {
        int i;
+       GType type = G_TYPE_INVALID;
+       EvDocument *document = NULL;
        
        g_return_val_if_fail (mime_type, G_TYPE_INVALID);
 
        for (i = 0; i < G_N_ELEMENTS (document_types); i++) {
                if (strcmp (mime_type, document_types[i].mime_type) == 0) {
                        g_assert (document_types[i].document_type_factory_callback != NULL);
-                       return document_types[i].document_type_factory_callback();
+                       type = document_types[i].document_type_factory_callback();
+                       break;
                }
        }
 #ifdef ENABLE_PIXBUF
-       if (mime_type_supported_by_gdk_pixbuf (mime_type)) {
-               return pixbuf_document_get_type ();
+       if (type == G_TYPE_INVALID && mime_type_supported_by_gdk_pixbuf (mime_type)) {
+               type = pixbuf_document_get_type ();
        }
 #endif
-
-       return G_TYPE_INVALID;
-}
-
-EvDocument *
-ev_document_factory_get_document (const char *mime_type)
-{
-       GType type = G_TYPE_INVALID;
-       
-       type = ev_document_type_get_from_mime (mime_type);
-
        if (type != G_TYPE_INVALID) {
-               return g_object_new (type, NULL);
-       }
-               
-       return NULL;
+               document = g_object_new (type, NULL);
+       } 
+
+       return document;
 }
 
 EvBackend
@@ -194,7 +191,7 @@ ev_document_factory_get_backend (EvDocument *document)
        return 0;
 }
 
-GList *
+static GList *
 ev_document_factory_get_mime_types (EvBackend backend)
 {
        GList *types = NULL;
@@ -215,7 +212,7 @@ ev_document_factory_get_mime_types (EvBackend backend)
        return types;
 }
 
-GList *
+static GList *
 ev_document_factory_get_all_mime_types (void)
 {
        GList *types = NULL;
@@ -231,3 +228,174 @@ ev_document_factory_get_all_mime_types (void)
 
        return types;
 }
+
+static EvDocument *
+get_document_from_uri (const char *uri, gboolean slow, gchar **mime_type, GError **error)
+{
+       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) {
+               g_set_error (error,
+                            EV_DOCUMENT_ERROR,
+                            0,
+                            gnome_vfs_result_to_string (result));                      
+               gnome_vfs_file_info_unref (info);
+               return NULL;
+        } 
+       
+       if (info->mime_type == NULL) {
+               g_set_error (error,
+                            EV_DOCUMENT_ERROR, 
+                            0,
+                            _("Unknown MIME Type"));
+               gnome_vfs_file_info_unref (info);
+               return NULL;
+       }
+       
+       document = ev_document_factory_get_from_mime (info->mime_type);
+               
+       if (document == NULL) {
+               g_set_error (error,
+                            EV_DOCUMENT_ERROR, 
+                            0,
+                            _("Unhandled MIME type: '%s'"), info->mime_type);
+               gnome_vfs_file_info_unref (info);
+               return NULL;
+       }                       
+
+       if (mime_type != NULL) {
+                   *mime_type = g_strdup (info->mime_type);
+       }
+
+        gnome_vfs_file_info_unref (info);
+       
+        return document;
+}
+
+EvDocument *
+ev_document_factory_get_document (const char *uri, gchar **mime_type, GError **error)
+{
+       EvDocument *document;
+       
+       document = get_document_from_uri (uri, FALSE, mime_type, error);
+
+       if (document != NULL) {
+               return document;
+       }
+               
+       if (error) {
+               g_error_free (*error);
+               *error = NULL;
+       }
+
+       document = get_document_from_uri (uri, TRUE, mime_type, error);
+
+       return document;
+}
+
+static void
+file_filter_add_mime_list_and_free (GtkFileFilter *filter, GList *mime_types)
+{
+       GList *l;
+
+       for (l = mime_types; l != NULL; l = l->next) {
+               gtk_file_filter_add_mime_type (filter, l->data);
+       }
+
+       g_list_foreach (mime_types, (GFunc)g_free, NULL);
+       g_list_free (mime_types);
+}
+
+void 
+ev_document_factory_add_filters (GtkWidget *chooser, EvDocument *document)
+{
+       EvBackend backend = 0;
+       GList *mime_types;
+       GtkFileFilter *filter;
+       GtkFileFilter *default_filter;
+       GtkFileFilter *document_filter;
+
+       if (document != NULL) {
+               backend = ev_document_factory_get_backend (document);
+       }
+
+       default_filter = document_filter = filter = gtk_file_filter_new ();
+       gtk_file_filter_set_name (filter, _("All Documents"));
+       mime_types = ev_document_factory_get_all_mime_types ();
+       file_filter_add_mime_list_and_free (filter, mime_types);
+       gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+
+#ifdef ENABLE_PS
+       if (document == NULL || backend == EV_BACKEND_PS) {
+               default_filter = filter = gtk_file_filter_new ();
+               gtk_file_filter_set_name (filter, _("PostScript Documents"));
+               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_PS);
+               file_filter_add_mime_list_and_free (filter, mime_types);
+               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+       }
+#endif
+
+       if (document == NULL || backend == EV_BACKEND_PDF) {
+               default_filter = filter = gtk_file_filter_new ();
+               gtk_file_filter_set_name (filter, _("PDF Documents"));
+               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_PDF);
+               file_filter_add_mime_list_and_free (filter, mime_types);
+               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+       }
+
+#ifdef ENABLE_PIXBUF
+       if (document == NULL || backend == EV_BACKEND_PIXBUF) {
+               default_filter = filter = gtk_file_filter_new ();
+               gtk_file_filter_set_name (filter, _("Images"));
+               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_PIXBUF);
+               file_filter_add_mime_list_and_free (filter, mime_types);
+               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+       }
+#endif
+
+#ifdef ENABLE_DVI
+       if (document == NULL || backend == EV_BACKEND_DVI) {
+               default_filter = filter = gtk_file_filter_new ();
+               gtk_file_filter_set_name (filter, _("DVI Documents"));
+               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_DVI);
+               file_filter_add_mime_list_and_free (filter, mime_types);
+               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+       }
+#endif
+
+#ifdef ENABLE_DJVU
+       if (document == NULL || backend == EV_BACKEND_DJVU) {
+               default_filter = filter = gtk_file_filter_new ();
+               gtk_file_filter_set_name (filter, _("Djvu Documents"));
+               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_DJVU);
+               file_filter_add_mime_list_and_free (filter, mime_types);
+               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+       }
+#endif 
+
+#ifdef ENABLE_COMICS
+       if (document == NULL || backend == EV_BACKEND_COMICS) {
+               default_filter = filter = gtk_file_filter_new ();
+               gtk_file_filter_set_name (filter, _("Comic Books"));
+               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_COMICS);
+               file_filter_add_mime_list_and_free (filter, mime_types);
+               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+       }
+#endif 
+
+       filter = gtk_file_filter_new ();
+       gtk_file_filter_set_name (filter, _("All Files"));
+       gtk_file_filter_add_pattern (filter, "*");
+       gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+
+       gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser),
+                                    document == NULL ? document_filter : default_filter);
+}
index f299730686d64a202aec709ec48140c3f7f00183..b2c9659173d34b4fae3e26f4d47c75fefe78a83e 100644 (file)
@@ -21,6 +21,7 @@
 #ifndef EV_DOCUMENT_FACTORY_H
 #define EV_DOCUMENT_FACTORY_H
 
+#include <gtk/gtk.h>
 #include "ev-document.h"
 
 G_BEGIN_DECLS
@@ -35,10 +36,10 @@ typedef enum {
        EV_BACKEND_COMICS
 } EvBackend;
 
-EvDocument *ev_document_factory_get_document           (const char *mime_type);
-EvBackend   ev_document_factory_get_backend            (EvDocument *document);
-GList      *ev_document_factory_get_mime_types         (EvBackend   backend);
-GList      *ev_document_factory_get_all_mime_types     (void);
+EvDocument* ev_document_factory_get_from_mime (const char *mime_type);
+EvDocument* ev_document_factory_get_document (const char *uri, gchar **mime_type, GError **error);
+EvBackend   ev_document_factory_get_backend  (EvDocument *document);
+void       ev_document_factory_add_filters  (GtkWidget *chooser, EvDocument *document);
 
 G_END_DECLS
 
index 2e566d5505763b5397f4641f27f95162088434b5..c97f7fc2b0ed836b355365636108321b145fda82 100644 (file)
@@ -90,6 +90,7 @@ ev_properties_get_pages (NautilusPropertyPageProvider *provider,
        char *uri = NULL;
        GtkWidget *page, *label;
        NautilusPropertyPage *property_page;
+       GType type = G_TYPE_INVALID;
 
        /* only add properties page if a single file is selected */
        if (files == NULL || files->next != NULL)
@@ -98,7 +99,7 @@ ev_properties_get_pages (NautilusPropertyPageProvider *provider,
 
        /* okay, make the page */
        mime = nautilus_file_info_get_mime_type (file);
-       document = ev_document_factory_get_document (mime);
+       document = ev_document_factory_get_from_mime (mime);
        g_free (mime);
 
        if (document == NULL)
index c8703c059854bdb58a39025d271ed1d3f8eb4fac..0e80fe91330d2244136c8df84030d55dd29f30fc 100644 (file)
@@ -20,8 +20,6 @@ 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                       \
index c0a7ea2ba9c5eac017ff2f4949813649ca846143..8721a0cd879a11cfa6917dabfa1a4012ca9d74e9 100644 (file)
@@ -26,8 +26,8 @@
 
 #include "ev-application.h"
 #include "ev-utils.h"
-#include "ev-document-types.h"
 #include "ev-file-helpers.h"
+#include "ev-document-factory.h"
 
 #include <glib.h>
 #include <glib/gi18n.h>
diff --git a/shell/ev-document-types.c b/shell/ev-document-types.c
deleted file mode 100644 (file)
index 23d940c..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */
-/*
- *  Copyright (C) 2005, Red Hat, Inc. 
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "ev-document-types.h"
-#include "ev-document-factory.h"
-
-#include <string.h>
-#include <glib/gi18n.h>
-#include <libgnomevfs/gnome-vfs-mime-utils.h>
-#include <libgnomevfs/gnome-vfs-file-info.h>
-#include <libgnomevfs/gnome-vfs-ops.h>
-#include <gtk/gtkfilechooserdialog.h>
-
-static EvDocument *
-get_document_from_uri (const char *uri, gboolean slow, gchar **mime_type, GError **error)
-{
-       EvDocument *document;
-        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) {
-               g_set_error (error,
-                            EV_DOCUMENT_ERROR,
-                            0,
-                            gnome_vfs_result_to_string (result));                      
-               gnome_vfs_file_info_unref (info);
-               return NULL;
-        } 
-       
-       if (info->mime_type == NULL) {
-               g_set_error (error,
-                            EV_DOCUMENT_ERROR, 
-                            0,
-                            _("Unknown MIME Type"));
-               gnome_vfs_file_info_unref (info);
-               return NULL;
-       }
-       
-       document = ev_document_factory_get_document (info->mime_type);
-       
-       if (document == NULL) {
-               g_set_error (error,
-                            EV_DOCUMENT_ERROR, 
-                            0,
-                            _("Unhandled MIME type: '%s'"), info->mime_type);
-               gnome_vfs_file_info_unref (info);
-               return NULL;
-       }                       
-
-       if (mime_type != NULL) {
-                   *mime_type = g_strdup (info->mime_type);
-       }
-
-        gnome_vfs_file_info_unref (info);
-       
-        return document;
-}
-
-EvDocument *
-ev_document_types_get_document (const char *uri, gchar **mime_type, GError **error)
-{
-       EvDocument *document;
-       
-       document = get_document_from_uri (uri, FALSE, mime_type, error);
-
-       if (document != NULL) {
-               return document;
-       }
-               
-       if (error) {
-               g_error_free (*error);
-               *error = NULL;
-       }
-
-       document = get_document_from_uri (uri, TRUE, mime_type, error);
-
-       return document;
-}
-
-static void
-file_filter_add_mime_list_and_free (GtkFileFilter *filter, GList *mime_types)
-{
-       GList *l;
-
-       for (l = mime_types; l != NULL; l = l->next) {
-               gtk_file_filter_add_mime_type (filter, l->data);
-       }
-
-       g_list_foreach (mime_types, (GFunc)g_free, NULL);
-       g_list_free (mime_types);
-}
-
-void 
-ev_document_types_add_filters (GtkWidget *chooser, EvDocument *document)
-{
-       EvBackend backend = 0;
-       GList *mime_types;
-       GtkFileFilter *filter;
-       GtkFileFilter *default_filter;
-       GtkFileFilter *document_filter;
-
-       if (document != NULL) {
-               backend = ev_document_factory_get_backend (document);
-       }
-
-       default_filter = document_filter = filter = gtk_file_filter_new ();
-       gtk_file_filter_set_name (filter, _("All Documents"));
-       mime_types = ev_document_factory_get_all_mime_types ();
-       file_filter_add_mime_list_and_free (filter, mime_types);
-       gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
-
-#ifdef ENABLE_PS
-       if (document == NULL || backend == EV_BACKEND_PS) {
-               default_filter = filter = gtk_file_filter_new ();
-               gtk_file_filter_set_name (filter, _("PostScript Documents"));
-               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_PS);
-               file_filter_add_mime_list_and_free (filter, mime_types);
-               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
-       }
-#endif
-
-       if (document == NULL || backend == EV_BACKEND_PDF) {
-               default_filter = filter = gtk_file_filter_new ();
-               gtk_file_filter_set_name (filter, _("PDF Documents"));
-               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_PDF);
-               file_filter_add_mime_list_and_free (filter, mime_types);
-               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
-       }
-
-#ifdef ENABLE_PIXBUF
-       if (document == NULL || backend == EV_BACKEND_PIXBUF) {
-               default_filter = filter = gtk_file_filter_new ();
-               gtk_file_filter_set_name (filter, _("Images"));
-               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_PIXBUF);
-               file_filter_add_mime_list_and_free (filter, mime_types);
-               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
-       }
-#endif
-
-#ifdef ENABLE_DVI
-       if (document == NULL || backend == EV_BACKEND_DVI) {
-               default_filter = filter = gtk_file_filter_new ();
-               gtk_file_filter_set_name (filter, _("DVI Documents"));
-               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_DVI);
-               file_filter_add_mime_list_and_free (filter, mime_types);
-               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
-       }
-#endif
-
-#ifdef ENABLE_DJVU
-       if (document == NULL || backend == EV_BACKEND_DJVU) {
-               default_filter = filter = gtk_file_filter_new ();
-               gtk_file_filter_set_name (filter, _("Djvu Documents"));
-               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_DJVU);
-               file_filter_add_mime_list_and_free (filter, mime_types);
-               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
-       }
-#endif 
-
-#ifdef ENABLE_COMICS
-       if (document == NULL || backend == EV_BACKEND_COMICS) {
-               default_filter = filter = gtk_file_filter_new ();
-               gtk_file_filter_set_name (filter, _("Comic Books"));
-               mime_types = ev_document_factory_get_mime_types (EV_BACKEND_COMICS);
-               file_filter_add_mime_list_and_free (filter, mime_types);
-               gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
-       }
-#endif 
-
-       filter = gtk_file_filter_new ();
-       gtk_file_filter_set_name (filter, _("All Files"));
-       gtk_file_filter_add_pattern (filter, "*");
-       gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
-
-       gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser),
-                                    document == NULL ? document_filter : default_filter);
-}
diff --git a/shell/ev-document-types.h b/shell/ev-document-types.h
deleted file mode 100644 (file)
index 1d8b0df..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */
-/*
- *  Copyright (C) 2005, Red Hat, Inc. 
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef EV_DOCUMENT_TYPES_H
-#define EV_DOCUMENT_TYPES_H
-
-#include "ev-document.h"
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-EvDocument     *ev_document_types_get_document         (const char   *uri,
-                                                        gchar       **mime_type,
-                                                        GError      **error);
-void           ev_document_types_add_filters           (GtkWidget    *chooser,
-                                                        EvDocument   *document);
-
-G_END_DECLS
-
-#endif
index cc9b7c4709f70968eb88f32258239deb4a90fd62..b169f46da9b9ba991c24e1c81b89b660f12aebeb 100644 (file)
@@ -23,8 +23,8 @@
 
 
 #include "ev-job-xfer.h"
-#include "ev-document-types.h"
 #include "ev-file-helpers.h"
+#include "ev-document-factory.h"
 
 #include <glib/gi18n.h>
 #include <glib.h>
@@ -102,7 +102,7 @@ ev_job_xfer_run (EvJobXfer *job)
                job->error = NULL;
        }
 
-       document = ev_document_types_get_document (job->uri, NULL, &error);
+       document = ev_document_factory_get_document (job->uri, NULL, &error);
 
        if (document != NULL) {
                EV_JOB (job)->document = document;
index 2edc77553afdaa1e86f2933f931e86f93457d8da..460fce043838ba06fb7d2b642708f923b4f4f1f8 100644 (file)
@@ -44,7 +44,7 @@
 #include "ev-document-fonts.h"
 #include "ev-document-find.h"
 #include "ev-document-security.h"
-#include "ev-document-types.h"
+#include "ev-document-factory.h"
 #include "ev-job-queue.h"
 #include "ev-jobs.h"
 #include "ev-sidebar-page.h"
@@ -1162,7 +1162,7 @@ ev_window_cmd_file_open (GtkAction *action, EvWindow *window)
                                               GTK_STOCK_OPEN, GTK_RESPONSE_OK,
                                               NULL);
 
-       ev_document_types_add_filters (chooser, NULL);
+       ev_document_factory_add_filters (chooser, NULL);
        gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (chooser), TRUE);
        gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (chooser), FALSE);
        if (ev_application_get_chooser_uri (EV_APP) != NULL)
@@ -1283,7 +1283,7 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window)
                GTK_STOCK_SAVE, GTK_RESPONSE_OK,
                NULL);
 
-       ev_document_types_add_filters (fc, ev_window->priv->document);
+       ev_document_factory_add_filters (fc, ev_window->priv->document);
        gtk_dialog_set_default_response (GTK_DIALOG (fc), GTK_RESPONSE_OK);
 
 #ifdef HAVE_GTK_FILE_CHOOSER_SET_DO_OVERWRITE_CONFIRMATION
index 513d9e2d9815ea4590ed672f5709a6bc0b573393..8c79ae92db73228760a904a9e19c61efd1ce86b6 100644 (file)
 
 #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)
 {
@@ -64,11 +38,9 @@ evince_thumbnail_pngenc_get (const char *uri, const char *thumbnail, int size)
        GdkPixbuf *pixbuf;
        char *mime_type = 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) {
+       document = ev_document_factory_get_document  (uri, &mime_type, &error);
+
+       if (document == NULL || error) {
                return FALSE;
        }