summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/reference/libnautilus-extension/libnautilus-extension-docs.xml17
-rw-r--r--docs/reference/libnautilus-extension/libnautilus-extension-sections.txt102
-rw-r--r--libnautilus-extension/meson.build41
-rw-r--r--libnautilus-extension/nautilus-column-provider.c49
-rw-r--r--libnautilus-extension/nautilus-column-provider.h31
-rw-r--r--libnautilus-extension/nautilus-column.c50
-rw-r--r--libnautilus-extension/nautilus-column.h35
-rw-r--r--libnautilus-extension/nautilus-extension-types.c58
-rw-r--r--libnautilus-extension/nautilus-extension-types.h67
-rw-r--r--libnautilus-extension/nautilus-extension.h43
-rw-r--r--libnautilus-extension/nautilus-file-info.c326
-rw-r--r--libnautilus-extension/nautilus-file-info.h141
-rw-r--r--libnautilus-extension/nautilus-info-provider.c68
-rw-r--r--libnautilus-extension/nautilus-info-provider.h95
-rw-r--r--libnautilus-extension/nautilus-location-widget-provider.c49
-rw-r--r--libnautilus-extension/nautilus-location-widget-provider.h39
-rw-r--r--libnautilus-extension/nautilus-menu-item.c143
-rw-r--r--libnautilus-extension/nautilus-menu-item.h4
-rw-r--r--libnautilus-extension/nautilus-menu-provider.c98
-rw-r--r--libnautilus-extension/nautilus-menu-provider.h53
-rw-r--r--libnautilus-extension/nautilus-menu.c45
-rw-r--r--libnautilus-extension/nautilus-menu.h87
-rw-r--r--libnautilus-extension/nautilus-property-page-provider.c50
-rw-r--r--libnautilus-extension/nautilus-property-page-provider.h36
-rw-r--r--libnautilus-extension/nautilus-property-page.c86
-rw-r--r--libnautilus-extension/nautilus-property-page.h37
-rw-r--r--src/nautilus-application.c3
-rw-r--r--src/nautilus-column-chooser.c2
-rw-r--r--src/nautilus-column-utilities.c2
-rw-r--r--src/nautilus-column-utilities.h1
-rw-r--r--src/nautilus-desktop-item-properties.c3
-rw-r--r--src/nautilus-directory-private.h2
-rw-r--r--src/nautilus-file.c552
-rw-r--r--src/nautilus-files-view.c6
-rw-r--r--src/nautilus-list-model.h2
-rw-r--r--src/nautilus-list-view.c1
-rw-r--r--src/nautilus-preferences-window.c2
-rw-r--r--src/nautilus-properties-window.c2
-rw-r--r--src/nautilus-ui-utilities.h1
-rw-r--r--src/nautilus-window-slot.c2
40 files changed, 1177 insertions, 1254 deletions
diff --git a/docs/reference/libnautilus-extension/libnautilus-extension-docs.xml b/docs/reference/libnautilus-extension/libnautilus-extension-docs.xml
index a5d8badbe..1c88c6339 100644
--- a/docs/reference/libnautilus-extension/libnautilus-extension-docs.xml
+++ b/docs/reference/libnautilus-extension/libnautilus-extension-docs.xml
@@ -15,18 +15,23 @@
<title>API Reference</title>
<chapter>
+ <title>Core Classes</title>
+ <xi:include href="xml/nautilus-column.xml" />
+ <xi:include href="xml/nautilus-file-info.xml" />
+ <xi:include href="xml/nautilus-menu.xml" />
+ <xi:include href="xml/nautilus-menu-item.xml" />
+ <xi:include href="xml/nautilus-property-page.xml" />
+ </chapter>
+
+ <xi:include href="xml/nautilus-extension.xml" />
+
+ <chapter>
<title>Extension Interfaces</title>
<xi:include href="xml/nautilus-column-provider.xml" />
- <xi:include href="xml/nautilus-column.xml" />
- <xi:include href="xml/nautilus-extension-types.xml" />
- <xi:include href="xml/nautilus-file-info.xml" />
<xi:include href="xml/nautilus-info-provider.xml" />
<xi:include href="xml/nautilus-location-widget-provider.xml" />
<xi:include href="xml/nautilus-menu-provider.xml" />
- <xi:include href="xml/nautilus-menu.xml" />
- <xi:include href="xml/nautilus-menu-item.xml" />
<xi:include href="xml/nautilus-property-page-provider.xml" />
- <xi:include href="xml/nautilus-property-page.xml" />
</chapter>
</part>
diff --git a/docs/reference/libnautilus-extension/libnautilus-extension-sections.txt b/docs/reference/libnautilus-extension/libnautilus-extension-sections.txt
index ea216d3fd..e7d9d7340 100644
--- a/docs/reference/libnautilus-extension/libnautilus-extension-sections.txt
+++ b/docs/reference/libnautilus-extension/libnautilus-extension-sections.txt
@@ -1,46 +1,34 @@
+<INCLUDE>nautilus-extension.h</INCLUDE>
+
+<SECTION>
+<FILE>nautilus-extension</FILE>
+nautilus_module_initialize
+nautilus_module_shutdown
+nautilus_module_list_types
+</SECTION>
+
<SECTION>
<FILE>nautilus-location-widget-provider</FILE>
NautilusLocationWidgetProvider
-NautilusLocationWidgetProviderIface
+NautilusLocationWidgetProviderInterface
nautilus_location_widget_provider_get_widget
-<SUBSECTION Standard>
-NAUTILUS_LOCATION_WIDGET_PROVIDER
-NAUTILUS_IS_LOCATION_WIDGET_PROVIDER
-NAUTILUS_TYPE_LOCATION_WIDGET_PROVIDER
-nautilus_location_widget_provider_get_type
-NAUTILUS_LOCATION_WIDGET_PROVIDER_GET_IFACE
</SECTION>
<SECTION>
<FILE>nautilus-menu-provider</FILE>
NautilusMenuProvider
-NautilusMenuProviderIface
+NautilusMenuProviderInterface
nautilus_menu_provider_get_file_items
nautilus_menu_provider_get_background_items
nautilus_menu_provider_emit_items_updated_signal
-<SUBSECTION Standard>
-NAUTILUS_MENU_PROVIDER
-NAUTILUS_IS_MENU_PROVIDER
-NAUTILUS_TYPE_MENU_PROVIDER
-nautilus_menu_provider_get_type
-NAUTILUS_MENU_PROVIDER_GET_IFACE
</SECTION>
<SECTION>
<FILE>nautilus-menu</FILE>
-NautilusMenuPrivate
NautilusMenu
nautilus_menu_new
nautilus_menu_append_item
nautilus_menu_get_items
-<SUBSECTION Standard>
-NAUTILUS_MENU
-NAUTILUS_IS_MENU
-NAUTILUS_TYPE_MENU
-nautilus_menu_get_type
-NAUTILUS_MENU_CLASS
-NAUTILUS_IS_MENU_CLASS
-NAUTILUS_MENU_GET_CLASS
</SECTION>
<SECTION>
@@ -51,40 +39,20 @@ nautilus_menu_item_get_type
nautilus_menu_item_new
nautilus_menu_item_activate
nautilus_menu_item_set_submenu
-<SUBSECTION Standard>
-NAUTILUS_TYPE_MENU_ITEM
-NAUTILUS_MENU_ITEM
-NAUTILUS_MENU_ITEM_CLASS
-NAUTILUS_MENU_IS_ITEM
-NAUTILUS_MENU_IS_ITEM_CLASS
-NAUTILUS_MENU_ITEM_GET_CLASS
-NautilusMenuItemDetails
</SECTION>
<SECTION>
<FILE>nautilus-column-provider</FILE>
NautilusColumnProvider
-NautilusColumnProviderIface
+NautilusColumnProviderInterface
nautilus_column_provider_get_columns
-<SUBSECTION Standard>
-NAUTILUS_COLUMN_PROVIDER
-NAUTILUS_IS_COLUMN_PROVIDER
-NAUTILUS_TYPE_COLUMN_PROVIDER
-nautilus_column_provider_get_type
-NAUTILUS_COLUMN_PROVIDER_GET_IFACE
</SECTION>
<SECTION>
<FILE>nautilus-property-page-provider</FILE>
NautilusPropertyPageProvider
-NautilusPropertyPageProviderIface
+NautilusPropertyPageProviderInterface
nautilus_property_page_provider_get_pages
-<SUBSECTION Standard>
-NAUTILUS_PROPERTY_PAGE_PROVIDER
-NAUTILUS_IS_PROPERTY_PAGE_PROVIDER
-NAUTILUS_TYPE_PROPERTY_PAGE_PROVIDER
-nautilus_property_page_provider_get_type
-NAUTILUS_PROPERTY_PAGE_PROVIDER_GET_IFACE
</SECTION>
<SECTION>
@@ -92,7 +60,7 @@ NAUTILUS_PROPERTY_PAGE_PROVIDER_GET_IFACE
NAUTILUS_FILE_DEFINED
NautilusFile
NautilusFileInfo
-NautilusFileInfoIface
+NautilusFileInfoInterface
nautilus_file_info_create
nautilus_file_info_create_for_uri
nautilus_file_info_lookup
@@ -118,68 +86,28 @@ nautilus_file_info_add_emblem
nautilus_file_info_get_string_attribute
nautilus_file_info_add_string_attribute
nautilus_file_info_invalidate_extension_info
-<SUBSECTION Standard>
-NAUTILUS_FILE_INFO
-NAUTILUS_IS_FILE_INFO
-NAUTILUS_TYPE_FILE_INFO
-nautilus_file_info_get_type
-NAUTILUS_FILE_INFO_GET_IFACE
</SECTION>
<SECTION>
<FILE>nautilus-column</FILE>
NautilusColumn
nautilus_column_new
-<SUBSECTION Standard>
-NAUTILUS_COLUMN
-NAUTILUS_INFO_IS_COLUMN
-NAUTILUS_TYPE_COLUMN
-nautilus_column_get_type
-NAUTILUS_COLUMN_CLASS
-NAUTILUS_INFO_IS_COLUMN_CLASS
-NAUTILUS_COLUMN_GET_CLASS
-NautilusColumnDetails
</SECTION>
<SECTION>
<FILE>nautilus-info-provider</FILE>
NautilusInfoProvider
-NautilusInfoProviderIface
-NautilusInfoProviderUpdateComplete
+NautilusInfoProviderInterface
NautilusOperationHandle
NautilusOperationResult
nautilus_info_provider_update_file_info
nautilus_info_provider_cancel_update
nautilus_info_provider_update_complete_invoke
-<SUBSECTION Standard>
-NAUTILUS_TYPE_OPERATION_RESULT
-nautilus_operation_result_get_type
-NAUTILUS_INFO_PROVIDER
-NAUTILUS_IS_INFO_PROVIDER
-NAUTILUS_TYPE_INFO_PROVIDER
-nautilus_info_provider_get_type
-NAUTILUS_INFO_PROVIDER_GET_IFACE
</SECTION>
<SECTION>
<FILE>nautilus-property-page</FILE>
NautilusPropertyPage
nautilus_property_page_new
-<SUBSECTION Standard>
-NAUTILUS_PROPERTY_PAGE
-NAUTILUS_IS_PROPERTY_PAGE
-NAUTILUS_TYPE_PROPERTY_PAGE
-nautilus_property_page_get_type
-NAUTILUS_PROPERTY_PAGE_CLASS
-NAUTILUS_IS_PROPERTY_PAGE_CLASS
-NAUTILUS_PROPERTY_PAGE_GET_CLASS
-NautilusPropertyPageDetails
-</SECTION>
-
-<SECTION>
-<FILE>nautilus-extension-types</FILE>
-nautilus_module_initialize
-nautilus_module_shutdown
-nautilus_module_list_types
</SECTION>
diff --git a/libnautilus-extension/meson.build b/libnautilus-extension/meson.build
index 99dc4309e..e7c5717cf 100644
--- a/libnautilus-extension/meson.build
+++ b/libnautilus-extension/meson.build
@@ -1,13 +1,16 @@
-nautilus_extension_version = '1.4.0'
+nautilus_extension_version = '1.5.0'
+
+libnautilus_extension_deprecated_headers = [
+ 'nautilus-extension-types.h',
+ 'nautilus-menu-item.h'
+]
libnautilus_extension_headers = [
'nautilus-column-provider.h',
'nautilus-column.h',
- 'nautilus-extension-types.h',
'nautilus-file-info.h',
'nautilus-info-provider.h',
'nautilus-location-widget-provider.h',
- 'nautilus-menu-item.h',
'nautilus-menu-provider.h',
'nautilus-property-page-provider.h',
'nautilus-property-page.h',
@@ -15,14 +18,28 @@ libnautilus_extension_headers = [
]
install_headers(
+ 'nautilus-extension.h',
+ subdir: 'nautilus'
+)
+install_headers(
libnautilus_extension_headers,
+ libnautilus_extension_deprecated_headers,
subdir: join_paths('nautilus', 'libnautilus-extension')
)
libnautilus_extension_sources = [
+ gnome.mkenums_simple(
+ 'nautilus-extension-enum-types',
+ install_header: true,
+ install_dir: join_paths(includedir, 'nautilus', 'libnautilus-extension'),
+ sources: [
+ 'nautilus-info-provider.h'
+ ]
+ ),
+ libnautilus_extension_headers,
'nautilus-column-provider.c',
'nautilus-column.c',
- 'nautilus-extension-types.c',
+ 'nautilus-extension.h',
'nautilus-extension-private.h',
'nautilus-file-info.c',
'nautilus-info-provider.c',
@@ -40,8 +57,13 @@ libnautilus_extension_deps = [
]
libnautilus_extension = shared_library(
- 'nautilus-extension',
- libnautilus_extension_sources,
+ 'nautilus-extension', [
+ libnautilus_extension_deprecated_headers,
+ libnautilus_extension_sources,
+ ],
+ c_args: [
+ '-DNAUTILUS_COMPILATION'
+ ],
dependencies: libnautilus_extension_deps,
include_directories: nautilus_include_dirs,
version: nautilus_extension_version,
@@ -50,10 +72,10 @@ libnautilus_extension = shared_library(
gnome.generate_gir(
libnautilus_extension,
- sources: [
- libnautilus_extension_headers,
- libnautilus_extension_sources
+ extra_args: [
+ '-DNAUTILUS_COMPILATION'
],
+ sources: libnautilus_extension_sources,
nsversion: '3.0',
namespace: 'Nautilus',
includes: [
@@ -61,6 +83,7 @@ gnome.generate_gir(
'Gio-2.0',
'GLib-2.0'
],
+ header: 'nautilus-extension.h',
install: true
)
diff --git a/libnautilus-extension/nautilus-column-provider.c b/libnautilus-extension/nautilus-column-provider.c
index 22519a635..f40bebaac 100644
--- a/libnautilus-extension/nautilus-column-provider.c
+++ b/libnautilus-extension/nautilus-column-provider.c
@@ -21,55 +21,24 @@
*
*/
-#include <config.h>
#include "nautilus-column-provider.h"
-#include <glib-object.h>
+G_DEFINE_INTERFACE (NautilusColumnProvider, nautilus_column_provider, G_TYPE_OBJECT)
/**
* SECTION:nautilus-column-provider
* @title: NautilusColumnProvider
* @short_description: Interface to provide additional list view columns
- * @include: libnautilus-extension/nautilus-column-provider.h
*
* #NautilusColumnProvider allows extension to provide additional columns
* in the file manager list view.
*/
static void
-nautilus_column_provider_base_init (gpointer g_class)
+nautilus_column_provider_default_init (NautilusColumnProviderInterface *klass)
{
}
-GType
-nautilus_column_provider_get_type (void)
-{
- static GType type = 0;
-
- if (!type)
- {
- const GTypeInfo info =
- {
- sizeof (NautilusColumnProviderIface),
- nautilus_column_provider_base_init,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,
- 0,
- NULL
- };
-
- type = g_type_register_static (G_TYPE_INTERFACE,
- "NautilusColumnProvider",
- &info, 0);
- g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
- }
-
- return type;
-}
-
/**
* nautilus_column_provider_get_columns:
* @provider: a #NautilusColumnProvider
@@ -77,11 +46,15 @@ nautilus_column_provider_get_type (void)
* Returns: (element-type NautilusColumn) (transfer full): the provided #NautilusColumn objects
*/
GList *
-nautilus_column_provider_get_columns (NautilusColumnProvider *provider)
+nautilus_column_provider_get_columns (NautilusColumnProvider *self)
{
- g_return_val_if_fail (NAUTILUS_IS_COLUMN_PROVIDER (provider), NULL);
- g_return_val_if_fail (NAUTILUS_COLUMN_PROVIDER_GET_IFACE (provider)->get_columns != NULL, NULL);
+ NautilusColumnProviderInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_COLUMN_PROVIDER (self), NULL);
+
+ iface = NAUTILUS_COLUMN_PROVIDER_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_columns != NULL, NULL);
- return NAUTILUS_COLUMN_PROVIDER_GET_IFACE (provider)->get_columns
- (provider);
+ return iface->get_columns (self);
}
diff --git a/libnautilus-extension/nautilus-column-provider.h b/libnautilus-extension/nautilus-column-provider.h
index dd6c8e1f0..de730bf5f 100644
--- a/libnautilus-extension/nautilus-column-provider.h
+++ b/libnautilus-extension/nautilus-column-provider.h
@@ -30,37 +30,40 @@
#ifndef NAUTILUS_COLUMN_PROVIDER_H
#define NAUTILUS_COLUMN_PROVIDER_H
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
#include <glib-object.h>
-#include "nautilus-extension-types.h"
-#include "nautilus-column.h"
G_BEGIN_DECLS
-#define NAUTILUS_TYPE_COLUMN_PROVIDER (nautilus_column_provider_get_type ())
-#define NAUTILUS_COLUMN_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_COLUMN_PROVIDER, NautilusColumnProvider))
-#define NAUTILUS_IS_COLUMN_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_COLUMN_PROVIDER))
-#define NAUTILUS_COLUMN_PROVIDER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NAUTILUS_TYPE_COLUMN_PROVIDER, NautilusColumnProviderIface))
+#define NAUTILUS_TYPE_COLUMN_PROVIDER (nautilus_column_provider_get_type ())
+
+G_DECLARE_INTERFACE (NautilusColumnProvider, nautilus_column_provider,
+ NAUTILUS, COLUMN_PROVIDER,
+ GObject)
-typedef struct _NautilusColumnProvider NautilusColumnProvider;
-typedef struct _NautilusColumnProviderIface NautilusColumnProviderIface;
+/* For compatibility reasons, remove this once you start introducing breaking changes. */
+typedef NautilusColumnProviderInterface NautilusColumnProviderIface;
/**
- * NautilusColumnProviderIface:
+ * NautilusColumnProviderInterface:
* @g_iface: The parent interface.
* @get_columns: Returns a #GList of #NautilusColumn.
* See nautilus_column_provider_get_columns() for details.
*
* Interface for extensions to provide additional list view columns.
*/
-struct _NautilusColumnProviderIface {
- GTypeInterface g_iface;
+struct _NautilusColumnProviderInterface
+{
+ GTypeInterface g_iface;
- GList *(*get_columns) (NautilusColumnProvider *provider);
+ GList *(*get_columns) (NautilusColumnProvider *provider);
};
/* Interface Functions */
-GType nautilus_column_provider_get_type (void);
-GList *nautilus_column_provider_get_columns (NautilusColumnProvider *provider);
+GList *nautilus_column_provider_get_columns (NautilusColumnProvider *provider);
G_END_DECLS
diff --git a/libnautilus-extension/nautilus-column.c b/libnautilus-extension/nautilus-column.c
index fdf83204c..a36885091 100644
--- a/libnautilus-extension/nautilus-column.c
+++ b/libnautilus-extension/nautilus-column.c
@@ -21,8 +21,6 @@
*
*/
-#include <config.h>
-#include <glib/gi18n-lib.h>
#include <gtk/gtk.h>
#include "nautilus-column.h"
@@ -39,8 +37,10 @@ enum
LAST_PROP
};
-struct _NautilusColumnDetails
+struct _NautilusColumn
{
+ GObject parent_instance;
+
char *name;
GQuark attribute;
char *label;
@@ -55,7 +55,6 @@ G_DEFINE_TYPE (NautilusColumn, nautilus_column, G_TYPE_OBJECT);
* SECTION:nautilus-column
* @title: NautilusColumn
* @short_description: List view column descriptor object
- * @include: libnautilus-extension/nautilus-column.h
*
* #NautilusColumn is an object that describes a column in the file manager
* list view. Extensions can provide #NautilusColumn by registering a
@@ -112,43 +111,43 @@ nautilus_column_get_property (GObject *object,
{
case PROP_NAME:
{
- g_value_set_string (value, column->details->name);
+ g_value_set_string (value, column->name);
}
break;
case PROP_ATTRIBUTE:
{
- g_value_set_string (value, g_quark_to_string (column->details->attribute));
+ g_value_set_string (value, g_quark_to_string (column->attribute));
}
break;
case PROP_ATTRIBUTE_Q:
{
- g_value_set_uint (value, column->details->attribute);
+ g_value_set_uint (value, column->attribute);
}
break;
case PROP_LABEL:
{
- g_value_set_string (value, column->details->label);
+ g_value_set_string (value, column->label);
}
break;
case PROP_DESCRIPTION:
{
- g_value_set_string (value, column->details->description);
+ g_value_set_string (value, column->description);
}
break;
case PROP_XALIGN:
{
- g_value_set_float (value, column->details->xalign);
+ g_value_set_float (value, column->xalign);
}
break;
case PROP_DEFAULT_SORT_ORDER:
{
- g_value_set_enum (value, column->details->default_sort_order);
+ g_value_set_enum (value, column->default_sort_order);
}
break;
@@ -174,15 +173,15 @@ nautilus_column_set_property (GObject *object,
{
case PROP_NAME:
{
- g_free (column->details->name);
- column->details->name = g_strdup (g_value_get_string (value));
+ g_free (column->name);
+ column->name = g_strdup (g_value_get_string (value));
g_object_notify (object, "name");
}
break;
case PROP_ATTRIBUTE:
{
- column->details->attribute = g_quark_from_string (g_value_get_string (value));
+ column->attribute = g_quark_from_string (g_value_get_string (value));
g_object_notify (object, "attribute");
g_object_notify (object, "attribute_q");
}
@@ -190,30 +189,30 @@ nautilus_column_set_property (GObject *object,
case PROP_LABEL:
{
- g_free (column->details->label);
- column->details->label = g_strdup (g_value_get_string (value));
+ g_free (column->label);
+ column->label = g_strdup (g_value_get_string (value));
g_object_notify (object, "label");
}
break;
case PROP_DESCRIPTION:
{
- g_free (column->details->description);
- column->details->description = g_strdup (g_value_get_string (value));
+ g_free (column->description);
+ column->description = g_strdup (g_value_get_string (value));
g_object_notify (object, "description");
}
break;
case PROP_XALIGN:
{
- column->details->xalign = g_value_get_float (value);
+ column->xalign = g_value_get_float (value);
g_object_notify (object, "xalign");
}
break;
case PROP_DEFAULT_SORT_ORDER:
{
- column->details->default_sort_order = g_value_get_enum (value);
+ column->default_sort_order = g_value_get_enum (value);
g_object_notify (object, "default-sort-order");
}
break;
@@ -233,11 +232,9 @@ nautilus_column_finalize (GObject *object)
column = NAUTILUS_COLUMN (object);
- g_free (column->details->name);
- g_free (column->details->label);
- g_free (column->details->description);
-
- g_free (column->details);
+ g_free (column->name);
+ g_free (column->label);
+ g_free (column->description);
G_OBJECT_CLASS (nautilus_column_parent_class)->finalize (object);
}
@@ -245,8 +242,7 @@ nautilus_column_finalize (GObject *object)
static void
nautilus_column_init (NautilusColumn *column)
{
- column->details = g_new0 (NautilusColumnDetails, 1);
- column->details->xalign = 0.0;
+ column->xalign = 0.0;
}
static void
diff --git a/libnautilus-extension/nautilus-column.h b/libnautilus-extension/nautilus-column.h
index 64de2cb77..c4e3ad9af 100644
--- a/libnautilus-extension/nautilus-column.h
+++ b/libnautilus-extension/nautilus-column.h
@@ -24,37 +24,22 @@
#ifndef NAUTILUS_COLUMN_H
#define NAUTILUS_COLUMN_H
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
#include <glib-object.h>
-#include "nautilus-extension-types.h"
G_BEGIN_DECLS
-#define NAUTILUS_TYPE_COLUMN (nautilus_column_get_type())
-#define NAUTILUS_COLUMN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_COLUMN, NautilusColumn))
-#define NAUTILUS_COLUMN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_COLUMN, NautilusColumnClass))
-#define NAUTILUS_INFO_IS_COLUMN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_COLUMN))
-#define NAUTILUS_INFO_IS_COLUMN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NAUTILUS_TYPE_COLUMN))
-#define NAUTILUS_COLUMN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), NAUTILUS_TYPE_COLUMN, NautilusColumnClass))
-
-typedef struct _NautilusColumn NautilusColumn;
-typedef struct _NautilusColumnDetails NautilusColumnDetails;
-typedef struct _NautilusColumnClass NautilusColumnClass;
-
-struct _NautilusColumn {
- GObject parent;
-
- NautilusColumnDetails *details;
-};
+#define NAUTILUS_TYPE_COLUMN (nautilus_column_get_type())
-struct _NautilusColumnClass {
- GObjectClass parent;
-};
+G_DECLARE_FINAL_TYPE (NautilusColumn, nautilus_column, NAUTILUS, COLUMN, GObject)
-GType nautilus_column_get_type (void);
-NautilusColumn * nautilus_column_new (const char *name,
- const char *attribute,
- const char *label,
- const char *description);
+NautilusColumn *nautilus_column_new (const char *name,
+ const char *attribute,
+ const char *label,
+ const char *description);
/* NautilusColumn has the following properties:
* name (string) - the identifier for the column
diff --git a/libnautilus-extension/nautilus-extension-types.c b/libnautilus-extension/nautilus-extension-types.c
deleted file mode 100644
index 37bb92633..000000000
--- a/libnautilus-extension/nautilus-extension-types.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * nautilus-extension-types.c - Type definitions for Nautilus extensions
- *
- * Copyright (C) 2003 Novell, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- *
- * Author: Dave Camp <dave@ximian.com>
- *
- */
-
-#include <config.h>
-#include "nautilus-extension-types.h"
-
-
-GType
-nautilus_operation_result_get_type (void)
-{
- static GType type = 0;
- if (type == 0)
- {
- static const GEnumValue values[] =
- {
- {
- NAUTILUS_OPERATION_COMPLETE,
- "NAUTILUS_OPERATION_COMPLETE",
- "complete",
- },
- {
- NAUTILUS_OPERATION_FAILED,
- "NAUTILUS_OPERATION_FAILED",
- "failed",
- },
- {
- NAUTILUS_OPERATION_IN_PROGRESS,
- "NAUTILUS_OPERATION_IN_PROGRESS",
- "in_progress",
- },
- { 0, NULL, NULL }
- };
-
- type = g_enum_register_static ("NautilusOperationResult",
- values);
- }
-
- return type;
-}
diff --git a/libnautilus-extension/nautilus-extension-types.h b/libnautilus-extension/nautilus-extension-types.h
index ca7ec7fe5..43a0b2056 100644
--- a/libnautilus-extension/nautilus-extension-types.h
+++ b/libnautilus-extension/nautilus-extension-types.h
@@ -1,6 +1,5 @@
-/*
- * nautilus-info-provider.h - Type definitions for Nautilus extensions
- *
+/* nautilus-info-provider.h - Type definitions for Nautilus extensions
+ *
* Copyright (C) 2003 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
@@ -17,7 +16,7 @@
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*
* Author: Dave Camp <dave@ximian.com>
- *
+ *
*/
/* This interface is implemented by Nautilus extensions that want to
@@ -28,64 +27,8 @@
#ifndef NAUTILUS_EXTENSION_TYPES_H
#define NAUTILUS_EXTENSION_TYPES_H
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define NAUTILUS_TYPE_OPERATION_RESULT (nautilus_operation_result_get_type ())
-
-/**
- * NautilusOperationHandle:
- *
- * Handle for asynchronous interfaces. These are opaque handles that must
- * be unique within an extension object. These are returned by operations
- * that return #NAUTILUS_OPERATION_IN_PROGRESS.
- */
-typedef struct _NautilusOperationHandle NautilusOperationHandle;
-
-/**
- * NautilusOperationResult:
- * @NAUTILUS_OPERATION_COMPLETE: the operation succeeded, and the extension
- * is done with the request.
- * @NAUTILUS_OPERATION_FAILED: the operation failed.
- * @NAUTILUS_OPERATION_IN_PROGRESS: the extension has begin an async operation.
- * When this value is returned, the extension must set the handle parameter
- * and call the callback closure when the operation is complete.
- *
- * Return values for asynchronous operations performed by the extension.
- * See nautilus_info_provider_update_file_info().
- */
-typedef enum {
- /* Returned if the call succeeded, and the extension is done
- * with the request */
- NAUTILUS_OPERATION_COMPLETE,
-
- /* Returned if the call failed */
- NAUTILUS_OPERATION_FAILED,
-
- /* Returned if the extension has begun an async operation.
- * If this is returned, the extension must set the handle
- * parameter and call the callback closure when the
- * operation is complete. */
- NAUTILUS_OPERATION_IN_PROGRESS
-} NautilusOperationResult;
-
-GType nautilus_operation_result_get_type (void);
-
-/**
- * SECTION:nautilus-extension-types
- * @title: NautilusModule
- * @short_description: Initialize an extension
- * @include: libnautilus-extension/nautilus-extension-types.h
- *
- * Methods that each extension implements.
- */
-
-void nautilus_module_initialize (GTypeModule *module);
-void nautilus_module_shutdown (void);
-void nautilus_module_list_types (const GType **types,
- int *num_types);
+#include <nautilus-extension.h>
-G_END_DECLS
+#warning "This header is deprecated, include <nautilus-extension.h> instead."
#endif
diff --git a/libnautilus-extension/nautilus-extension.h b/libnautilus-extension/nautilus-extension.h
new file mode 100644
index 000000000..26159d1e8
--- /dev/null
+++ b/libnautilus-extension/nautilus-extension.h
@@ -0,0 +1,43 @@
+/* Copyright (C) 2018 Ernestas Kulik <ernestask@gnome.org>
+ *
+ * This file is part of libnautilus-extension.
+ *
+ * libnautilus-extension is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * libnautilus-extension 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with libnautilus-extension. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#ifndef NAUTILUS_EXTENSION_H
+#define NAUTILUS_EXTENSION_H
+
+#include <libnautilus-extension/nautilus-column-provider.h>
+#include <libnautilus-extension/nautilus-column.h>
+#include <libnautilus-extension/nautilus-extension-enum-types.h>
+#include <libnautilus-extension/nautilus-file-info.h>
+#include <libnautilus-extension/nautilus-info-provider.h>
+#include <libnautilus-extension/nautilus-location-widget-provider.h>
+#include <libnautilus-extension/nautilus-menu.h>
+#include <libnautilus-extension/nautilus-menu-provider.h>
+#include <libnautilus-extension/nautilus-property-page.h>
+#include <libnautilus-extension/nautilus-property-page-provider.h>
+
+/**
+ * SECTION:nautilus-extension
+ * @title: Extension entry points
+ */
+
+void nautilus_module_initialize (GTypeModule *module);
+void nautilus_module_shutdown (void);
+void nautilus_module_list_types (const GType **types,
+ int *num_types);
+
+#endif
diff --git a/libnautilus-extension/nautilus-file-info.c b/libnautilus-extension/nautilus-file-info.c
index 2f2a46b93..db02a0b11 100644
--- a/libnautilus-extension/nautilus-file-info.c
+++ b/libnautilus-extension/nautilus-file-info.c
@@ -18,17 +18,18 @@
*
*/
-#include <config.h>
#include "nautilus-file-info.h"
+
#include "nautilus-extension-private.h"
+G_DEFINE_INTERFACE (NautilusFileInfo, nautilus_file_info, G_TYPE_OBJECT)
+
NautilusFileInfo *(*nautilus_file_info_getter)(GFile * location, gboolean create);
/**
* SECTION:nautilus-file-info
* @title: NautilusFileInfo
* @short_description: File interface for nautilus extensions
- * @include: libnautilus-extension/nautilus-file-info.h
*
* #NautilusFileInfo provides methods to get and modify information
* about file objects in the file manager.
@@ -76,246 +77,309 @@ nautilus_file_info_list_free (GList *files)
}
static void
-nautilus_file_info_base_init (gpointer g_class)
+nautilus_file_info_default_init (NautilusFileInfoInterface *klass)
{
}
-GType
-nautilus_file_info_get_type (void)
+gboolean
+nautilus_file_info_is_gone (NautilusFileInfo *self)
{
- static GType type = 0;
+ NautilusFileInfoInterface *iface;
- if (!type)
- {
- const GTypeInfo info =
- {
- sizeof (NautilusFileInfoIface),
- nautilus_file_info_base_init,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,
- 0,
- NULL
- };
-
- type = g_type_register_static (G_TYPE_INTERFACE,
- "NautilusFileInfo",
- &info, 0);
- g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
- }
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), FALSE);
- return type;
-}
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
-gboolean
-nautilus_file_info_is_gone (NautilusFileInfo *file)
-{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), FALSE);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->is_gone != NULL, FALSE);
+ g_return_val_if_fail (iface->is_gone != NULL, FALSE);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->is_gone (file);
+ return iface->is_gone (self);
}
GFileType
-nautilus_file_info_get_file_type (NautilusFileInfo *file)
+nautilus_file_info_get_file_type (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), G_FILE_TYPE_UNKNOWN);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_file_type != NULL, G_FILE_TYPE_UNKNOWN);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), G_FILE_TYPE_UNKNOWN);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_file_type (file);
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_file_type != NULL, G_FILE_TYPE_UNKNOWN);
+
+ return iface->get_file_type (self);
}
char *
-nautilus_file_info_get_name (NautilusFileInfo *file)
+nautilus_file_info_get_name (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_name != NULL, NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_name (file);
+ g_return_val_if_fail (iface->get_name != NULL, NULL);
+
+ return iface->get_name (self);
}
/**
* nautilus_file_info_get_location:
- * @file: a #NautilusFileInfo
+ * @file_info: a #NautilusFileInfo
*
- * Returns: (transfer full): a #GFile for the location of @file
+ * Returns: (transfer full): a #GFile for the location of @file_info
*/
GFile *
-nautilus_file_info_get_location (NautilusFileInfo *file)
+nautilus_file_info_get_location (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_location != NULL, NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_location != NULL, NULL);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_location (file);
+ return iface->get_location (self);
}
char *
-nautilus_file_info_get_uri (NautilusFileInfo *file)
+nautilus_file_info_get_uri (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_uri != NULL, NULL);
+ NautilusFileInfoInterface *iface;
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_uri (file);
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_uri != NULL, NULL);
+
+ return iface->get_uri (self);
}
char *
-nautilus_file_info_get_activation_uri (NautilusFileInfo *file)
+nautilus_file_info_get_activation_uri (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_activation_uri != NULL, NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_activation_uri (file);
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_activation_uri != NULL, NULL);
+
+ return iface->get_activation_uri (self);
}
/**
* nautilus_file_info_get_parent_location:
- * @file: a #NautilusFileInfo
+ * @file_info: a #NautilusFileInfo
*
- * Returns: (allow-none) (transfer full): a #GFile for the parent location of @file,
- * or %NULL if @file has no parent
+ * Returns: (allow-none) (transfer full): a #GFile for the parent location of @file_info,
+ * or %NULL if @file_info has no parent
*/
GFile *
-nautilus_file_info_get_parent_location (NautilusFileInfo *file)
+nautilus_file_info_get_parent_location (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_parent_location != NULL, NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_parent_location (file);
+ g_return_val_if_fail (iface->get_parent_location != NULL, NULL);
+
+ return iface->get_parent_location (self);
}
char *
-nautilus_file_info_get_parent_uri (NautilusFileInfo *file)
+nautilus_file_info_get_parent_uri (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_parent_uri != NULL, NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_parent_uri != NULL, NULL);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_parent_uri (file);
+ return iface->get_parent_uri (self);
}
/**
* nautilus_file_info_get_parent_info:
- * @file: a #NautilusFileInfo
+ * @file_info: a #NautilusFileInfo
*
- * Returns: (allow-none) (transfer full): a #NautilusFileInfo for the parent of @file,
- * or %NULL if @file has no parent
+ * Returns: (allow-none) (transfer full): a #NautilusFileInfo for the parent of @file_info,
+ * or %NULL if @file_info has no parent
*/
NautilusFileInfo *
-nautilus_file_info_get_parent_info (NautilusFileInfo *file)
+nautilus_file_info_get_parent_info (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_parent_info != NULL, NULL);
+ NautilusFileInfoInterface *iface;
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_parent_info (file);
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_parent_info != NULL, NULL);
+
+ return iface->get_parent_info (self);
}
/**
* nautilus_file_info_get_mount:
- * @file: a #NautilusFileInfo
+ * @file_info: a #NautilusFileInfo
*
- * Returns: (allow-none) (transfer full): a #GMount for the mount of @file,
- * or %NULL if @file has no mount
+ * Returns: (allow-none) (transfer full): a #GMount for the mount of @file_info,
+ * or %NULL if @file_info has no mount
*/
GMount *
-nautilus_file_info_get_mount (NautilusFileInfo *file)
+nautilus_file_info_get_mount (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_mount != NULL, NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_mount (file);
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_mount != NULL, NULL);
+
+ return iface->get_mount (self);
}
char *
-nautilus_file_info_get_uri_scheme (NautilusFileInfo *file)
+nautilus_file_info_get_uri_scheme (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_uri_scheme != NULL, NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_uri_scheme != NULL, NULL);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_uri_scheme (file);
+ return iface->get_uri_scheme (self);
}
char *
-nautilus_file_info_get_mime_type (NautilusFileInfo *file)
+nautilus_file_info_get_mime_type (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_mime_type != NULL, NULL);
+ NautilusFileInfoInterface *iface;
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_mime_type (file);
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_mime_type != NULL, NULL);
+
+ return iface->get_mime_type (self);
}
gboolean
-nautilus_file_info_is_mime_type (NautilusFileInfo *file,
+nautilus_file_info_is_mime_type (NautilusFileInfo *self,
const char *mime_type)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), FALSE);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), FALSE);
g_return_val_if_fail (mime_type != NULL, FALSE);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->is_mime_type != NULL, FALSE);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->is_mime_type (file,
- mime_type);
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->is_mime_type != NULL, FALSE);
+
+ return iface->is_mime_type (self, mime_type);
}
gboolean
-nautilus_file_info_is_directory (NautilusFileInfo *file)
+nautilus_file_info_is_directory (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), FALSE);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->is_directory != NULL, FALSE);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), FALSE);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->is_directory (file);
+ g_return_val_if_fail (iface->is_directory != NULL, FALSE);
+
+ return iface->is_directory (self);
}
gboolean
-nautilus_file_info_can_write (NautilusFileInfo *file)
+nautilus_file_info_can_write (NautilusFileInfo *self)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), FALSE);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->can_write != NULL, FALSE);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), FALSE);
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->can_write != NULL, FALSE);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->can_write (file);
+ return iface->can_write (self);
}
void
-nautilus_file_info_add_emblem (NautilusFileInfo *file,
+nautilus_file_info_add_emblem (NautilusFileInfo *self,
const char *emblem_name)
{
- g_return_if_fail (NAUTILUS_IS_FILE_INFO (file));
- g_return_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->add_emblem != NULL);
+ NautilusFileInfoInterface *iface;
- NAUTILUS_FILE_INFO_GET_IFACE (file)->add_emblem (file, emblem_name);
+ g_return_if_fail (NAUTILUS_IS_FILE_INFO (self));
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_if_fail (iface->add_emblem != NULL);
+
+ iface->add_emblem (self, emblem_name);
}
char *
-nautilus_file_info_get_string_attribute (NautilusFileInfo *file,
+nautilus_file_info_get_string_attribute (NautilusFileInfo *self,
const char *attribute_name)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (file), NULL);
- g_return_val_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->get_string_attribute != NULL, NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (self), NULL);
g_return_val_if_fail (attribute_name != NULL, NULL);
- return NAUTILUS_FILE_INFO_GET_IFACE (file)->get_string_attribute
- (file, attribute_name);
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_string_attribute != NULL, NULL);
+
+ return iface->get_string_attribute (self, attribute_name);
}
void
-nautilus_file_info_add_string_attribute (NautilusFileInfo *file,
+nautilus_file_info_add_string_attribute (NautilusFileInfo *self,
const char *attribute_name,
const char *value)
{
- g_return_if_fail (NAUTILUS_IS_FILE_INFO (file));
- g_return_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->add_string_attribute != NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_if_fail (NAUTILUS_IS_FILE_INFO (self));
g_return_if_fail (attribute_name != NULL);
g_return_if_fail (value != NULL);
- NAUTILUS_FILE_INFO_GET_IFACE (file)->add_string_attribute
- (file, attribute_name, value);
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_if_fail (iface->add_string_attribute != NULL);
+
+ iface->add_string_attribute (self, attribute_name, value);
}
void
-nautilus_file_info_invalidate_extension_info (NautilusFileInfo *file)
+nautilus_file_info_invalidate_extension_info (NautilusFileInfo *self)
{
- g_return_if_fail (NAUTILUS_IS_FILE_INFO (file));
- g_return_if_fail (NAUTILUS_FILE_INFO_GET_IFACE (file)->invalidate_extension_info != NULL);
+ NautilusFileInfoInterface *iface;
+
+ g_return_if_fail (NAUTILUS_IS_FILE_INFO (self));
+
+ iface = NAUTILUS_FILE_INFO_GET_IFACE (self);
+
+ g_return_if_fail (iface->invalidate_extension_info != NULL);
- NAUTILUS_FILE_INFO_GET_IFACE (file)->invalidate_extension_info (file);
+ iface->invalidate_extension_info (self);
}
/**
@@ -327,6 +391,8 @@ nautilus_file_info_invalidate_extension_info (NautilusFileInfo *file)
NautilusFileInfo *
nautilus_file_info_lookup (GFile *location)
{
+ g_return_val_if_fail (G_IS_FILE (location), NULL);
+
return nautilus_file_info_getter (location, FALSE);
}
@@ -339,6 +405,8 @@ nautilus_file_info_lookup (GFile *location)
NautilusFileInfo *
nautilus_file_info_create (GFile *location)
{
+ g_return_val_if_fail (G_IS_FILE (location), NULL);
+
return nautilus_file_info_getter (location, TRUE);
}
@@ -351,14 +419,13 @@ nautilus_file_info_create (GFile *location)
NautilusFileInfo *
nautilus_file_info_lookup_for_uri (const char *uri)
{
- GFile *location;
- NautilusFile *file;
+ g_autoptr (GFile) location = NULL;
+
+ g_return_val_if_fail (uri != NULL, NULL);
location = g_file_new_for_uri (uri);
- file = nautilus_file_info_lookup (location);
- g_object_unref (location);
- return file;
+ return nautilus_file_info_lookup (location);
}
/**
@@ -370,12 +437,11 @@ nautilus_file_info_lookup_for_uri (const char *uri)
NautilusFileInfo *
nautilus_file_info_create_for_uri (const char *uri)
{
- GFile *location;
- NautilusFile *file;
+ g_autoptr (GFile) location = NULL;
+
+ g_return_val_if_fail (uri != NULL, NULL);
location = g_file_new_for_uri (uri);
- file = nautilus_file_info_create (location);
- g_object_unref (location);
- return file;
+ return nautilus_file_info_create (location);
}
diff --git a/libnautilus-extension/nautilus-file-info.h b/libnautilus-extension/nautilus-file-info.h
index 4660ad7c2..0e7ea8539 100644
--- a/libnautilus-extension/nautilus-file-info.h
+++ b/libnautilus-extension/nautilus-file-info.h
@@ -25,28 +25,29 @@
#ifndef NAUTILUS_FILE_INFO_H
#define NAUTILUS_FILE_INFO_H
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
#include <glib-object.h>
#include <gio/gio.h>
G_BEGIN_DECLS
-#define NAUTILUS_TYPE_FILE_INFO (nautilus_file_info_get_type ())
-#define NAUTILUS_FILE_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_FILE_INFO, NautilusFileInfo))
-#define NAUTILUS_IS_FILE_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_FILE_INFO))
-#define NAUTILUS_FILE_INFO_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NAUTILUS_TYPE_FILE_INFO, NautilusFileInfoIface))
+#define NAUTILUS_TYPE_FILE_INFO (nautilus_file_info_get_type ())
-#ifndef NAUTILUS_FILE_DEFINED
-#define NAUTILUS_FILE_DEFINED
-/* Using NautilusFile for the vtable to make implementing this in
- * NautilusFile easier */
-typedef struct NautilusFile NautilusFile;
-#endif
+G_DECLARE_INTERFACE (NautilusFileInfo, nautilus_file_info, NAUTILUS, FILE_INFO, GObject)
-typedef NautilusFile NautilusFileInfo;
-typedef struct _NautilusFileInfoIface NautilusFileInfoIface;
+/* For compatibility reasons, remove this once you start introducing breaking changes.
+ *
+ * I’ve only noticed nautilus-python depending on this, but the context is that
+ * NautilusFileInfo used to be an alias for NautilusFile to make it easier to
+ * implement the interface,
+ */
+typedef struct NautilusFile NautilusFile;
/**
- * NautilusFileInfoIface:
+ * NautilusFileInfoInterface:
* @g_iface: The parent interface.
* @is_gone: Returns whether the file info is gone.
* See nautilus_file_info_is_gone() for details.
@@ -89,83 +90,81 @@ typedef struct _NautilusFileInfoIface NautilusFileInfoIface;
*
* Interface for extensions to provide additional menu items.
*/
-struct _NautilusFileInfoIface
+struct _NautilusFileInfoInterface
{
- GTypeInterface g_iface;
-
- gboolean (*is_gone) (NautilusFileInfo *file);
-
- char * (*get_name) (NautilusFileInfo *file);
- char * (*get_uri) (NautilusFileInfo *file);
- char * (*get_parent_uri) (NautilusFileInfo *file);
- char * (*get_uri_scheme) (NautilusFileInfo *file);
-
- char * (*get_mime_type) (NautilusFileInfo *file);
- gboolean (*is_mime_type) (NautilusFileInfo *file,
- const char *mime_Type);
- gboolean (*is_directory) (NautilusFileInfo *file);
-
- void (*add_emblem) (NautilusFileInfo *file,
- const char *emblem_name);
- char * (*get_string_attribute) (NautilusFileInfo *file,
- const char *attribute_name);
- void (*add_string_attribute) (NautilusFileInfo *file,
- const char *attribute_name,
- const char *value);
- void (*invalidate_extension_info) (NautilusFileInfo *file);
-
- char * (*get_activation_uri) (NautilusFileInfo *file);
-
- GFileType (*get_file_type) (NautilusFileInfo *file);
- GFile * (*get_location) (NautilusFileInfo *file);
- GFile * (*get_parent_location) (NautilusFileInfo *file);
- NautilusFileInfo* (*get_parent_info) (NautilusFileInfo *file);
- GMount * (*get_mount) (NautilusFileInfo *file);
- gboolean (*can_write) (NautilusFileInfo *file);
-
+ GTypeInterface g_iface;
+
+ gboolean (*is_gone) (NautilusFileInfo *file_info);
+
+ char *(*get_name) (NautilusFileInfo *file_info);
+ char *(*get_uri) (NautilusFileInfo *file_info);
+ char *(*get_parent_uri) (NautilusFileInfo *file_info);
+ char *(*get_uri_scheme) (NautilusFileInfo *file_info);
+
+ char *(*get_mime_type) (NautilusFileInfo *file_info);
+ gboolean (*is_mime_type) (NautilusFileInfo *file_info,
+ const char *mime_type);
+ gboolean (*is_directory) (NautilusFileInfo *file_info);
+
+ void (*add_emblem) (NautilusFileInfo *file_info,
+ const char *emblem_name);
+ char *(*get_string_attribute) (NautilusFileInfo *file_info,
+ const char *attribute_name);
+ void (*add_string_attribute) (NautilusFileInfo *file_info,
+ const char *attribute_name,
+ const char *value);
+ void (*invalidate_extension_info) (NautilusFileInfo *file_info);
+
+ char *(*get_activation_uri) (NautilusFileInfo *file_info);
+
+ GFileType (*get_file_type) (NautilusFileInfo *file_info);
+ GFile *(*get_location) (NautilusFileInfo *file_info);
+ GFile *(*get_parent_location) (NautilusFileInfo *file_info);
+ NautilusFileInfo *(*get_parent_info) (NautilusFileInfo *file_info);
+ GMount *(*get_mount) (NautilusFileInfo *file_info);
+ gboolean (*can_write) (NautilusFileInfo *file_info);
};
GList *nautilus_file_info_list_copy (GList *files);
void nautilus_file_info_list_free (GList *files);
-GType nautilus_file_info_get_type (void);
/* Return true if the file has been deleted */
-gboolean nautilus_file_info_is_gone (NautilusFileInfo *file);
+gboolean nautilus_file_info_is_gone (NautilusFileInfo *file_info);
/* Name and Location */
-GFileType nautilus_file_info_get_file_type (NautilusFileInfo *file);
-GFile * nautilus_file_info_get_location (NautilusFileInfo *file);
-char * nautilus_file_info_get_name (NautilusFileInfo *file);
-char * nautilus_file_info_get_uri (NautilusFileInfo *file);
-char * nautilus_file_info_get_activation_uri (NautilusFileInfo *file);
-GFile * nautilus_file_info_get_parent_location (NautilusFileInfo *file);
-char * nautilus_file_info_get_parent_uri (NautilusFileInfo *file);
-GMount * nautilus_file_info_get_mount (NautilusFileInfo *file);
-char * nautilus_file_info_get_uri_scheme (NautilusFileInfo *file);
+GFileType nautilus_file_info_get_file_type (NautilusFileInfo *file_info);
+GFile *nautilus_file_info_get_location (NautilusFileInfo *file_info);
+char *nautilus_file_info_get_name (NautilusFileInfo *file_info);
+char *nautilus_file_info_get_uri (NautilusFileInfo *file_info);
+char *nautilus_file_info_get_activation_uri (NautilusFileInfo *file_info);
+GFile *nautilus_file_info_get_parent_location (NautilusFileInfo *file_info);
+char *nautilus_file_info_get_parent_uri (NautilusFileInfo *file_info);
+GMount *nautilus_file_info_get_mount (NautilusFileInfo *file_info);
+char *nautilus_file_info_get_uri_scheme (NautilusFileInfo *file_info);
/* It's not safe to call this recursively multiple times, as it works
* only for files already cached by Nautilus.
*/
-NautilusFileInfo* nautilus_file_info_get_parent_info (NautilusFileInfo *file);
+NautilusFileInfo *nautilus_file_info_get_parent_info (NautilusFileInfo *file_info);
/* File Type */
-char * nautilus_file_info_get_mime_type (NautilusFileInfo *file);
-gboolean nautilus_file_info_is_mime_type (NautilusFileInfo *file,
- const char *mime_type);
-gboolean nautilus_file_info_is_directory (NautilusFileInfo *file);
-gboolean nautilus_file_info_can_write (NautilusFileInfo *file);
+char * nautilus_file_info_get_mime_type (NautilusFileInfo *file_info);
+gboolean nautilus_file_info_is_mime_type (NautilusFileInfo *file_info,
+ const char *mime_type);
+gboolean nautilus_file_info_is_directory (NautilusFileInfo *file_info);
+gboolean nautilus_file_info_can_write (NautilusFileInfo *file_info);
/* Modifying the NautilusFileInfo */
-void nautilus_file_info_add_emblem (NautilusFileInfo *file,
- const char *emblem_name);
-char * nautilus_file_info_get_string_attribute (NautilusFileInfo *file,
- const char *attribute_name);
-void nautilus_file_info_add_string_attribute (NautilusFileInfo *file,
- const char *attribute_name,
- const char *value);
+void nautilus_file_info_add_emblem (NautilusFileInfo *file_info,
+ const char *emblem_name);
+char *nautilus_file_info_get_string_attribute (NautilusFileInfo *file_info,
+ const char *attribute_name);
+void nautilus_file_info_add_string_attribute (NautilusFileInfo *file_info,
+ const char *attribute_name,
+ const char *value);
/* Invalidating file info */
-void nautilus_file_info_invalidate_extension_info (NautilusFileInfo *file);
+void nautilus_file_info_invalidate_extension_info (NautilusFileInfo *file_info);
NautilusFileInfo *nautilus_file_info_lookup (GFile *location);
NautilusFileInfo *nautilus_file_info_create (GFile *location);
diff --git a/libnautilus-extension/nautilus-info-provider.c b/libnautilus-extension/nautilus-info-provider.c
index 359bf8e24..37e95b2b0 100644
--- a/libnautilus-extension/nautilus-info-provider.c
+++ b/libnautilus-extension/nautilus-info-provider.c
@@ -21,16 +21,16 @@
*
*/
-#include <config.h>
#include "nautilus-info-provider.h"
-#include <glib-object.h>
+#include "nautilus-extension-enum-types.h"
+
+G_DEFINE_INTERFACE (NautilusInfoProvider, nautilus_info_provider, G_TYPE_OBJECT)
/**
* SECTION:nautilus-info-provider
* @title: NautilusInfoProvider
* @short_description: Interface to provide additional information about files
- * @include: libnautilus-extension/nautilus-column-provider.h
*
* #NautilusInfoProvider allows extension to provide additional information about
* files. When nautilus_info_provider_update_file_info() is called by the application,
@@ -39,68 +39,46 @@
*/
static void
-nautilus_info_provider_base_init (gpointer g_class)
-{
-}
-
-GType
-nautilus_info_provider_get_type (void)
+nautilus_info_provider_default_init (NautilusInfoProviderInterface *klass)
{
- static GType type = 0;
-
- if (!type)
- {
- const GTypeInfo info =
- {
- sizeof (NautilusInfoProviderIface),
- nautilus_info_provider_base_init,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,
- 0,
- NULL
- };
-
- type = g_type_register_static (G_TYPE_INTERFACE,
- "NautilusInfoProvider",
- &info, 0);
- g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
- }
-
- return type;
}
NautilusOperationResult
-nautilus_info_provider_update_file_info (NautilusInfoProvider *provider,
+nautilus_info_provider_update_file_info (NautilusInfoProvider *self,
NautilusFileInfo *file,
GClosure *update_complete,
NautilusOperationHandle **handle)
{
- g_return_val_if_fail (NAUTILUS_IS_INFO_PROVIDER (provider),
- NAUTILUS_OPERATION_FAILED);
- g_return_val_if_fail (NAUTILUS_INFO_PROVIDER_GET_IFACE (provider)->update_file_info != NULL,
+ NautilusInfoProviderInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_INFO_PROVIDER (self),
NAUTILUS_OPERATION_FAILED);
g_return_val_if_fail (update_complete != NULL,
NAUTILUS_OPERATION_FAILED);
g_return_val_if_fail (handle != NULL, NAUTILUS_OPERATION_FAILED);
- return NAUTILUS_INFO_PROVIDER_GET_IFACE (provider)->update_file_info
- (provider, file, update_complete, handle);
+ iface = NAUTILUS_INFO_PROVIDER_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->update_file_info != NULL,
+ NAUTILUS_OPERATION_FAILED);
+
+ return iface->update_file_info (self, file, update_complete, handle);
}
void
-nautilus_info_provider_cancel_update (NautilusInfoProvider *provider,
+nautilus_info_provider_cancel_update (NautilusInfoProvider *self,
NautilusOperationHandle *handle)
{
- g_return_if_fail (NAUTILUS_IS_INFO_PROVIDER (provider));
- g_return_if_fail (NAUTILUS_INFO_PROVIDER_GET_IFACE (provider)->cancel_update != NULL);
- g_return_if_fail (NAUTILUS_INFO_PROVIDER_GET_IFACE (provider)->cancel_update != NULL);
+ NautilusInfoProviderInterface *iface;
+
+ g_return_if_fail (NAUTILUS_IS_INFO_PROVIDER (self));
g_return_if_fail (handle != NULL);
- NAUTILUS_INFO_PROVIDER_GET_IFACE (provider)->cancel_update (provider,
- handle);
+ iface = NAUTILUS_INFO_PROVIDER_GET_IFACE (self);
+
+ g_return_if_fail (iface->cancel_update != NULL);
+
+ iface->cancel_update (self, handle);
}
void
diff --git a/libnautilus-extension/nautilus-info-provider.h b/libnautilus-extension/nautilus-info-provider.h
index 6d70887e9..479f19b28 100644
--- a/libnautilus-extension/nautilus-info-provider.h
+++ b/libnautilus-extension/nautilus-info-provider.h
@@ -29,26 +29,63 @@
#ifndef NAUTILUS_INFO_PROVIDER_H
#define NAUTILUS_INFO_PROVIDER_H
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
#include <glib-object.h>
-#include "nautilus-extension-types.h"
#include "nautilus-file-info.h"
G_BEGIN_DECLS
-#define NAUTILUS_TYPE_INFO_PROVIDER (nautilus_info_provider_get_type ())
-#define NAUTILUS_INFO_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_INFO_PROVIDER, NautilusInfoProvider))
-#define NAUTILUS_IS_INFO_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_INFO_PROVIDER))
-#define NAUTILUS_INFO_PROVIDER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NAUTILUS_TYPE_INFO_PROVIDER, NautilusInfoProviderIface))
+#define NAUTILUS_TYPE_INFO_PROVIDER (nautilus_info_provider_get_type ())
+
+G_DECLARE_INTERFACE (NautilusInfoProvider, nautilus_info_provider,
+ NAUTILUS, INFO_PROVIDER,
+ GObject)
+
+/* For compatibility reasons, remove this once you start introducing breaking changes. */
+typedef NautilusInfoProviderInterface NautilusInfoProviderIface;
+
+/**
+ * NautilusOperationHandle:
+ *
+ * Handle for asynchronous interfaces. These are opaque handles that must
+ * be unique within an extension object. These are returned by operations
+ * that return #NAUTILUS_OPERATION_IN_PROGRESS.
+ */
+typedef struct _NautilusOperationHandle NautilusOperationHandle;
+
+/**
+ * NautilusOperationResult:
+ * @NAUTILUS_OPERATION_COMPLETE: the operation succeeded, and the extension
+ * is done with the request.
+ * @NAUTILUS_OPERATION_FAILED: the operation failed.
+ * @NAUTILUS_OPERATION_IN_PROGRESS: the extension has begin an async operation.
+ * When this value is returned, the extension must set the handle parameter
+ * and call the callback closure when the operation is complete.
+ *
+ * Return values for asynchronous operations performed by the extension.
+ * See nautilus_info_provider_update_file_info().
+ */
+typedef enum
+{
+ /* Returned if the call succeeded, and the extension is done
+ * with the request */
+ NAUTILUS_OPERATION_COMPLETE,
+
+ /* Returned if the call failed */
+ NAUTILUS_OPERATION_FAILED,
-typedef struct _NautilusInfoProvider NautilusInfoProvider;
-typedef struct _NautilusInfoProviderIface NautilusInfoProviderIface;
+ /* Returned if the extension has begun an async operation.
+ * If this is returned, the extension must set the handle
+ * parameter and call the callback closure when the
+ * operation is complete. */
+ NAUTILUS_OPERATION_IN_PROGRESS
+} NautilusOperationResult;
-typedef void (*NautilusInfoProviderUpdateComplete) (NautilusInfoProvider *provider,
- NautilusOperationHandle *handle,
- NautilusOperationResult result,
- gpointer user_data);
/**
- * NautilusInfoProviderIface:
+ * NautilusInfoProviderInterface:
* @g_iface: The parent interface.
* @update_file_info: Returns a #NautilusOperationResult.
* See nautilus_info_provider_update_file_info() for details.
@@ -57,33 +94,33 @@ typedef void (*NautilusInfoProviderUpdateComplete) (NautilusInfoProvider *pro
*
* Interface for extensions to provide additional information about files.
*/
-struct _NautilusInfoProviderIface {
- GTypeInterface g_iface;
-
- NautilusOperationResult (*update_file_info) (NautilusInfoProvider *provider,
- NautilusFileInfo *file,
- GClosure *update_complete,
- NautilusOperationHandle **handle);
- void (*cancel_update) (NautilusInfoProvider *provider,
- NautilusOperationHandle *handle);
+struct _NautilusInfoProviderInterface
+{
+ GTypeInterface g_iface;
+
+ NautilusOperationResult (*update_file_info) (NautilusInfoProvider *provider,
+ NautilusFileInfo *file,
+ GClosure *update_complete,
+ NautilusOperationHandle **handle);
+ void (*cancel_update) (NautilusInfoProvider *provider,
+ NautilusOperationHandle *handle);
};
/* Interface Functions */
-GType nautilus_info_provider_get_type (void);
NautilusOperationResult nautilus_info_provider_update_file_info (NautilusInfoProvider *provider,
- NautilusFileInfo *file,
- GClosure *update_complete,
- NautilusOperationHandle **handle);
+ NautilusFileInfo *file,
+ GClosure *update_complete,
+ NautilusOperationHandle **handle);
void nautilus_info_provider_cancel_update (NautilusInfoProvider *provider,
- NautilusOperationHandle *handle);
+ NautilusOperationHandle *handle);
/* Helper functions for implementations */
void nautilus_info_provider_update_complete_invoke (GClosure *update_complete,
- NautilusInfoProvider *provider,
- NautilusOperationHandle *handle,
- NautilusOperationResult result);
+ NautilusInfoProvider *provider,
+ NautilusOperationHandle *handle,
+ NautilusOperationResult result);
G_END_DECLS
diff --git a/libnautilus-extension/nautilus-location-widget-provider.c b/libnautilus-extension/nautilus-location-widget-provider.c
index a2e2af008..55f989741 100644
--- a/libnautilus-extension/nautilus-location-widget-provider.c
+++ b/libnautilus-extension/nautilus-location-widget-provider.c
@@ -21,55 +21,25 @@
*
*/
-#include <config.h>
#include "nautilus-location-widget-provider.h"
-#include <glib-object.h>
+G_DEFINE_INTERFACE (NautilusLocationWidgetProvider, nautilus_location_widget_provider,
+ G_TYPE_OBJECT)
/**
* SECTION:nautilus-location-widget-provider
* @title: NautilusLocationWidgetProvider
* @short_description: Interface to provide additional location widgets
- * @include: libnautilus-extension/nautilus-location-widget-provider.h
*
* #NautilusLocationWidgetProvider allows extension to provide additional location
* widgets in the file manager views.
*/
static void
-nautilus_location_widget_provider_base_init (gpointer g_class)
+nautilus_location_widget_provider_default_init (NautilusLocationWidgetProviderInterface *klass)
{
}
-GType
-nautilus_location_widget_provider_get_type (void)
-{
- static GType type = 0;
-
- if (!type)
- {
- const GTypeInfo info =
- {
- sizeof (NautilusLocationWidgetProviderIface),
- nautilus_location_widget_provider_base_init,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,
- 0,
- NULL
- };
-
- type = g_type_register_static (G_TYPE_INTERFACE,
- "NautilusLocationWidgetProvider",
- &info, 0);
- g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
- }
-
- return type;
-}
-
/**
* nautilus_location_widget_provider_get_widget:
* @provider: a #NautilusLocationWidgetProvider
@@ -79,12 +49,17 @@ nautilus_location_widget_provider_get_type (void)
* Returns: (transfer none): the location widget for @provider at @uri
*/
GtkWidget *
-nautilus_location_widget_provider_get_widget (NautilusLocationWidgetProvider *provider,
+nautilus_location_widget_provider_get_widget (NautilusLocationWidgetProvider *self,
const char *uri,
GtkWidget *window)
{
- g_return_val_if_fail (NAUTILUS_IS_LOCATION_WIDGET_PROVIDER (provider), NULL);
+ NautilusLocationWidgetProviderInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_LOCATION_WIDGET_PROVIDER (self), NULL);
+
+ iface = NAUTILUS_LOCATION_WIDGET_PROVIDER_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_widget != NULL, NULL);
- return NAUTILUS_LOCATION_WIDGET_PROVIDER_GET_IFACE (provider)->get_widget
- (provider, uri, window);
+ return iface->get_widget (self, uri, window);
}
diff --git a/libnautilus-extension/nautilus-location-widget-provider.h b/libnautilus-extension/nautilus-location-widget-provider.h
index 8000b2c19..e95ca0523 100644
--- a/libnautilus-extension/nautilus-location-widget-provider.h
+++ b/libnautilus-extension/nautilus-location-widget-provider.h
@@ -31,41 +31,46 @@
#ifndef NAUTILUS_LOCATION_WIDGET_PROVIDER_H
#define NAUTILUS_LOCATION_WIDGET_PROVIDER_H
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
#include <glib-object.h>
#include <gtk/gtk.h>
-#include "nautilus-extension-types.h"
G_BEGIN_DECLS
-#define NAUTILUS_TYPE_LOCATION_WIDGET_PROVIDER (nautilus_location_widget_provider_get_type ())
-#define NAUTILUS_LOCATION_WIDGET_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_LOCATION_WIDGET_PROVIDER, NautilusLocationWidgetProvider))
-#define NAUTILUS_IS_LOCATION_WIDGET_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_LOCATION_WIDGET_PROVIDER))
-#define NAUTILUS_LOCATION_WIDGET_PROVIDER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NAUTILUS_TYPE_LOCATION_WIDGET_PROVIDER, NautilusLocationWidgetProviderIface))
+#define NAUTILUS_TYPE_LOCATION_WIDGET_PROVIDER (nautilus_location_widget_provider_get_type ())
-typedef struct _NautilusLocationWidgetProvider NautilusLocationWidgetProvider;
-typedef struct _NautilusLocationWidgetProviderIface NautilusLocationWidgetProviderIface;
+G_DECLARE_INTERFACE (NautilusLocationWidgetProvider, nautilus_location_widget_provider,
+ NAUTILUS, LOCATION_WIDGET_PROVIDER,
+ GObject)
+
+/* For compatibility reasons, remove this once you start introducing breaking changes. */
+typedef NautilusLocationWidgetProviderInterface NautilusLocationWidgetProviderIface;
/**
- * NautilusLocationWidgetProviderIface:
+ * NautilusLocationWidgetProviderInterface:
* @g_iface: The parent interface.
* @get_widget: Returns a #GtkWidget.
* See nautilus_location_widget_provider_get_widget() for details.
*
* Interface for extensions to provide additional location widgets.
*/
-struct _NautilusLocationWidgetProviderIface {
- GTypeInterface g_iface;
+struct _NautilusLocationWidgetProviderInterface
+{
+ GTypeInterface g_iface;
- GtkWidget * (*get_widget) (NautilusLocationWidgetProvider *provider,
- const char *uri,
- GtkWidget *window);
+ GtkWidget *(*get_widget) (NautilusLocationWidgetProvider *provider,
+ const char *uri,
+ GtkWidget *window);
};
/* Interface Functions */
-GType nautilus_location_widget_provider_get_type (void);
-GtkWidget * nautilus_location_widget_provider_get_widget (NautilusLocationWidgetProvider *provider,
- const char *uri,
- GtkWidget *window);
+GtkWidget *nautilus_location_widget_provider_get_widget (NautilusLocationWidgetProvider *provider,
+ const char *uri,
+ GtkWidget *window);
+
G_END_DECLS
#endif
diff --git a/libnautilus-extension/nautilus-menu-item.c b/libnautilus-extension/nautilus-menu-item.c
index 068188a6b..85c8b8a72 100644
--- a/libnautilus-extension/nautilus-menu-item.c
+++ b/libnautilus-extension/nautilus-menu-item.c
@@ -25,6 +25,19 @@
#include <glib/gi18n-lib.h>
#include "nautilus-menu.h"
+typedef struct
+{
+ char *name;
+ char *label;
+ char *tip;
+ char *icon;
+ NautilusMenu *menu;
+ gboolean sensitive;
+ gboolean priority;
+} NautilusMenuItemPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (NautilusMenuItem, nautilus_menu_item, G_TYPE_OBJECT)
+
enum
{
ACTIVATE,
@@ -44,26 +57,12 @@ enum
LAST_PROP
};
-struct _NautilusMenuItemDetails
-{
- char *name;
- char *label;
- char *tip;
- char *icon;
- NautilusMenu *menu;
- gboolean sensitive;
- gboolean priority;
-};
-
static guint signals[LAST_SIGNAL];
-static GObjectClass *parent_class = NULL;
-
/**
* SECTION:nautilus-menu-item
* @title: NautilusMenuItem
* @short_description: Menu item descriptor object
- * @include: libnautilus-extension/nautilus-menu-item.h
*
* #NautilusMenuItem is an object that describes an item in a file manager
* menu. Extensions can provide #NautilusMenuItem objects by registering a
@@ -113,9 +112,11 @@ nautilus_menu_item_new (const char *name,
* emits the activate signal.
*/
void
-nautilus_menu_item_activate (NautilusMenuItem *item)
+nautilus_menu_item_activate (NautilusMenuItem *self)
{
- g_signal_emit (item, signals[ACTIVATE], 0);
+ g_return_if_fail (NAUTILUS_IS_MENU_ITEM (self));
+
+ g_signal_emit (self, signals[ACTIVATE], 0);
}
/**
@@ -126,10 +127,12 @@ nautilus_menu_item_activate (NautilusMenuItem *item)
* Attachs a menu to the given #NautilusMenuItem.
*/
void
-nautilus_menu_item_set_submenu (NautilusMenuItem *item,
+nautilus_menu_item_set_submenu (NautilusMenuItem *self,
NautilusMenu *menu)
{
- g_object_set (item, "menu", menu, NULL);
+ g_return_if_fail (NAUTILUS_IS_MENU_ITEM (self));
+
+ g_object_set (self, "menu", menu, NULL);
}
static void
@@ -139,50 +142,52 @@ nautilus_menu_item_get_property (GObject *object,
GParamSpec *pspec)
{
NautilusMenuItem *item;
+ NautilusMenuItemPrivate *priv;
item = NAUTILUS_MENU_ITEM (object);
+ priv = nautilus_menu_item_get_instance_private (item);
switch (param_id)
{
case PROP_NAME:
{
- g_value_set_string (value, item->details->name);
+ g_value_set_string (value, priv->name);
}
break;
case PROP_LABEL:
{
- g_value_set_string (value, item->details->label);
+ g_value_set_string (value, priv->label);
}
break;
case PROP_TIP:
{
- g_value_set_string (value, item->details->tip);
+ g_value_set_string (value, priv->tip);
}
break;
case PROP_ICON:
{
- g_value_set_string (value, item->details->icon);
+ g_value_set_string (value, priv->icon);
}
break;
case PROP_SENSITIVE:
{
- g_value_set_boolean (value, item->details->sensitive);
+ g_value_set_boolean (value, priv->sensitive);
}
break;
case PROP_PRIORITY:
{
- g_value_set_boolean (value, item->details->priority);
+ g_value_set_boolean (value, priv->priority);
}
break;
case PROP_MENU:
{
- g_value_set_object (value, item->details->menu);
+ g_value_set_object (value, priv->menu);
}
break;
@@ -201,64 +206,66 @@ nautilus_menu_item_set_property (GObject *object,
GParamSpec *pspec)
{
NautilusMenuItem *item;
+ NautilusMenuItemPrivate *priv;
item = NAUTILUS_MENU_ITEM (object);
+ priv = nautilus_menu_item_get_instance_private (item);
switch (param_id)
{
case PROP_NAME:
{
- g_free (item->details->name);
- item->details->name = g_strdup (g_value_get_string (value));
+ g_free (priv->name);
+ priv->name = g_strdup (g_value_get_string (value));
g_object_notify (object, "name");
}
break;
case PROP_LABEL:
{
- g_free (item->details->label);
- item->details->label = g_strdup (g_value_get_string (value));
+ g_free (priv->label);
+ priv->label = g_strdup (g_value_get_string (value));
g_object_notify (object, "label");
}
break;
case PROP_TIP:
{
- g_free (item->details->tip);
- item->details->tip = g_strdup (g_value_get_string (value));
+ g_free (priv->tip);
+ priv->tip = g_strdup (g_value_get_string (value));
g_object_notify (object, "tip");
}
break;
case PROP_ICON:
{
- g_free (item->details->icon);
- item->details->icon = g_strdup (g_value_get_string (value));
+ g_free (priv->icon);
+ priv->icon = g_strdup (g_value_get_string (value));
g_object_notify (object, "icon");
}
break;
case PROP_SENSITIVE:
{
- item->details->sensitive = g_value_get_boolean (value);
+ priv->sensitive = g_value_get_boolean (value);
g_object_notify (object, "sensitive");
}
break;
case PROP_PRIORITY:
{
- item->details->priority = g_value_get_boolean (value);
+ priv->priority = g_value_get_boolean (value);
g_object_notify (object, "priority");
}
break;
case PROP_MENU:
{
- if (item->details->menu)
+ if (priv->menu)
{
- g_object_unref (item->details->menu);
+ g_object_unref (priv->menu);
}
- item->details->menu = g_object_ref (g_value_get_object (value));
+ priv->menu = g_object_ref (g_value_get_object (value));
g_object_notify (object, "menu");
}
break;
@@ -275,36 +282,37 @@ static void
nautilus_menu_item_finalize (GObject *object)
{
NautilusMenuItem *item;
+ NautilusMenuItemPrivate *priv;
item = NAUTILUS_MENU_ITEM (object);
+ priv = nautilus_menu_item_get_instance_private (item);
- g_free (item->details->name);
- g_free (item->details->label);
- g_free (item->details->tip);
- g_free (item->details->icon);
- if (item->details->menu)
+ g_free (priv->name);
+ g_free (priv->label);
+ g_free (priv->tip);
+ g_free (priv->icon);
+ if (priv->menu)
{
- g_object_unref (item->details->menu);
+ g_object_unref (priv->menu);
}
- g_free (item->details);
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (nautilus_menu_item_parent_class)->finalize (object);
}
static void
-nautilus_menu_item_instance_init (NautilusMenuItem *item)
+nautilus_menu_item_init (NautilusMenuItem *self)
{
- item->details = g_new0 (NautilusMenuItemDetails, 1);
- item->details->sensitive = TRUE;
- item->details->menu = NULL;
+ NautilusMenuItemPrivate *priv;
+
+ priv = nautilus_menu_item_get_instance_private (self);
+
+ priv->sensitive = TRUE;
+ priv->menu = NULL;
}
static void
nautilus_menu_item_class_init (NautilusMenuItemClass *class)
{
- parent_class = g_type_class_peek_parent (class);
-
G_OBJECT_CLASS (class)->finalize = nautilus_menu_item_finalize;
G_OBJECT_CLASS (class)->get_property = nautilus_menu_item_get_property;
G_OBJECT_CLASS (class)->set_property = nautilus_menu_item_set_property;
@@ -370,32 +378,3 @@ nautilus_menu_item_class_init (NautilusMenuItemClass *class)
NAUTILUS_TYPE_MENU,
G_PARAM_READWRITE));
}
-
-GType
-nautilus_menu_item_get_type (void)
-{
- static GType type = 0;
-
- if (!type)
- {
- const GTypeInfo info =
- {
- sizeof (NautilusMenuItemClass),
- NULL,
- NULL,
- (GClassInitFunc) nautilus_menu_item_class_init,
- NULL,
- NULL,
- sizeof (NautilusMenuItem),
- 0,
- (GInstanceInitFunc) nautilus_menu_item_instance_init
- };
-
- type = g_type_register_static
- (G_TYPE_OBJECT,
- "NautilusMenuItem",
- &info, 0);
- }
-
- return type;
-}
diff --git a/libnautilus-extension/nautilus-menu-item.h b/libnautilus-extension/nautilus-menu-item.h
index cc1b32ad6..9e867444b 100644
--- a/libnautilus-extension/nautilus-menu-item.h
+++ b/libnautilus-extension/nautilus-menu-item.h
@@ -24,6 +24,10 @@
#ifndef NAUTILUS_MENU_ITEM_H
#define NAUTILUS_MENU_ITEM_H
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
#include "nautilus-menu.h"
#endif
diff --git a/libnautilus-extension/nautilus-menu-provider.c b/libnautilus-extension/nautilus-menu-provider.c
index 05eb28a67..ead742bd7 100644
--- a/libnautilus-extension/nautilus-menu-provider.c
+++ b/libnautilus-extension/nautilus-menu-provider.c
@@ -25,64 +25,36 @@
#include <config.h>
#include "nautilus-menu-provider.h"
-#include <glib-object.h>
+G_DEFINE_INTERFACE (NautilusMenuProvider, nautilus_menu_provider, G_TYPE_OBJECT)
+
+enum
+{
+ ITEMS_UPDATED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
/**
* SECTION:nautilus-menu-provider
* @title: NautilusMenuProvider
* @short_description: Interface to provide additional menu items
- * @include: libnautilus-extension/nautilus-menu-provider.h
*
* #NautilusMenuProvider allows extension to provide additional menu items
* in the file manager menus.
*/
static void
-nautilus_menu_provider_base_init (gpointer g_class)
+nautilus_menu_provider_default_init (NautilusMenuProviderInterface *klass)
{
- static gboolean initialized = FALSE;
-
- if (!initialized)
- {
- /* This signal should be emited each time the extension modify the list of menu items */
- g_signal_new ("items-updated",
- NAUTILUS_TYPE_MENU_PROVIDER,
- G_SIGNAL_RUN_LAST,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
- initialized = TRUE;
- }
-}
-
-GType
-nautilus_menu_provider_get_type (void)
-{
- static GType type = 0;
-
- if (!type)
- {
- const GTypeInfo info =
- {
- sizeof (NautilusMenuProviderIface),
- nautilus_menu_provider_base_init,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,
- 0,
- NULL
- };
-
- type = g_type_register_static (G_TYPE_INTERFACE,
- "NautilusMenuProvider",
- &info, 0);
- g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
- }
-
- return type;
+ /* This signal should be emited each time the extension modify the list of menu items */
+ signals[ITEMS_UPDATED] = g_signal_new ("items-updated",
+ NAUTILUS_TYPE_MENU_PROVIDER,
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
}
/**
@@ -98,17 +70,19 @@ nautilus_menu_provider_get_file_items (NautilusMenuProvider *provider,
GtkWidget *window,
GList *files)
{
+ NautilusMenuProviderInterface *iface;
+
+ iface = NAUTILUS_MENU_PROVIDER_GET_IFACE (provider);
+
g_return_val_if_fail (NAUTILUS_IS_MENU_PROVIDER (provider), NULL);
+ g_return_val_if_fail (GTK_IS_WIDGET (window), NULL);
- if (NAUTILUS_MENU_PROVIDER_GET_IFACE (provider)->get_file_items)
+ if (iface->get_file_items != NULL)
{
- return NAUTILUS_MENU_PROVIDER_GET_IFACE (provider)->get_file_items
- (provider, window, files);
- }
- else
- {
- return NULL;
+ return iface->get_file_items (provider, window, files);
}
+
+ return NULL;
}
/**
@@ -124,18 +98,20 @@ nautilus_menu_provider_get_background_items (NautilusMenuProvider *provider,
GtkWidget *window,
NautilusFileInfo *current_folder)
{
+ NautilusMenuProviderInterface *iface;
+
+ iface = NAUTILUS_MENU_PROVIDER_GET_IFACE (provider);
+
g_return_val_if_fail (NAUTILUS_IS_MENU_PROVIDER (provider), NULL);
+ g_return_val_if_fail (GTK_IS_WIDGET (window), NULL);
g_return_val_if_fail (NAUTILUS_IS_FILE_INFO (current_folder), NULL);
- if (NAUTILUS_MENU_PROVIDER_GET_IFACE (provider)->get_background_items)
+ if (iface->get_background_items != NULL)
{
- return NAUTILUS_MENU_PROVIDER_GET_IFACE (provider)->get_background_items
- (provider, window, current_folder);
- }
- else
- {
- return NULL;
+ return iface->get_background_items (provider, window, current_folder);
}
+
+ return NULL;
}
/* This function emit a signal to inform nautilus that its item list has changed */
@@ -144,5 +120,5 @@ nautilus_menu_provider_emit_items_updated_signal (NautilusMenuProvider *provider
{
g_return_if_fail (NAUTILUS_IS_MENU_PROVIDER (provider));
- g_signal_emit_by_name (provider, "items-updated");
+ g_signal_emit (provider, ITEMS_UPDATED, 0);
}
diff --git a/libnautilus-extension/nautilus-menu-provider.h b/libnautilus-extension/nautilus-menu-provider.h
index 23ff537be..bd887feaa 100644
--- a/libnautilus-extension/nautilus-menu-provider.h
+++ b/libnautilus-extension/nautilus-menu-provider.h
@@ -29,24 +29,27 @@
#ifndef NAUTILUS_MENU_PROVIDER_H
#define NAUTILUS_MENU_PROVIDER_H
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
#include <glib-object.h>
#include <gtk/gtk.h>
-#include "nautilus-extension-types.h"
#include "nautilus-file-info.h"
-#include "nautilus-menu.h"
G_BEGIN_DECLS
-#define NAUTILUS_TYPE_MENU_PROVIDER (nautilus_menu_provider_get_type ())
-#define NAUTILUS_MENU_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_MENU_PROVIDER, NautilusMenuProvider))
-#define NAUTILUS_IS_MENU_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_MENU_PROVIDER))
-#define NAUTILUS_MENU_PROVIDER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NAUTILUS_TYPE_MENU_PROVIDER, NautilusMenuProviderIface))
+#define NAUTILUS_TYPE_MENU_PROVIDER (nautilus_menu_provider_get_type ())
+
+G_DECLARE_INTERFACE (NautilusMenuProvider, nautilus_menu_provider,
+ NAUTILUS, MENU_PROVIDER,
+ GObject)
-typedef struct _NautilusMenuProvider NautilusMenuProvider;
-typedef struct _NautilusMenuProviderIface NautilusMenuProviderIface;
+/* For compatibility reasons, remove this once you start introducing breaking changes. */
+typedef NautilusMenuProviderInterface NautilusMenuProviderIface;
/**
- * NautilusMenuProviderIface:
+ * NautilusMenuProviderInterface:
* @g_iface: The parent interface.
* @get_file_items: Returns a #GList of #NautilusMenuItem.
* See nautilus_menu_provider_get_file_items() for details.
@@ -55,28 +58,28 @@ typedef struct _NautilusMenuProviderIface NautilusMenuProviderIface;
*
* Interface for extensions to provide additional menu items.
*/
-struct _NautilusMenuProviderIface {
- GTypeInterface g_iface;
+struct _NautilusMenuProviderInterface
+{
+ GTypeInterface g_iface;
- GList *(*get_file_items) (NautilusMenuProvider *provider,
- GtkWidget *window,
- GList *files);
- GList *(*get_background_items) (NautilusMenuProvider *provider,
- GtkWidget *window,
- NautilusFileInfo *current_folder);
+ GList *(*get_file_items) (NautilusMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+ GList *(*get_background_items) (NautilusMenuProvider *provider,
+ GtkWidget *window,
+ NautilusFileInfo *current_folder);
};
/* Interface Functions */
-GType nautilus_menu_provider_get_type (void);
-GList *nautilus_menu_provider_get_file_items (NautilusMenuProvider *provider,
- GtkWidget *window,
- GList *files);
-GList *nautilus_menu_provider_get_background_items (NautilusMenuProvider *provider,
- GtkWidget *window,
- NautilusFileInfo *current_folder);
+GList *nautilus_menu_provider_get_file_items (NautilusMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+GList *nautilus_menu_provider_get_background_items (NautilusMenuProvider *provider,
+ GtkWidget *window,
+ NautilusFileInfo *current_folder);
/* This function emit a signal to inform nautilus that its item list has changed. */
-void nautilus_menu_provider_emit_items_updated_signal (NautilusMenuProvider *provider);
+void nautilus_menu_provider_emit_items_updated_signal (NautilusMenuProvider *provider);
G_END_DECLS
diff --git a/libnautilus-extension/nautilus-menu.c b/libnautilus-extension/nautilus-menu.c
index fcc2ecc4c..d4b5b3001 100644
--- a/libnautilus-extension/nautilus-menu.c
+++ b/libnautilus-extension/nautilus-menu.c
@@ -30,29 +30,29 @@
* SECTION:nautilus-menu
* @title: NautilusMenu
* @short_description: Menu descriptor object
- * @include: libnautilus-extension/nautilus-menu.h
*
* #NautilusMenu is an object that describes a submenu in a file manager
* menu. Extensions can provide #NautilusMenu objects by attaching them to
* #NautilusMenuItem objects, using nautilus_menu_item_set_submenu().
*/
-#define NAUTILUS_MENU_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NAUTILUS_TYPE_MENU, NautilusMenuPrivate))
-G_DEFINE_TYPE (NautilusMenu, nautilus_menu, G_TYPE_OBJECT);
-
-struct _NautilusMenuPrivate
+struct _NautilusMenu
{
+ GObject parent_instance;
+
GList *item_list;
};
+G_DEFINE_TYPE (NautilusMenu, nautilus_menu, G_TYPE_OBJECT);
+
void
-nautilus_menu_append_item (NautilusMenu *menu,
- NautilusMenuItem *item)
+nautilus_menu_append_item (NautilusMenu *self,
+ NautilusMenuItem *menu_item)
{
- g_return_if_fail (menu != NULL);
- g_return_if_fail (item != NULL);
+ g_return_if_fail (NAUTILUS_IS_MENU (self));
+ g_return_if_fail (NAUTILUS_IS_MENU_ITEM (menu_item));
- menu->priv->item_list = g_list_append (menu->priv->item_list, g_object_ref (item));
+ self->item_list = g_list_append (self->item_list, g_object_ref (menu_item));
}
/**
@@ -62,13 +62,13 @@ nautilus_menu_append_item (NautilusMenu *menu,
* Returns: (element-type NautilusMenuItem) (transfer full): the provided #NautilusMenuItem list
*/
GList *
-nautilus_menu_get_items (NautilusMenu *menu)
+nautilus_menu_get_items (NautilusMenu *self)
{
GList *item_list;
- g_return_val_if_fail (menu != NULL, NULL);
+ g_return_val_if_fail (NAUTILUS_IS_MENU (self), NULL);
- item_list = g_list_copy (menu->priv->item_list);
+ item_list = g_list_copy (self->item_list);
g_list_foreach (item_list, (GFunc) g_object_ref, NULL);
return item_list;
@@ -95,20 +95,15 @@ nautilus_menu_finalize (GObject *object)
{
NautilusMenu *menu = NAUTILUS_MENU (object);
- if (menu->priv->item_list)
- {
- g_list_free (menu->priv->item_list);
- }
+ g_clear_pointer (&menu->item_list, g_list_free);
G_OBJECT_CLASS (nautilus_menu_parent_class)->finalize (object);
}
static void
-nautilus_menu_init (NautilusMenu *menu)
+nautilus_menu_init (NautilusMenu *self)
{
- menu->priv = NAUTILUS_MENU_GET_PRIVATE (menu);
-
- menu->priv->item_list = NULL;
+ self->item_list = NULL;
}
static void
@@ -116,8 +111,6 @@ nautilus_menu_class_init (NautilusMenuClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- g_type_class_add_private (klass, sizeof (NautilusMenuPrivate));
-
object_class->finalize = nautilus_menu_finalize;
}
@@ -126,9 +119,5 @@ nautilus_menu_class_init (NautilusMenuClass *klass)
NautilusMenu *
nautilus_menu_new (void)
{
- NautilusMenu *obj;
-
- obj = NAUTILUS_MENU (g_object_new (NAUTILUS_TYPE_MENU, NULL));
-
- return obj;
+ return g_object_new (NAUTILUS_TYPE_MENU, NULL);
}
diff --git a/libnautilus-extension/nautilus-menu.h b/libnautilus-extension/nautilus-menu.h
index fd132be4e..efac9a0d1 100644
--- a/libnautilus-extension/nautilus-menu.h
+++ b/libnautilus-extension/nautilus-menu.h
@@ -26,80 +26,47 @@
#define NAUTILUS_MENU_H
#include <glib-object.h>
-#include "nautilus-extension-types.h"
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
G_BEGIN_DECLS
-/* NautilusMenu defines */
-#define NAUTILUS_TYPE_MENU (nautilus_menu_get_type ())
-#define NAUTILUS_MENU(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NAUTILUS_TYPE_MENU, NautilusMenu))
-#define NAUTILUS_MENU_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), NAUTILUS_TYPE_MENU, NautilusMenuClass))
-#define NAUTILUS_IS_MENU(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NAUTILUS_TYPE_MENU))
-#define NAUTILUS_IS_MENU_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), NAUTILUS_TYPE_MENU))
-#define NAUTILUS_MENU_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NAUTILUS_TYPE_MENU, NautilusMenuClass))
-/* NautilusMenuItem defines */
-#define NAUTILUS_TYPE_MENU_ITEM (nautilus_menu_item_get_type())
-#define NAUTILUS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_MENU_ITEM, NautilusMenuItem))
-#define NAUTILUS_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_MENU_ITEM, NautilusMenuItemClass))
-#define NAUTILUS_MENU_IS_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_MENU_ITEM))
-#define NAUTILUS_MENU_IS_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NAUTILUS_TYPE_MENU_ITEM))
-#define NAUTILUS_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), NAUTILUS_TYPE_MENU_ITEM, NautilusMenuItemClass))
-
-
-/* NautilusMenu types */
-typedef struct _NautilusMenu NautilusMenu;
-typedef struct _NautilusMenuPrivate NautilusMenuPrivate;
-typedef struct _NautilusMenuClass NautilusMenuClass;
-/* NautilusMenuItem types */
-typedef struct _NautilusMenuItem NautilusMenuItem;
-typedef struct _NautilusMenuItemDetails NautilusMenuItemDetails;
-typedef struct _NautilusMenuItemClass NautilusMenuItemClass;
-
-
-/* NautilusMenu structs */
-struct _NautilusMenu {
- GObject parent;
- NautilusMenuPrivate *priv;
-};
+#define NAUTILUS_TYPE_MENU (nautilus_menu_get_type ())
+#define NAUTILUS_TYPE_MENU_ITEM (nautilus_menu_item_get_type ())
-struct _NautilusMenuClass {
- GObjectClass parent_class;
-};
+G_DECLARE_FINAL_TYPE (NautilusMenu, nautilus_menu,
+ NAUTILUS, MENU,
+ GObject)
+G_DECLARE_DERIVABLE_TYPE (NautilusMenuItem, nautilus_menu_item,
+ NAUTILUS, MENU_ITEM,
+ GObject)
-/* NautilusMenuItem structs */
-struct _NautilusMenuItem {
- GObject parent;
+struct _NautilusMenuItemClass
+{
+ GObjectClass parent;
- NautilusMenuItemDetails *details;
+ void (*activate) (NautilusMenuItem *item);
};
-struct _NautilusMenuItemClass {
- GObjectClass parent;
-
- void (*activate) (NautilusMenuItem *item);
-};
+NautilusMenu *nautilus_menu_new (void);
+void nautilus_menu_append_item (NautilusMenu *menu,
+ NautilusMenuItem *item);
+GList *nautilus_menu_get_items (NautilusMenu *menu);
+void nautilus_menu_item_list_free (GList *item_list);
-/* NautilusMenu methods */
-GType nautilus_menu_get_type (void);
-NautilusMenu * nautilus_menu_new (void);
-void nautilus_menu_append_item (NautilusMenu *menu,
- NautilusMenuItem *item);
-GList* nautilus_menu_get_items (NautilusMenu *menu);
-void nautilus_menu_item_list_free (GList *item_list);
+NautilusMenuItem *nautilus_menu_item_new (const char *name,
+ const char *label,
+ const char *tip,
+ const char *icon);
-/* NautilusMenuItem methods */
-GType nautilus_menu_item_get_type (void);
-NautilusMenuItem *nautilus_menu_item_new (const char *name,
- const char *label,
- const char *tip,
- const char *icon);
+void nautilus_menu_item_activate (NautilusMenuItem *item);
+void nautilus_menu_item_set_submenu (NautilusMenuItem *item,
+ NautilusMenu *menu);
-void nautilus_menu_item_activate (NautilusMenuItem *item);
-void nautilus_menu_item_set_submenu (NautilusMenuItem *item,
- NautilusMenu *menu);
/* NautilusMenuItem has the following properties:
* name (string) - the identifier for the menu item
* label (string) - the user-visible label of the menu item
diff --git a/libnautilus-extension/nautilus-property-page-provider.c b/libnautilus-extension/nautilus-property-page-provider.c
index 7a7a13cf0..26ec03cf5 100644
--- a/libnautilus-extension/nautilus-property-page-provider.c
+++ b/libnautilus-extension/nautilus-property-page-provider.c
@@ -22,55 +22,25 @@
*
*/
-#include <config.h>
#include "nautilus-property-page-provider.h"
-#include <glib-object.h>
+G_DEFINE_INTERFACE (NautilusPropertyPageProvider, nautilus_property_page_provider,
+ G_TYPE_OBJECT)
/**
* SECTION:nautilus-property-page-provider
* @title: NautilusPropertyPageProvider
* @short_description: Interface to provide additional property pages
- * @include: libnautilus-extension/nautilus-property-page-provider.h
*
* #NautilusPropertyPageProvider allows extension to provide additional pages
* for the file properties dialog.
*/
static void
-nautilus_property_page_provider_base_init (gpointer g_class)
+nautilus_property_page_provider_default_init (NautilusPropertyPageProviderInterface *klass)
{
}
-GType
-nautilus_property_page_provider_get_type (void)
-{
- static GType type = 0;
-
- if (!type)
- {
- const GTypeInfo info =
- {
- sizeof (NautilusPropertyPageProviderIface),
- nautilus_property_page_provider_base_init,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,
- 0,
- NULL
- };
-
- type = g_type_register_static (G_TYPE_INTERFACE,
- "NautilusPropertyPageProvider",
- &info, 0);
- g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
- }
-
- return type;
-}
-
/**
* nautilus_property_page_provider_get_pages:
* @provider: a #NautilusPropertyPageProvider
@@ -85,12 +55,16 @@ nautilus_property_page_provider_get_type (void)
* Returns: (element-type NautilusPropertyPage) (transfer full): A #GList of allocated #NautilusPropertyPage items.
*/
GList *
-nautilus_property_page_provider_get_pages (NautilusPropertyPageProvider *provider,
+nautilus_property_page_provider_get_pages (NautilusPropertyPageProvider *self,
GList *files)
{
- g_return_val_if_fail (NAUTILUS_IS_PROPERTY_PAGE_PROVIDER (provider), NULL);
- g_return_val_if_fail (NAUTILUS_PROPERTY_PAGE_PROVIDER_GET_IFACE (provider)->get_pages != NULL, NULL);
+ NautilusPropertyPageProviderInterface *iface;
+
+ g_return_val_if_fail (NAUTILUS_IS_PROPERTY_PAGE_PROVIDER (self), NULL);
+
+ iface = NAUTILUS_PROPERTY_PAGE_PROVIDER_GET_IFACE (self);
+
+ g_return_val_if_fail (iface->get_pages != NULL, NULL);
- return NAUTILUS_PROPERTY_PAGE_PROVIDER_GET_IFACE (provider)->get_pages
- (provider, files);
+ return iface->get_pages (self, files);
}
diff --git a/libnautilus-extension/nautilus-property-page-provider.h b/libnautilus-extension/nautilus-property-page-provider.h
index 1a3b36058..55b7742e7 100644
--- a/libnautilus-extension/nautilus-property-page-provider.h
+++ b/libnautilus-extension/nautilus-property-page-provider.h
@@ -30,40 +30,42 @@
#ifndef NAUTILUS_PROPERTY_PAGE_PROVIDER_H
#define NAUTILUS_PROPERTY_PAGE_PROVIDER_H
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
#include <glib-object.h>
-#include "nautilus-extension-types.h"
-#include "nautilus-file-info.h"
-#include "nautilus-property-page.h"
G_BEGIN_DECLS
-#define NAUTILUS_TYPE_PROPERTY_PAGE_PROVIDER (nautilus_property_page_provider_get_type ())
-#define NAUTILUS_PROPERTY_PAGE_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_PROPERTY_PAGE_PROVIDER, NautilusPropertyPageProvider))
-#define NAUTILUS_IS_PROPERTY_PAGE_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_PROPERTY_PAGE_PROVIDER))
-#define NAUTILUS_PROPERTY_PAGE_PROVIDER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NAUTILUS_TYPE_PROPERTY_PAGE_PROVIDER, NautilusPropertyPageProviderIface))
+#define NAUTILUS_TYPE_PROPERTY_PAGE_PROVIDER (nautilus_property_page_provider_get_type ())
+
+G_DECLARE_INTERFACE (NautilusPropertyPageProvider, nautilus_property_page_provider,
+ NAUTILUS, PROPERTY_PAGE_PROVIDER,
+ GObject)
-typedef struct _NautilusPropertyPageProvider NautilusPropertyPageProvider;
-typedef struct _NautilusPropertyPageProviderIface NautilusPropertyPageProviderIface;
+/* For compatibility reasons, remove this once you start introducing breaking changes. */
+typedef NautilusPropertyPageProviderInterface NautilusPropertyPageProviderIface;
/**
- * NautilusPropertyPageProviderIface:
+ * NautilusPropertyPageProviderInterface:
* @g_iface: The parent interface.
* @get_pages: Returns a #GList of #NautilusPropertyPage.
* See nautilus_property_page_provider_get_pages() for details.
*
* Interface for extensions to provide additional property pages.
*/
-struct _NautilusPropertyPageProviderIface {
- GTypeInterface g_iface;
+struct _NautilusPropertyPageProviderInterface
+{
+ GTypeInterface g_iface;
- GList *(*get_pages) (NautilusPropertyPageProvider *provider,
- GList *files);
+ GList *(*get_pages) (NautilusPropertyPageProvider *provider,
+ GList *files);
};
/* Interface Functions */
-GType nautilus_property_page_provider_get_type (void);
-GList *nautilus_property_page_provider_get_pages (NautilusPropertyPageProvider *provider,
- GList *files);
+GList *nautilus_property_page_provider_get_pages (NautilusPropertyPageProvider *provider,
+ GList *files);
G_END_DECLS
diff --git a/libnautilus-extension/nautilus-property-page.c b/libnautilus-extension/nautilus-property-page.c
index a1c9d3a87..ca81fc121 100644
--- a/libnautilus-extension/nautilus-property-page.c
+++ b/libnautilus-extension/nautilus-property-page.c
@@ -35,20 +35,21 @@ enum
LAST_PROP
};
-struct _NautilusPropertyPageDetails
+struct _NautilusPropertyPage
{
+ GObject parent_instance;
+
char *name;
GtkWidget *label;
GtkWidget *page;
};
-static GObjectClass *parent_class = NULL;
+G_DEFINE_TYPE (NautilusPropertyPage, nautilus_property_page, G_TYPE_OBJECT)
/**
* SECTION:nautilus-property-page
* @title: NautilusPropertyPage
* @short_description: Property page descriptor object
- * @include: libnautilus-extension/nautilus-property-page.h
*
* #NautilusPropertyPage is an object that describes a page in the file
* properties dialog. Extensions can provide #NautilusPropertyPage objects
@@ -75,9 +76,8 @@ nautilus_property_page_new (const char *name,
NautilusPropertyPage *page;
g_return_val_if_fail (name != NULL, NULL);
- g_return_val_if_fail (label != NULL && GTK_IS_WIDGET (label), NULL);
- g_return_val_if_fail (page_widget != NULL && GTK_IS_WIDGET (page_widget),
- NULL);
+ g_return_val_if_fail (GTK_IS_WIDGET (label), NULL);
+ g_return_val_if_fail (GTK_IS_WIDGET (page_widget), NULL);
page = g_object_new (NAUTILUS_TYPE_PROPERTY_PAGE,
"name", name,
@@ -102,19 +102,19 @@ nautilus_property_page_get_property (GObject *object,
{
case PROP_NAME:
{
- g_value_set_string (value, page->details->name);
+ g_value_set_string (value, page->name);
}
break;
case PROP_LABEL:
{
- g_value_set_object (value, page->details->label);
+ g_value_set_object (value, page->label);
}
break;
case PROP_PAGE:
{
- g_value_set_object (value, page->details->page);
+ g_value_set_object (value, page->page);
}
break;
@@ -140,32 +140,32 @@ nautilus_property_page_set_property (GObject *object,
{
case PROP_NAME:
{
- g_free (page->details->name);
- page->details->name = g_strdup (g_value_get_string (value));
+ g_free (page->name);
+ page->name = g_strdup (g_value_get_string (value));
g_object_notify (object, "name");
}
break;
case PROP_LABEL:
{
- if (page->details->label)
+ if (page->label)
{
- g_object_unref (page->details->label);
+ g_object_unref (page->label);
}
- page->details->label = g_object_ref (g_value_get_object (value));
+ page->label = g_object_ref (g_value_get_object (value));
g_object_notify (object, "label");
}
break;
case PROP_PAGE:
{
- if (page->details->page)
+ if (page->page)
{
- g_object_unref (page->details->page);
+ g_object_unref (page->page);
}
- page->details->page = g_object_ref (g_value_get_object (value));
+ page->page = g_object_ref (g_value_get_object (value));
g_object_notify (object, "page");
}
break;
@@ -185,15 +185,15 @@ nautilus_property_page_dispose (GObject *object)
page = NAUTILUS_PROPERTY_PAGE (object);
- if (page->details->label)
+ if (page->label)
{
- g_object_unref (page->details->label);
- page->details->label = NULL;
+ g_object_unref (page->label);
+ page->label = NULL;
}
- if (page->details->page)
+ if (page->page)
{
- g_object_unref (page->details->page);
- page->details->page = NULL;
+ g_object_unref (page->page);
+ page->page = NULL;
}
}
@@ -204,24 +204,19 @@ nautilus_property_page_finalize (GObject *object)
page = NAUTILUS_PROPERTY_PAGE (object);
- g_free (page->details->name);
-
- g_free (page->details);
+ g_free (page->name);
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (nautilus_property_page_parent_class)->finalize (object);
}
static void
-nautilus_property_page_instance_init (NautilusPropertyPage *page)
+nautilus_property_page_init (NautilusPropertyPage *page)
{
- page->details = g_new0 (NautilusPropertyPageDetails, 1);
}
static void
nautilus_property_page_class_init (NautilusPropertyPageClass *class)
{
- parent_class = g_type_class_peek_parent (class);
-
G_OBJECT_CLASS (class)->finalize = nautilus_property_page_finalize;
G_OBJECT_CLASS (class)->dispose = nautilus_property_page_dispose;
G_OBJECT_CLASS (class)->get_property = nautilus_property_page_get_property;
@@ -249,32 +244,3 @@ nautilus_property_page_class_init (NautilusPropertyPageClass *class)
GTK_TYPE_WIDGET,
G_PARAM_READWRITE));
}
-
-GType
-nautilus_property_page_get_type (void)
-{
- static GType type = 0;
-
- if (!type)
- {
- const GTypeInfo info =
- {
- sizeof (NautilusPropertyPageClass),
- NULL,
- NULL,
- (GClassInitFunc) nautilus_property_page_class_init,
- NULL,
- NULL,
- sizeof (NautilusPropertyPage),
- 0,
- (GInstanceInitFunc) nautilus_property_page_instance_init
- };
-
- type = g_type_register_static
- (G_TYPE_OBJECT,
- "NautilusPropertyPage",
- &info, 0);
- }
-
- return type;
-}
diff --git a/libnautilus-extension/nautilus-property-page.h b/libnautilus-extension/nautilus-property-page.h
index da8d44cb5..483df7c72 100644
--- a/libnautilus-extension/nautilus-property-page.h
+++ b/libnautilus-extension/nautilus-property-page.h
@@ -24,39 +24,24 @@
#ifndef NAUTILUS_PROPERTY_PAGE_H
#define NAUTILUS_PROPERTY_PAGE_H
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
#include <glib-object.h>
#include <gtk/gtk.h>
-#include "nautilus-extension-types.h"
G_BEGIN_DECLS
-#define NAUTILUS_TYPE_PROPERTY_PAGE (nautilus_property_page_get_type())
-#define NAUTILUS_PROPERTY_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_PROPERTY_PAGE, NautilusPropertyPage))
-#define NAUTILUS_PROPERTY_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_PROPERTY_PAGE, NautilusPropertyPageClass))
-#define NAUTILUS_IS_PROPERTY_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_PROPERTY_PAGE))
-#define NAUTILUS_IS_PROPERTY_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NAUTILUS_TYPE_PROPERTY_PAGE))
-#define NAUTILUS_PROPERTY_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), NAUTILUS_TYPE_PROPERTY_PAGE, NautilusPropertyPageClass))
-
-typedef struct _NautilusPropertyPage NautilusPropertyPage;
-typedef struct _NautilusPropertyPageDetails NautilusPropertyPageDetails;
-typedef struct _NautilusPropertyPageClass NautilusPropertyPageClass;
-
-struct _NautilusPropertyPage
-{
- GObject parent;
-
- NautilusPropertyPageDetails *details;
-};
+#define NAUTILUS_TYPE_PROPERTY_PAGE (nautilus_property_page_get_type ())
-struct _NautilusPropertyPageClass
-{
- GObjectClass parent;
-};
+G_DECLARE_FINAL_TYPE (NautilusPropertyPage, nautilus_property_page,
+ NAUTILUS, PROPERTY_PAGE,
+ GObject)
-GType nautilus_property_page_get_type (void);
-NautilusPropertyPage *nautilus_property_page_new (const char *name,
- GtkWidget *label,
- GtkWidget *page);
+NautilusPropertyPage *nautilus_property_page_new (const char *name,
+ GtkWidget *label,
+ GtkWidget *page);
/* NautilusPropertyPage has the following properties:
* name (string) - the identifier for the property page
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index 61d980863..a73b77363 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -50,7 +50,8 @@
#include "nautilus-profile.h"
#include "nautilus-signaller.h"
#include "nautilus-ui-utilities.h"
-#include <libnautilus-extension/nautilus-menu-provider.h>
+
+#include <nautilus-extension.h>
#define DEBUG_FLAG NAUTILUS_DEBUG_APPLICATION
#include "nautilus-debug.h"
diff --git a/src/nautilus-column-chooser.c b/src/nautilus-column-chooser.c
index 24a77386e..ba05b5924 100644
--- a/src/nautilus-column-chooser.c
+++ b/src/nautilus-column-chooser.c
@@ -26,6 +26,8 @@
#include <gtk/gtk.h>
#include <glib/gi18n.h>
+#include <nautilus-extension.h>
+
#include "nautilus-column-utilities.h"
struct _NautilusColumnChooser
diff --git a/src/nautilus-column-utilities.c b/src/nautilus-column-utilities.c
index 22789938b..7f00fa95f 100644
--- a/src/nautilus-column-utilities.c
+++ b/src/nautilus-column-utilities.c
@@ -25,7 +25,7 @@
#include <string.h>
#include <eel/eel-glib-extensions.h>
#include <glib/gi18n.h>
-#include <libnautilus-extension/nautilus-column-provider.h>
+#include <nautilus-extension.h>
#include "nautilus-module.h"
static const char *default_column_order[] =
diff --git a/src/nautilus-column-utilities.h b/src/nautilus-column-utilities.h
index 83e392812..6d07aa3e5 100644
--- a/src/nautilus-column-utilities.h
+++ b/src/nautilus-column-utilities.h
@@ -23,7 +23,6 @@
#ifndef NAUTILUS_COLUMN_UTILITIES_H
#define NAUTILUS_COLUMN_UTILITIES_H
-#include <libnautilus-extension/nautilus-column.h>
#include "nautilus-file.h"
GList *nautilus_get_all_columns (void);
diff --git a/src/nautilus-desktop-item-properties.c b/src/nautilus-desktop-item-properties.c
index 558cfbfc9..89965121b 100644
--- a/src/nautilus-desktop-item-properties.c
+++ b/src/nautilus-desktop-item-properties.c
@@ -29,8 +29,7 @@
#include <eel/eel-glib-extensions.h>
#include <gtk/gtk.h>
#include <glib/gi18n.h>
-#include <libnautilus-extension/nautilus-extension-types.h>
-#include <libnautilus-extension/nautilus-file-info.h>
+#include <nautilus-extension.h>
#include "nautilus-file.h"
#include "nautilus-file-attributes.h"
diff --git a/src/nautilus-directory-private.h b/src/nautilus-directory-private.h
index a7d8c7a8e..f60387049 100644
--- a/src/nautilus-directory-private.h
+++ b/src/nautilus-directory-private.h
@@ -25,7 +25,7 @@
#include "nautilus-file-queue.h"
#include "nautilus-file.h"
#include "nautilus-monitor.h"
-#include <libnautilus-extension/nautilus-info-provider.h>
+#include <nautilus-extension.h>
#include <libxml/tree.h>
typedef struct LinkInfoReadState LinkInfoReadState;
diff --git a/src/nautilus-file.c b/src/nautilus-file.c
index bbbb20df5..496cbefaf 100644
--- a/src/nautilus-file.c
+++ b/src/nautilus-file.c
@@ -54,9 +54,8 @@
#include <glib.h>
#include <gnome-autoar/gnome-autoar.h>
#include <gdesktop-enums.h>
-#include <libnautilus-extension/nautilus-file-info.h>
-#include <libnautilus-extension/nautilus-extension-private.h>
#include <libxml/parser.h>
+#include <libnautilus-extension/nautilus-extension-private.h>
#include <pwd.h>
#include <stdlib.h>
#include <sys/time.h>
@@ -162,7 +161,7 @@ static GQuark attribute_name_q,
attribute_free_space_q,
attribute_favorite_q;
-static void nautilus_file_info_iface_init (NautilusFileInfoIface *iface);
+static void nautilus_file_info_iface_init (NautilusFileInfoInterface *iface);
static char *nautilus_file_get_owner_as_string (NautilusFile *file,
gboolean include_real_name);
static char *nautilus_file_get_type_as_string (NautilusFile *file);
@@ -711,7 +710,7 @@ nautilus_file_new_from_info (NautilusDirectory *directory,
return file;
}
-static NautilusFile *
+static NautilusFileInfo *
nautilus_file_get_internal (GFile *location,
gboolean create)
{
@@ -782,45 +781,39 @@ nautilus_file_get_internal (GFile *location,
g_free (basename);
nautilus_directory_unref (directory);
- return file;
+ return NAUTILUS_FILE_INFO (file);
}
NautilusFile *
nautilus_file_get (GFile *location)
{
- return nautilus_file_get_internal (location, TRUE);
+ return NAUTILUS_FILE (nautilus_file_get_internal (location, TRUE));
}
NautilusFile *
nautilus_file_get_existing (GFile *location)
{
- return nautilus_file_get_internal (location, FALSE);
+ return NAUTILUS_FILE (nautilus_file_get_internal (location, FALSE));
}
NautilusFile *
nautilus_file_get_existing_by_uri (const char *uri)
{
- GFile *location;
- NautilusFile *file;
+ g_autoptr (GFile) location = NULL;
location = g_file_new_for_uri (uri);
- file = nautilus_file_get_internal (location, FALSE);
- g_object_unref (location);
- return file;
+ return nautilus_file_get_existing (location);
}
NautilusFile *
nautilus_file_get_by_uri (const char *uri)
{
- GFile *location;
- NautilusFile *file;
+ g_autoptr (GFile) location = NULL;
location = g_file_new_for_uri (uri);
- file = nautilus_file_get_internal (location, TRUE);
- g_object_unref (location);
- return file;
+ return nautilus_file_get (location);
}
gboolean
@@ -1017,41 +1010,29 @@ nautilus_file_get_parent_uri_for_display (NautilusFile *file)
char *
nautilus_file_get_parent_uri (NautilusFile *file)
{
- g_assert (NAUTILUS_IS_FILE (file));
-
- if (nautilus_file_is_self_owned (file))
- {
- /* Callers expect an empty string, not a NULL. */
- return g_strdup ("");
- }
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
- return nautilus_directory_get_uri (file->details->directory);
+ return nautilus_file_info_get_parent_uri (NAUTILUS_FILE_INFO (file));
}
GFile *
nautilus_file_get_parent_location (NautilusFile *file)
{
- g_assert (NAUTILUS_IS_FILE (file));
-
- if (nautilus_file_is_self_owned (file))
- {
- return NULL;
- }
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
- return nautilus_directory_get_location (file->details->directory);
+ return nautilus_file_info_get_parent_location (NAUTILUS_FILE_INFO (file));
}
NautilusFile *
nautilus_file_get_parent (NautilusFile *file)
{
- g_assert (NAUTILUS_IS_FILE (file));
+ NautilusFileInfo *file_info;
- if (nautilus_file_is_self_owned (file))
- {
- return NULL;
- }
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
+
+ file_info = NAUTILUS_FILE_INFO (file);
- return nautilus_directory_get_corresponding_file (file->details->directory);
+ return NAUTILUS_FILE (nautilus_file_info_get_parent_info (file_info));
}
/**
@@ -1091,7 +1072,7 @@ nautilus_file_can_write (NautilusFile *file)
{
g_return_val_if_fail (NAUTILUS_IS_FILE (file), FALSE);
- return file->details->can_write;
+ return nautilus_file_info_can_write (NAUTILUS_FILE_INFO (file));
}
/**
@@ -1744,57 +1725,26 @@ nautilus_file_can_trash (NautilusFile *file)
GFile *
nautilus_file_get_location (NautilusFile *file)
{
- g_autoptr (GFile) location = NULL;
-
g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
- location = nautilus_directory_get_location (file->details->directory);
-
- if (nautilus_file_is_self_owned (file))
- {
- return g_object_ref (location);
- }
-
- return g_file_get_child (location, eel_ref_str_peek (file->details->name));
+ return nautilus_file_info_get_location (NAUTILUS_FILE_INFO (file));
}
/* Return the actual uri associated with the passed-in file. */
char *
nautilus_file_get_uri (NautilusFile *file)
{
- char *uri;
- GFile *loc;
-
g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
- loc = nautilus_file_get_location (file);
- uri = g_file_get_uri (loc);
- g_object_unref (loc);
-
- return uri;
+ return nautilus_file_info_get_uri (NAUTILUS_FILE_INFO (file));
}
char *
nautilus_file_get_uri_scheme (NautilusFile *file)
{
- g_autoptr (GFile) location = NULL;
- char *scheme;
-
g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
- if (file->details->directory == NULL)
- {
- return NULL;
- }
-
- location = nautilus_directory_get_location (file->details->directory);
- if (location == NULL)
- {
- return NULL;
- }
- scheme = g_file_get_uri_scheme (location);
-
- return scheme;
+ return nautilus_file_info_get_uri_scheme (NAUTILUS_FILE_INFO (file));
}
@@ -4603,7 +4553,9 @@ nautilus_file_get_edit_name (NautilusFile *file)
char *
nautilus_file_get_name (NautilusFile *file)
{
- return g_strdup (eel_ref_str_peek (file->details->name));
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
+
+ return nautilus_file_info_get_name (NAUTILUS_FILE_INFO (file));
}
/**
@@ -4671,12 +4623,7 @@ nautilus_file_get_activation_uri (NautilusFile *file)
{
g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
- if (file->details->activation_uri != NULL)
- {
- return g_strdup (file->details->activation_uri);
- }
-
- return nautilus_file_get_uri (file);
+ return nautilus_file_info_get_uri (NAUTILUS_FILE_INFO (file));
}
GFile *
@@ -7507,7 +7454,9 @@ char *
nautilus_file_get_string_attribute (NautilusFile *file,
const char *attribute_name)
{
- return nautilus_file_get_string_attribute_q (file, g_quark_from_string (attribute_name));
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
+
+ return nautilus_file_info_get_string_attribute (NAUTILUS_FILE_INFO (file), attribute_name);
}
@@ -7819,12 +7768,9 @@ nautilus_file_get_detailed_type_as_string (NautilusFile *file)
GFileType
nautilus_file_get_file_type (NautilusFile *file)
{
- if (file == NULL)
- {
- return G_FILE_TYPE_UNKNOWN;
- }
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), G_FILE_TYPE_UNKNOWN);
- return file->details->type;
+ return nautilus_file_info_get_file_type (NAUTILUS_FILE_INFO (file));;
}
/**
@@ -7839,15 +7785,9 @@ nautilus_file_get_file_type (NautilusFile *file)
char *
nautilus_file_get_mime_type (NautilusFile *file)
{
- if (file != NULL)
- {
- g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
- if (file->details->mime_type != NULL)
- {
- return g_strdup (eel_ref_str_peek (file->details->mime_type));
- }
- }
- return g_strdup ("application/octet-stream");
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
+
+ return nautilus_file_info_get_mime_type (NAUTILUS_FILE_INFO (file));
}
/**
@@ -7869,12 +7809,7 @@ nautilus_file_is_mime_type (NautilusFile *file,
g_return_val_if_fail (NAUTILUS_IS_FILE (file), FALSE);
g_return_val_if_fail (mime_type != NULL, FALSE);
- if (file->details->mime_type == NULL)
- {
- return FALSE;
- }
- return g_content_type_is_a (eel_ref_str_peek (file->details->mime_type),
- mime_type);
+ return nautilus_file_info_is_mime_type (NAUTILUS_FILE_INFO (file), mime_type);
}
char *
@@ -7930,11 +7865,9 @@ nautilus_file_is_symbolic_link (NautilusFile *file)
GMount *
nautilus_file_get_mount (NautilusFile *file)
{
- if (file->details->mount)
- {
- return g_object_ref (file->details->mount);
- }
- return NULL;
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
+
+ return nautilus_file_info_get_mount (NAUTILUS_FILE_INFO (file));
}
static void
@@ -8204,7 +8137,9 @@ nautilus_file_is_regular_file (NautilusFile *file)
gboolean
nautilus_file_is_directory (NautilusFile *file)
{
- return nautilus_file_get_file_type (file) == G_FILE_TYPE_DIRECTORY;
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), FALSE);
+
+ return nautilus_file_info_is_directory (NAUTILUS_FILE_INFO (file));
}
/**
@@ -8614,7 +8549,7 @@ nautilus_file_is_gone (NautilusFile *file)
{
g_return_val_if_fail (NAUTILUS_IS_FILE (file), FALSE);
- return file->details->is_gone;
+ return nautilus_file_info_is_gone (NAUTILUS_FILE_INFO (file));
}
/**
@@ -9521,66 +9456,6 @@ nautilus_file_class_init (NautilusFileClass *class)
NULL);
}
-static void
-nautilus_file_add_emblem (NautilusFile *file,
- const char *emblem_name)
-{
- if (file->details->pending_info_providers)
- {
- file->details->pending_extension_emblems = g_list_prepend (file->details->pending_extension_emblems,
- g_strdup (emblem_name));
- }
- else
- {
- file->details->extension_emblems = g_list_prepend (file->details->extension_emblems,
- g_strdup (emblem_name));
- }
-
- nautilus_file_changed (file);
-}
-
-static void
-nautilus_file_add_string_attribute (NautilusFile *file,
- const char *attribute_name,
- const char *value)
-{
- if (file->details->pending_info_providers)
- {
- /* Lazily create hashtable */
- if (!file->details->pending_extension_attributes)
- {
- file->details->pending_extension_attributes =
- g_hash_table_new_full (g_direct_hash, g_direct_equal,
- NULL,
- (GDestroyNotify) g_free);
- }
- g_hash_table_insert (file->details->pending_extension_attributes,
- GINT_TO_POINTER (g_quark_from_string (attribute_name)),
- g_strdup (value));
- }
- else
- {
- if (!file->details->extension_attributes)
- {
- file->details->extension_attributes =
- g_hash_table_new_full (g_direct_hash, g_direct_equal,
- NULL,
- (GDestroyNotify) g_free);
- }
- g_hash_table_insert (file->details->extension_attributes,
- GINT_TO_POINTER (g_quark_from_string (attribute_name)),
- g_strdup (value));
- }
-
- nautilus_file_changed (file);
-}
-
-static void
-nautilus_file_invalidate_extension_info (NautilusFile *file)
-{
- nautilus_file_invalidate_attributes (file, NAUTILUS_FILE_ATTRIBUTE_EXTENSION_INFO);
-}
-
void
nautilus_file_info_providers_done (NautilusFile *file)
{
@@ -9710,28 +9585,327 @@ nautilus_drag_can_accept_info (NautilusFile *drop_target_item,
}
}
+static gboolean
+is_gone (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ return file->details->is_gone;
+}
+
+static char *
+get_name (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ return g_strdup (eel_ref_str_peek (file->details->name));
+}
+
+static char *
+get_uri (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+ g_autoptr (GFile) location = NULL;
+
+ file = NAUTILUS_FILE (file_info);
+ location = nautilus_file_get_location (file);
+
+ return g_file_get_uri (location);
+}
+
+static char *
+get_parent_uri (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (nautilus_file_is_self_owned (file))
+ {
+ /* Callers expect an empty string, not a NULL. */
+ return g_strdup ("");
+ }
+
+ return nautilus_directory_get_uri (file->details->directory);
+}
+
+static char *
+get_uri_scheme (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+ g_autoptr (GFile) location = NULL;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (file->details->directory == NULL)
+ {
+ return NULL;
+ }
+
+ location = nautilus_directory_get_location (file->details->directory);
+ if (location == NULL)
+ {
+ return NULL;
+ }
+
+ return g_file_get_uri_scheme (location);
+}
+
+static char *
+get_mime_type (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (file->details->mime_type != NULL)
+ {
+ return g_strdup (eel_ref_str_peek (file->details->mime_type));
+ }
+
+ return g_strdup ("application/octet-stream");
+}
+
+static gboolean
+is_mime_type (NautilusFileInfo *file_info,
+ const char *mime_type)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (file->details->mime_type == NULL)
+ {
+ return FALSE;
+ }
+
+ return g_content_type_is_a (eel_ref_str_peek (file->details->mime_type), mime_type);
+}
+
+static gboolean
+is_directory (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ return nautilus_file_get_file_type (file) == G_FILE_TYPE_DIRECTORY;
+}
+
+static void
+add_emblem (NautilusFileInfo *file_info,
+ const char *emblem_name)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (file->details->pending_info_providers)
+ {
+ file->details->pending_extension_emblems = g_list_prepend (file->details->pending_extension_emblems,
+ g_strdup (emblem_name));
+ }
+ else
+ {
+ file->details->extension_emblems = g_list_prepend (file->details->extension_emblems,
+ g_strdup (emblem_name));
+ }
+
+ nautilus_file_changed (file);
+}
+
+static char *
+get_string_attribute (NautilusFileInfo *file_info,
+ const char *attribute_name)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ return nautilus_file_get_string_attribute_q (file, g_quark_from_string (attribute_name));
+}
+
+static void
+add_string_attribute (NautilusFileInfo *file_info,
+ const char *attribute_name,
+ const char *value)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (file->details->pending_info_providers != NULL)
+ {
+ /* Lazily create hashtable */
+ if (file->details->pending_extension_attributes == NULL)
+ {
+ file->details->pending_extension_attributes =
+ g_hash_table_new_full (g_direct_hash, g_direct_equal,
+ NULL,
+ (GDestroyNotify) g_free);
+ }
+ g_hash_table_insert (file->details->pending_extension_attributes,
+ GINT_TO_POINTER (g_quark_from_string (attribute_name)),
+ g_strdup (value));
+ }
+ else
+ {
+ if (file->details->extension_attributes == NULL)
+ {
+ file->details->extension_attributes =
+ g_hash_table_new_full (g_direct_hash, g_direct_equal,
+ NULL,
+ (GDestroyNotify) g_free);
+ }
+ g_hash_table_insert (file->details->extension_attributes,
+ GINT_TO_POINTER (g_quark_from_string (attribute_name)),
+ g_strdup (value));
+ }
+
+ nautilus_file_changed (file);
+}
+
+static void
+invalidate_extension_info (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ nautilus_file_invalidate_attributes (file, NAUTILUS_FILE_ATTRIBUTE_EXTENSION_INFO);
+}
+
+static char *
+get_activation_uri (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (file->details->activation_uri != NULL)
+ {
+ return g_strdup (file->details->activation_uri);
+ }
+
+ return nautilus_file_get_uri (file);
+}
+
+static GFileType
+get_file_type (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ return file->details->type;
+}
+
+static GFile *
+get_location (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+ g_autoptr (GFile) location = NULL;
+
+ file = NAUTILUS_FILE (file_info);
+ location = nautilus_directory_get_location (file->details->directory);
+
+ if (nautilus_file_is_self_owned (file))
+ {
+ return g_object_ref (location);
+ }
+
+ return g_file_get_child (location, eel_ref_str_peek (file->details->name));
+}
+
+static GFile *
+get_parent_location (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (nautilus_file_is_self_owned (file))
+ {
+ return NULL;
+ }
+
+ return nautilus_directory_get_location (file->details->directory);
+}
+
+static NautilusFileInfo *
+get_parent_info (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+ NautilusFile *parent_file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (nautilus_file_is_self_owned (file))
+ {
+ return NULL;
+ }
+
+ parent_file = nautilus_directory_get_corresponding_file (file->details->directory);
+
+ return NAUTILUS_FILE_INFO (parent_file);
+}
+
+static GMount *
+get_mount (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ if (file->details->mount)
+ {
+ return g_object_ref (file->details->mount);
+ }
+
+ return NULL;
+}
+
+static gboolean
+can_write (NautilusFileInfo *file_info)
+{
+ NautilusFile *file;
+
+ file = NAUTILUS_FILE (file_info);
+
+ return file->details->can_write;
+}
+
static void
-nautilus_file_info_iface_init (NautilusFileInfoIface *iface)
-{
- iface->is_gone = nautilus_file_is_gone;
- iface->get_name = nautilus_file_get_name;
- iface->get_file_type = nautilus_file_get_file_type;
- iface->get_location = nautilus_file_get_location;
- iface->get_uri = nautilus_file_get_uri;
- iface->get_parent_location = nautilus_file_get_parent_location;
- iface->get_parent_uri = nautilus_file_get_parent_uri;
- iface->get_parent_info = nautilus_file_get_parent;
- iface->get_mount = nautilus_file_get_mount;
- iface->get_uri_scheme = nautilus_file_get_uri_scheme;
- iface->get_activation_uri = nautilus_file_get_activation_uri;
- iface->get_mime_type = nautilus_file_get_mime_type;
- iface->is_mime_type = nautilus_file_is_mime_type;
- iface->is_directory = nautilus_file_is_directory;
- iface->can_write = nautilus_file_can_write;
- iface->add_emblem = nautilus_file_add_emblem;
- iface->get_string_attribute = nautilus_file_get_string_attribute;
- iface->add_string_attribute = nautilus_file_add_string_attribute;
- iface->invalidate_extension_info = nautilus_file_invalidate_extension_info;
+nautilus_file_info_iface_init (NautilusFileInfoInterface *iface)
+{
+ iface->is_gone = is_gone;
+
+ iface->get_name = get_name;
+ iface->get_uri = get_uri;
+ iface->get_parent_uri = get_parent_uri;
+ iface->get_uri_scheme = get_uri_scheme;
+
+ iface->get_mime_type = get_mime_type;
+ iface->is_mime_type = is_mime_type;
+ iface->is_directory = is_directory;
+
+ iface->add_emblem = add_emblem;
+ iface->get_string_attribute = get_string_attribute;
+ iface->add_string_attribute = add_string_attribute;
+ iface->invalidate_extension_info = invalidate_extension_info;
+
+ iface->get_activation_uri = get_activation_uri;
+
+ iface->get_file_type = get_file_type;
+ iface->get_location = get_location;
+ iface->get_parent_location = get_parent_location;
+ iface->get_parent_info = get_parent_info;
+ iface->get_mount = get_mount;
+ iface->can_write = can_write;
}
#if !defined (NAUTILUS_OMIT_SELF_CHECK)
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 7937bed31..ec86d7961 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -62,7 +62,7 @@
#include <eel/eel-string.h>
#include <eel/eel-vfs-extensions.h>
-#include <libnautilus-extension/nautilus-menu-provider.h>
+#include <nautilus-extension.h>
#include "nautilus-clipboard.h"
#include "nautilus-search-directory.h"
#include "nautilus-favorite-directory.h"
@@ -4814,12 +4814,14 @@ get_extension_background_menu_items (NautilusFilesView *view)
for (l = providers; l != NULL; l = l->next)
{
NautilusMenuProvider *provider;
+ NautilusFileInfo *file_info;
GList *file_items;
provider = NAUTILUS_MENU_PROVIDER (l->data);
+ file_info = NAUTILUS_FILE_INFO (priv->directory_as_file);
file_items = nautilus_menu_provider_get_background_items (provider,
GTK_WIDGET (window),
- priv->directory_as_file);
+ file_info);
items = g_list_concat (items, file_items);
}
diff --git a/src/nautilus-list-model.h b/src/nautilus-list-model.h
index f44be9957..9f00dd198 100644
--- a/src/nautilus-list-model.h
+++ b/src/nautilus-list-model.h
@@ -24,7 +24,7 @@
#include <gdk/gdk.h>
#include "nautilus-file.h"
#include "nautilus-directory.h"
-#include <libnautilus-extension/nautilus-column.h>
+#include <nautilus-extension.h>
#ifndef NAUTILUS_LIST_MODEL_H
#define NAUTILUS_LIST_MODEL_H
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index 6ad2a4260..8f226b6e2 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -44,7 +44,6 @@
#include <glib/gi18n.h>
#include <glib-object.h>
#include <libgd/gd.h>
-#include <libnautilus-extension/nautilus-column-provider.h>
#include "nautilus-column-chooser.h"
#include "nautilus-column-utilities.h"
#include "nautilus-dnd.h"
diff --git a/src/nautilus-preferences-window.c b/src/nautilus-preferences-window.c
index 36937f5f5..cbe817f08 100644
--- a/src/nautilus-preferences-window.c
+++ b/src/nautilus-preferences-window.c
@@ -34,6 +34,8 @@
#include <eel/eel-glib-extensions.h>
+#include <nautilus-extension.h>
+
#include "nautilus-column-chooser.h"
#include "nautilus-column-utilities.h"
#include "nautilus-global-preferences.h"
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index 9f6571054..14302204c 100644
--- a/src/nautilus-properties-window.c
+++ b/src/nautilus-properties-window.c
@@ -44,7 +44,7 @@
#include <eel/eel-string.h>
#include <eel/eel-vfs-extensions.h>
-#include <libnautilus-extension/nautilus-property-page-provider.h>
+#include <nautilus-extension.h>
#include "nautilus-file-attributes.h"
#include "nautilus-file-operations.h"
#include "nautilus-file-utilities.h"
diff --git a/src/nautilus-ui-utilities.h b/src/nautilus-ui-utilities.h
index ce949483f..dd8471c51 100644
--- a/src/nautilus-ui-utilities.h
+++ b/src/nautilus-ui-utilities.h
@@ -23,7 +23,6 @@
#define NAUTILUS_UI_UTILITIES_H
#include <gtk/gtk.h>
-#include <libnautilus-extension/nautilus-menu-item.h>
void nautilus_gmenu_add_item_in_submodel (GMenu *menu,
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index b8452e817..f3e42c47b 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -43,7 +43,7 @@
#include "nautilus-module.h"
#include "nautilus-monitor.h"
#include "nautilus-profile.h"
-#include <libnautilus-extension/nautilus-location-widget-provider.h>
+#include <nautilus-extension.h>
#include "nautilus-ui-utilities.h"
#include <eel/eel-vfs-extensions.h>