2 * Copyright (C) 2000, 2001 Eazel Inc.
3 * Copyright (C) 2003 Andrew Sobala <aes@gnome.org>
4 * Copyright (C) 2005 Bastien Nocera <hadess@hadess.net>
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
16 * You should have received a copy of the GNU General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 * The Ev project hereby grant permission for non-gpl compatible GStreamer
21 * plugins to be used and distributed together with GStreamer and Ev. This
22 * permission are above and beyond the permissions granted by the GPL license
25 * Monday 7th February 2005: Christian Schaller: Add excemption clause.
26 * See license_change file for details.
30 #include "ev-properties-view.h"
31 #include "ev-document-factory.h"
35 #include <glib/gi18n-lib.h>
36 #include <gtk/gtklabel.h>
37 #include <libnautilus-extension/nautilus-extension-types.h>
38 #include <libnautilus-extension/nautilus-property-page-provider.h>
40 static GType epp_type = 0;
41 static void property_page_provider_iface_init
42 (NautilusPropertyPageProviderIface *iface);
43 static GList *ev_properties_get_pages
44 (NautilusPropertyPageProvider *provider, GList *files);
47 ev_properties_plugin_register_type (GTypeModule *module)
49 static const GTypeInfo info = {
50 sizeof (GObjectClass),
52 (GBaseFinalizeFunc) NULL,
53 (GClassInitFunc) NULL,
58 (GInstanceInitFunc) NULL
60 static const GInterfaceInfo property_page_provider_iface_info = {
61 (GInterfaceInitFunc)property_page_provider_iface_init,
66 epp_type = g_type_module_register_type (module, G_TYPE_OBJECT,
69 g_type_module_add_interface (module,
71 NAUTILUS_TYPE_PROPERTY_PAGE_PROVIDER,
72 &property_page_provider_iface_info);
76 property_page_provider_iface_init (NautilusPropertyPageProviderIface *iface)
78 iface->get_pages = ev_properties_get_pages;
82 ev_properties_get_pages (NautilusPropertyPageProvider *provider,
89 NautilusFileInfo *file;
91 GtkWidget *page, *label;
92 NautilusPropertyPage *property_page;
93 GType type = G_TYPE_INVALID;
95 /* only add properties page if a single file is selected */
96 if (files == NULL || files->next != NULL)
100 /* okay, make the page */
101 mime = nautilus_file_info_get_mime_type (file);
102 document = ev_document_factory_get_from_mime (mime);
105 if (document == NULL)
108 uri = nautilus_file_info_get_uri (file);
109 if (!ev_document_load (document, uri, &error)) {
111 g_error_free (error);
115 label = gtk_label_new (_("Document"));
116 page = ev_properties_view_new ();
117 ev_properties_view_set_info (EV_PROPERTIES_VIEW (page),
118 ev_document_get_info (document));
119 gtk_widget_show (page);
120 property_page = nautilus_property_page_new ("document-properties",
122 g_object_unref (document);
124 pages = g_list_prepend (pages, property_page);
131 /* --- extension interface --- */
133 nautilus_module_initialize (GTypeModule *module)
135 ev_properties_plugin_register_type (module);
136 ev_properties_view_register_type (module);
138 /* set up translation catalog */
139 bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
140 bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
144 nautilus_module_shutdown (void)
149 nautilus_module_list_types (const GType **types,
152 static GType type_list[1];
154 type_list[0] = epp_type;
156 *num_types = G_N_ELEMENTS (type_list);