[nautilus-actions] Refactoring: update src/plugin-menu/
- From: Pierre Wieser <pwieser src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus-actions] Refactoring: update src/plugin-menu/
- Date: Fri, 19 Feb 2010 02:25:48 +0000 (UTC)
commit 4e7534f6b7167fb374041f263dddf93c3d3a1d98
Author: Pierre Wieser <pwieser trychlos org>
Date: Mon Feb 15 20:01:43 2010 +0100
Refactoring: update src/plugin-menu/
ChangeLog | 2 +
src/plugin-menu/Makefile.am | 12 +-
src/plugin-menu/nautilus-actions.c | 282 ++++++++++++++++++++----------------
src/plugin-menu/nautilus-actions.h | 8 +-
4 files changed, 170 insertions(+), 134 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 29db56a..6b5aeb2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2009-02-15 Pierre Wieser <pwieser trychlos org>
+ Update src/plugin-menu.
+
Define NAIImporter interface.
* src/api/na-iimporter.h:
diff --git a/src/plugin-menu/Makefile.am b/src/plugin-menu/Makefile.am
index 4c375bd..2390777 100644
--- a/src/plugin-menu/Makefile.am
+++ b/src/plugin-menu/Makefile.am
@@ -28,7 +28,6 @@
AM_CPPFLAGS += \
-I $(top_srcdir) \
- -I $(top_srcdir)/nautilus-actions \
-DG_LOG_DOMAIN=\"${NA_LOGDOMAIN_PLUGIN}\" \
$(NAUTILUS_ACTIONS_CFLAGS) \
$(NULL)
@@ -43,10 +42,13 @@ libnautilus_actions_la_SOURCES = \
nautilus-actions.h \
$(NULL)
-libnautilus_actions_la_LDFLAGS = -module -avoid-version
-
libnautilus_actions_la_LIBADD = \
- -L$(top_builddir)/nautilus-actions/private -lna-private \
- -L$(top_builddir)/nautilus-actions/runtime -lna-runtime \
+ $(top_builddir)/src/core/libna-core.la \
$(NAUTILUS_ACTIONS_LIBS) \
$(NULL)
+
+libnautilus_actions_la_LDFLAGS = \
+ -module \
+ -no-undefined \
+ -avoid-version \
+ $(NULL)
diff --git a/src/plugin-menu/nautilus-actions.c b/src/plugin-menu/nautilus-actions.c
index 2293157..cc5e29b 100644
--- a/src/plugin-menu/nautilus-actions.c
+++ b/src/plugin-menu/nautilus-actions.c
@@ -34,16 +34,18 @@
#include <string.h>
+#include <glib/gi18n.h>
+
#include <libnautilus-extension/nautilus-extension-types.h>
#include <libnautilus-extension/nautilus-file-info.h>
#include <libnautilus-extension/nautilus-menu-provider.h>
#include <api/na-object-api.h>
-#include <runtime/na-pivot.h>
-#include <runtime/na-iabout.h>
-#include <runtime/na-iprefs.h>
-#include <runtime/na-ipivot-consumer.h>
+#include <core/na-pivot.h>
+#include <core/na-iabout.h>
+#include <core/na-iprefs.h>
+#include <core/na-ipivot-consumer.h>
#include "nautilus-actions.h"
@@ -64,13 +66,22 @@ static GObjectClass *st_parent_class = NULL;
static GType st_actions_type = 0;
static void class_init( NautilusActionsClass *klass );
-static void menu_provider_iface_init( NautilusMenuProviderIface *iface );
-static void iabout_iface_init( NAIAboutInterface *iface );
-static void ipivot_consumer_iface_init( NAIPivotConsumerInterface *iface );
static void instance_init( GTypeInstance *instance, gpointer klass );
+static void instance_constructed( GObject *object );
static void instance_dispose( GObject *object );
static void instance_finalize( GObject *object );
+static void iabout_iface_init( NAIAboutInterface *iface );
+static gchar *iabout_get_application_name( NAIAbout *instance );
+
+static void ipivot_consumer_iface_init( NAIPivotConsumerInterface *iface );
+static void ipivot_consumer_items_changed( NAIPivotConsumer *instance, gpointer user_data );
+static void ipivot_consumer_create_root_menu_changed( NAIPivotConsumer *instance, gboolean enabled );
+static void ipivot_consumer_display_about_changed( NAIPivotConsumer *instance, gboolean enabled );
+static void ipivot_consumer_display_order_changed( NAIPivotConsumer *instance, gint order_mode );
+
+static void menu_provider_iface_init( NautilusMenuProviderIface *iface );
+
static GList *get_background_items( NautilusMenuProvider *provider, GtkWidget *window, NautilusFileInfo *current_folder );
static GList *get_file_items( NautilusMenuProvider *provider, GtkWidget *window, GList *files );
static GList *get_toolbar_items( NautilusMenuProvider *provider, GtkWidget *window, NautilusFileInfo *current_folder );
@@ -85,14 +96,8 @@ static void execute_action( NautilusMenuItem *item, NAObjectProfile
static GList *create_root_menu( NautilusActions *plugin, GList *nautilus_menu );
static GList *add_about_item( NautilusActions *plugin, GList *nautilus_menu );
-static gchar *iabout_get_application_name( NAIAbout *instance );
static void execute_about( NautilusMenuItem *item, NautilusActions *plugin );
-static void actions_changed_handler( NAIPivotConsumer *instance, gpointer user_data );
-static void create_root_menu_changed_handler( NAIPivotConsumer *instance, gboolean enabled );
-static void display_about_changed_handler( NAIPivotConsumer *instance, gboolean enabled );
-static void display_order_changed_handler( NAIPivotConsumer *instance, gint order_mode );
-
GType
nautilus_actions_get_type( void )
{
@@ -158,6 +163,7 @@ class_init( NautilusActionsClass *klass )
st_parent_class = g_type_class_peek_parent( klass );
gobject_class = G_OBJECT_CLASS( klass );
+ gobject_class->constructed = instance_constructed;
gobject_class->dispose = instance_dispose;
gobject_class->finalize = instance_finalize;
@@ -165,41 +171,6 @@ class_init( NautilusActionsClass *klass )
}
static void
-menu_provider_iface_init( NautilusMenuProviderIface *iface )
-{
- static const gchar *thisfn = "nautilus_actions_menu_provider_iface_init";
-
- g_debug( "%s: iface=%p", thisfn, ( void * ) iface );
-
- iface->get_file_items = get_file_items;
- iface->get_background_items = get_background_items;
- iface->get_toolbar_items = get_toolbar_items;
-}
-
-static void
-iabout_iface_init( NAIAboutInterface *iface )
-{
- static const gchar *thisfn = "nautilus_actions_iabout_iface_init";
-
- g_debug( "%s: iface=%p", thisfn, ( void * ) iface );
-
- iface->get_application_name = iabout_get_application_name;
-}
-
-static void
-ipivot_consumer_iface_init( NAIPivotConsumerInterface *iface )
-{
- static const gchar *thisfn = "nautilus_actions_ipivot_consumer_iface_init";
-
- g_debug( "%s: iface=%p", thisfn, ( void * ) iface );
-
- iface->on_actions_changed = actions_changed_handler;
- iface->on_create_root_menu_changed = create_root_menu_changed_handler;
- iface->on_display_about_changed = display_about_changed_handler;
- iface->on_display_order_changed = display_order_changed_handler;
-}
-
-static void
instance_init( GTypeInstance *instance, gpointer klass )
{
static const gchar *thisfn = "nautilus_actions_instance_init";
@@ -212,17 +183,39 @@ instance_init( GTypeInstance *instance, gpointer klass )
self = NAUTILUS_ACTIONS( instance );
self->private = g_new0( NautilusActionsPrivate, 1 );
+
self->private->dispose_has_run = FALSE;
/* initialize NAPivot and load actions through NAIIOProvider interface
* forwarding notification messages from NAPivot to NautilusActions
*/
self->private->pivot = na_pivot_new( !PIVOT_LOAD_DISABLED & !PIVOT_LOAD_INVALID );
+}
- na_pivot_register_consumer( self->private->pivot, NA_IPIVOT_CONSUMER( self ));
- na_pivot_set_automatic_reload( self->private->pivot, TRUE );
+static void
+instance_constructed( GObject *object )
+{
+ static const gchar *thisfn = "nautilus_actions_instance_constructed";
+ NautilusActions *self;
+
+ g_debug( "%s: object=%p", thisfn, ( void * ) object );
+
+ g_return_if_fail( NAUTILUS_IS_ACTIONS( object ));
+ g_return_if_fail( NA_IS_IPIVOT_CONSUMER( object ));
+
+ self = NAUTILUS_ACTIONS( object );
- na_pivot_load_items( self->private->pivot );
+ if( !self->private->dispose_has_run ){
+
+ na_pivot_register_consumer( self->private->pivot, NA_IPIVOT_CONSUMER( self ));
+ na_pivot_set_automatic_reload( self->private->pivot, TRUE );
+ na_pivot_load_items( self->private->pivot );
+
+ /* chain up to the parent class */
+ if( G_OBJECT_CLASS( st_parent_class )->constructed ){
+ G_OBJECT_CLASS( st_parent_class )->constructed( object );
+ }
+ }
}
static void
@@ -237,14 +230,14 @@ instance_dispose( GObject *object )
if( !self->private->dispose_has_run ){
+ self->private->dispose_has_run = TRUE;
+
g_object_unref( self->private->pivot );
/* chain up to the parent class */
if( G_OBJECT_CLASS( st_parent_class )->dispose ){
G_OBJECT_CLASS( st_parent_class )->dispose( object );
}
-
- self->private->dispose_has_run = TRUE;
}
}
@@ -283,6 +276,112 @@ static void nautilus_menu_provider_emit_items_updated_signal (NautilusMenuProvid
}
#endif
+static void
+iabout_iface_init( NAIAboutInterface *iface )
+{
+ static const gchar *thisfn = "nautilus_actions_iabout_iface_init";
+
+ g_debug( "%s: iface=%p", thisfn, ( void * ) iface );
+
+ iface->get_application_name = iabout_get_application_name;
+}
+
+static gchar *
+iabout_get_application_name( NAIAbout *instance )
+{
+ /* i18n: title of the About dialog box, when seen from Nautilus file manager */
+ return( g_strdup( _( "Nautilus Actions" )));
+}
+
+static void
+ipivot_consumer_iface_init( NAIPivotConsumerInterface *iface )
+{
+ static const gchar *thisfn = "nautilus_actions_ipivot_consumer_iface_init";
+
+ g_debug( "%s: iface=%p", thisfn, ( void * ) iface );
+
+ iface->on_items_changed = ipivot_consumer_items_changed;
+ iface->on_create_root_menu_changed = ipivot_consumer_create_root_menu_changed;
+ iface->on_display_about_changed = ipivot_consumer_display_about_changed;
+ iface->on_display_order_changed = ipivot_consumer_display_order_changed;
+}
+
+static void
+ipivot_consumer_items_changed( NAIPivotConsumer *instance, gpointer user_data )
+{
+ static const gchar *thisfn = "nautilus_actions_ipivot_consumer_items_changed";
+ NautilusActions *self;
+
+ g_debug( "%s: instance=%p, user_data=%p", thisfn, ( void * ) instance, ( void * ) user_data );
+ g_return_if_fail( NAUTILUS_IS_ACTIONS( instance ));
+ self = NAUTILUS_ACTIONS( instance );
+
+ if( !self->private->dispose_has_run ){
+
+ nautilus_menu_provider_emit_items_updated_signal( NAUTILUS_MENU_PROVIDER( self ));
+ }
+}
+
+static void
+ipivot_consumer_create_root_menu_changed( NAIPivotConsumer *instance, gboolean enabled )
+{
+ static const gchar *thisfn = "nautilus_actions_ipivot_consumer_create_root_menu_changed";
+ NautilusActions *self;
+
+ g_debug( "%s: instance=%p, enabled=%s", thisfn, ( void * ) instance, enabled ? "True":"False" );
+ g_return_if_fail( NAUTILUS_IS_ACTIONS( instance ));
+ self = NAUTILUS_ACTIONS( instance );
+
+ if( !self->private->dispose_has_run ){
+
+ nautilus_menu_provider_emit_items_updated_signal( NAUTILUS_MENU_PROVIDER( self ));
+ }
+}
+
+static void
+ipivot_consumer_display_about_changed( NAIPivotConsumer *instance, gboolean enabled )
+{
+ static const gchar *thisfn = "nautilus_actions_ipivot_consumer_display_about_changed";
+ NautilusActions *self;
+
+ g_debug( "%s: instance=%p, enabled=%s", thisfn, ( void * ) instance, enabled ? "True":"False" );
+ g_return_if_fail( NAUTILUS_IS_ACTIONS( instance ));
+ self = NAUTILUS_ACTIONS( instance );
+
+ if( !self->private->dispose_has_run ){
+
+ nautilus_menu_provider_emit_items_updated_signal( NAUTILUS_MENU_PROVIDER( self ));
+ }
+}
+
+static void
+ipivot_consumer_display_order_changed( NAIPivotConsumer *instance, gint order_mode )
+{
+ static const gchar *thisfn = "nautilus_actions_ipivot_consumer_display_order_changed";
+ NautilusActions *self;
+
+ g_debug( "%s: instance=%p, order_mode=%d", thisfn, ( void * ) instance, order_mode );
+ g_return_if_fail( NAUTILUS_IS_ACTIONS( instance ));
+ self = NAUTILUS_ACTIONS( instance );
+
+ if( !self->private->dispose_has_run ){
+
+ nautilus_menu_provider_emit_items_updated_signal( NAUTILUS_MENU_PROVIDER( self ));
+ }
+}
+
+static void
+menu_provider_iface_init( NautilusMenuProviderIface *iface )
+{
+ static const gchar *thisfn = "nautilus_actions_menu_provider_iface_init";
+
+ g_debug( "%s: iface=%p", thisfn, ( void * ) iface );
+
+ iface->get_file_items = get_file_items;
+ iface->get_background_items = get_background_items;
+ iface->get_toolbar_items = get_toolbar_items;
+}
+
/*
* this function is called when nautilus has to paint a folder background
* one of the first calls is with current_folder = 'x-nautilus-desktop:///'
@@ -361,12 +460,12 @@ get_file_items( NautilusMenuProvider *provider, GtkWidget *window, GList *files
self, pivot_tree, ITEM_TARGET_SELECTION, files );
/*g_debug( "%s: menus has %d level zero items", thisfn, g_list_length( nautilus_menus_list ));*/
- root_menu = na_iprefs_should_create_root_menu( NA_IPREFS( self->private->pivot ));
+ root_menu = na_iprefs_read_bool( NA_IPREFS( self->private->pivot ), IPREFS_CREATE_ROOT_MENU, FALSE );
if( root_menu ){
nautilus_menus_list = create_root_menu( self, nautilus_menus_list );
}
- add_about = na_iprefs_should_add_about_item( NA_IPREFS( self->private->pivot ));
+ add_about = na_iprefs_read_bool( NA_IPREFS( self->private->pivot ), IPREFS_ADD_ABOUT_ITEM, TRUE );
/*g_debug( "%s: add_about=%s", thisfn, add_about ? "True":"False" );*/
if( add_about ){
nautilus_menus_list = add_about_item( self, nautilus_menus_list );
@@ -441,7 +540,7 @@ build_nautilus_menus( NautilusActions *plugin, GList *tree, gint target, GList *
}
if( NA_IS_OBJECT_MENU( it->data )){
- subitems = na_object_get_items_list( it->data );
+ subitems = na_object_get_items( it->data );
submenu = build_nautilus_menus( plugin, subitems, target, files );
/*g_debug( "%s: submenu has %d items", thisfn, g_list_length( submenu ));*/
if( submenu ){
@@ -483,7 +582,7 @@ is_action_candidate( NautilusActions *plugin, NAObjectAction *action, gint targe
action_label = na_object_get_label( action );
- profiles = na_object_get_items_list( action );
+ profiles = na_object_get_items( action );
for( ip = profiles ; ip && !candidate ; ip = ip->next ){
NAObjectProfile *profile = NA_OBJECT_PROFILE( ip->data );
@@ -605,7 +704,7 @@ execute_action( NautilusMenuItem *item, NAObjectProfile *profile )
files = ( GList * ) g_object_get_data( G_OBJECT( item ), "nautilus-actions-files" );
target = GPOINTER_TO_INT( g_object_get_data( G_OBJECT( item ), "nautilus-actions-target" ));
- path = na_object_profile_get_path( profile );
+ path = na_object_get_path( profile );
cmd = g_string_new( path );
param = na_object_profile_parse_parameters( profile, target, files );
@@ -711,13 +810,6 @@ add_about_item( NautilusActions *plugin, GList *menu )
return( nautilus_menu );
}
-static gchar *
-iabout_get_application_name( NAIAbout *instance )
-{
- /* i18n: title of the About dialog box, when seen from Nautilus file manager */
- return( g_strdup( _( "Nautilus Actions" )));
-}
-
static void
execute_about( NautilusMenuItem *item, NautilusActions *plugin )
{
@@ -726,63 +818,3 @@ execute_about( NautilusMenuItem *item, NautilusActions *plugin )
na_iabout_display( NA_IABOUT( plugin ));
}
-
-static void
-actions_changed_handler( NAIPivotConsumer *instance, gpointer user_data )
-{
- static const gchar *thisfn = "nautilus_actions_actions_changed_handler";
- NautilusActions *self;
-
- g_debug( "%s: instance=%p, user_data=%p", thisfn, ( void * ) instance, ( void * ) user_data );
- g_return_if_fail( NAUTILUS_IS_ACTIONS( instance ));
- self = NAUTILUS_ACTIONS( instance );
-
- if( !self->private->dispose_has_run ){
- nautilus_menu_provider_emit_items_updated_signal( NAUTILUS_MENU_PROVIDER( self ));
- }
-}
-
-static void
-create_root_menu_changed_handler( NAIPivotConsumer *instance, gboolean enabled )
-{
- static const gchar *thisfn = "nautilus_actions_create_root_menu_changed_handler";
- NautilusActions *self;
-
- g_debug( "%s: instance=%p, enabled=%s", thisfn, ( void * ) instance, enabled ? "True":"False" );
- g_return_if_fail( NAUTILUS_IS_ACTIONS( instance ));
- self = NAUTILUS_ACTIONS( instance );
-
- if( !self->private->dispose_has_run ){
- nautilus_menu_provider_emit_items_updated_signal( NAUTILUS_MENU_PROVIDER( self ));
- }
-}
-
-static void
-display_about_changed_handler( NAIPivotConsumer *instance, gboolean enabled )
-{
- static const gchar *thisfn = "nautilus_actions_display_about_changed_handler";
- NautilusActions *self;
-
- g_debug( "%s: instance=%p, enabled=%s", thisfn, ( void * ) instance, enabled ? "True":"False" );
- g_return_if_fail( NAUTILUS_IS_ACTIONS( instance ));
- self = NAUTILUS_ACTIONS( instance );
-
- if( !self->private->dispose_has_run ){
- nautilus_menu_provider_emit_items_updated_signal( NAUTILUS_MENU_PROVIDER( self ));
- }
-}
-
-static void
-display_order_changed_handler( NAIPivotConsumer *instance, gint order_mode )
-{
- static const gchar *thisfn = "nautilus_actions_display_order_changed_handler";
- NautilusActions *self;
-
- g_debug( "%s: instance=%p, order_mode=%d", thisfn, ( void * ) instance, order_mode );
- g_return_if_fail( NAUTILUS_IS_ACTIONS( instance ));
- self = NAUTILUS_ACTIONS( instance );
-
- if( !self->private->dispose_has_run ){
- nautilus_menu_provider_emit_items_updated_signal( NAUTILUS_MENU_PROVIDER( self ));
- }
-}
diff --git a/src/plugin-menu/nautilus-actions.h b/src/plugin-menu/nautilus-actions.h
index 09bc6d3..04b495f 100644
--- a/src/plugin-menu/nautilus-actions.h
+++ b/src/plugin-menu/nautilus-actions.h
@@ -28,8 +28,8 @@
* ... and many others (see AUTHORS)
*/
-#ifndef __NAUTILUS_ACTIONS_H__
-#define __NAUTILUS_ACTIONS_H__
+#ifndef __PLUGIN_MENU_NAUTILUS_ACTIONS_H__
+#define __PLUGIN_MENU_NAUTILUS_ACTIONS_H__
/**
* SECTION: nautilus_actions
@@ -59,7 +59,7 @@ G_BEGIN_DECLS
#define NAUTILUS_IS_ACTIONS_CLASS( klass ) ( G_TYPE_CHECK_CLASS_TYPE(( klass ), NAUTILUS_ACTIONS_TYPE ))
#define NAUTILUS_ACTIONS_GET_CLASS( object ) ( G_TYPE_INSTANCE_GET_CLASS(( object ), NAUTILUS_ACTIONS_TYPE, NautilusActionsClass ))
-typedef struct NautilusActionsPrivate NautilusActionsPrivate;
+typedef struct NautilusActionsPrivate NautilusActionsPrivate;
typedef struct
{
@@ -82,4 +82,4 @@ void nautilus_actions_register_type( GTypeModule *module );
G_END_DECLS
-#endif /* __NAUTILUS_ACTIONS_H__ */
+#endif /* __PLUGIN_MENU_NAUTILUS_ACTIONS_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]