Commit cb134830 authored by Pierre Wieser's avatar Pierre Wieser

No more define loadable set at NAPivot allocation

parent d30f3f82
2009-02-21 Pierre Wieser <pwieser@trychlos.org>
* src/core/na-pivot.c:
* src/core/na-pivot.h:
* src/core/na-updater.c:
* src/core/na-updater.h:
* src/nact/nact-application.c:
* src/nact/nact-main-window.c:
* src/plugin-menu/nautilus-actions.c:
* src/test/test-reader.c:
* src/utils/nautilus-actions-new.c:
* src/utils/nautilus-actions-run.c:
No more define the loadable set at NAPivot construction time,
but deffer this when actually loading items.
2009-02-20 Pierre Wieser <pwieser@trychlos.org>
* po/POTFILES.in:
......
......@@ -160,3 +160,14 @@
depending of available formats provided by NAIExporter modules
- one should be able to import/export menus
- icon: is defined as localestring in desktop entry spec
but path is defined as string in this same spec
and icon may be a path -> so what to do with this ?
- NAIDataFactory -> NAIObjectFactory
NADataFactory -> NAObjectFactory
NADataElement -> NADataFactory
NadfIdType -> NADataDef
na-idata-factory-enum -> na-idata-factory-def + merge na-idata-factory-str
NADataDef: id is suppressed, use name instead
......@@ -52,44 +52,44 @@ struct NAPivotClassPrivate {
/* private instance data
*/
struct NAPivotPrivate {
gboolean dispose_has_run;
gboolean dispose_has_run;
NAPivotLoadableSet loadable_set;
guint loadable_set;
/* dynamically loaded modules (extension plugins)
*/
GList *modules;
GList *modules;
/* list of instances to be notified of configuration updates
* these are called 'consumers' of NAPivot
*/
GList *consumers;
GList *consumers;
/* configuration tree of actions and menus
*/
GList *tree;
GList *tree;
/* whether to automatically reload the whole configuration tree
* when a modification is detected in one of the underlying I/O
* storage subsystems
* defaults to FALSE
*/
gboolean automatic_reload;
GTimeVal last_event;
guint event_source_id;
gboolean automatic_reload;
GTimeVal last_event;
guint event_source_id;
/* list of monitoring objects on runtime preferences
*/
GList *monitors;
GList *monitors;
};
/* NAPivot properties
*/
enum {
NAPIVOT_PROP_LOADABLE_SET_ID = 1,
NAPIVOT_PROP_TREE_ID,
NAPIVOT_PROP_TREE_ID = 1,
};
static GObjectClass *st_parent_class = NULL;
static gint st_timeout_msec = 100;
static gint st_timeout_usec = 100000;
......@@ -184,21 +184,14 @@ class_init( NAPivotClass *klass )
object_class->dispose = instance_dispose;
object_class->finalize = instance_finalize;
klass->private = g_new0( NAPivotClassPrivate, 1 );
spec = g_param_spec_uint(
NAPIVOT_PROP_LOADABLE_SET,
"Loadable population set",
"Nature of population to be loaded", 0, UINT_MAX, 0,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE );
g_object_class_install_property( object_class, NAPIVOT_PROP_LOADABLE_SET_ID, spec );
spec = g_param_spec_pointer(
NAPIVOT_PROP_TREE,
"Items tree",
"Hierarchical tree of items",
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE );
g_object_class_install_property( object_class, NAPIVOT_PROP_TREE_ID, spec );
klass->private = g_new0( NAPivotClassPrivate, 1 );
}
static void
......@@ -215,7 +208,7 @@ instance_init( GTypeInstance *instance, gpointer klass )
self->private = g_new0( NAPivotPrivate, 1 );
self->private->dispose_has_run = FALSE;
self->private->loadable_set = 0;
self->private->loadable_set = PIVOT_LOAD_NONE;
self->private->modules = NULL;
self->private->consumers = NULL;
self->private->tree = NULL;
......@@ -263,10 +256,6 @@ instance_get_property( GObject *object, guint property_id, GValue *value, GParam
if( !self->private->dispose_has_run ){
switch( property_id ){
case NAPIVOT_PROP_LOADABLE_SET_ID:
g_value_set_uint( value, self->private->loadable_set );
break;
case NAPIVOT_PROP_TREE_ID:
g_value_set_pointer( value, self->private->tree );
break;
......@@ -289,10 +278,6 @@ instance_set_property( GObject *object, guint property_id, const GValue *value,
if( !self->private->dispose_has_run ){
switch( property_id ){
case NAPIVOT_PROP_LOADABLE_SET_ID:
self->private->loadable_set = g_value_get_uint( value );
break;
case NAPIVOT_PROP_TREE_ID:
self->private->tree = g_value_get_pointer( value );
break;
......@@ -373,21 +358,16 @@ iprefs_iface_init( NAIPrefsInterface *iface )
* na_pivot_new:
*
* Returns: a newly allocated #NAPivot object.
*
* The returned #NAPivot is initialized with the current list of
* #NAObjectItem-derived object.
*/
NAPivot *
na_pivot_new( NAPivotLoadableSet loadable )
na_pivot_new( void )
{
static const gchar *thisfn = "na_pivot_new";
NAPivot *pivot;
g_debug( "%s", thisfn );
pivot = g_object_new( NA_PIVOT_TYPE,
NAPIVOT_PROP_LOADABLE_SET, GUINT_TO_POINTER( loadable ),
NULL );
pivot = g_object_new( NA_PIVOT_TYPE, NULL );
return( pivot );
}
......@@ -551,11 +531,35 @@ na_pivot_get_items( const NAPivot *pivot )
/**
* na_pivot_load_items:
* @pivot: this #NAPivot instance.
* @loadable: the loadable set of items population.
*
* Loads the hierarchical list of items from I/O providers.
*/
void
na_pivot_load_items( NAPivot *pivot )
na_pivot_load_items( NAPivot *pivot, guint loadable )
{
static const gchar *thisfn = "na_pivot_load_items";
g_debug( "%s: pivot=%p", thisfn, ( void * ) pivot );
g_return_if_fail( NA_IS_PIVOT( pivot ));
if( !pivot->private->dispose_has_run ){
pivot->private->loadable_set = loadable;
na_pivot_reload_items( pivot );
}
}
/**
* na_pivot_reload_items:
* @pivot: this #NAPivot instance.
*
* Reloads the hierarchical list of items from I/O providers, using
* the same loadable set that the previous time.
*/
void
na_pivot_reload_items( NAPivot *pivot )
{
static const gchar *thisfn = "na_pivot_load_items";
GSList *messages, *im;
......@@ -637,7 +641,7 @@ on_item_changed_timeout( NAPivot *pivot )
}
if( pivot->private->automatic_reload ){
na_pivot_load_items( pivot );
na_pivot_reload_items( pivot );
}
for( ic = pivot->private->consumers ; ic ; ic = ic->next ){
......
......@@ -38,8 +38,12 @@
*
* A consuming program should allocate one new NAPivot object in its
* startup phase. The class takes care of declaring the I/O interfaces,
* while registering the known providers. The object will then load
* itself the existing list of actions.
* while registering the known providers.
* NAPivot *pivot = na_pivot_new();
*
* With this newly allocated #NAPivot object, the consuming program
* is then able to ask for loading the items.
* na_pivot_load_items( pivot, PIVOT_LOADABLE_SET );
*
* Notification system.
*
......@@ -104,24 +108,22 @@ typedef struct {
GType na_pivot_get_type( void );
/* properties
*/
#define NAPIVOT_PROP_TREE "na-pivot-prop-tree"
/* Loadable population
* NACT management user interface defaults to PIVOT_LOAD_ALL
* N-A plugin set the loadable population to !PIVOT_LOAD_DISABLED & !PIVOT_LOAD_INVALID
*/
typedef enum {
enum {
PIVOT_LOAD_NONE = 0,
PIVOT_LOAD_DISABLED = 1 << 0,
PIVOT_LOAD_INVALID = 1 << 1,
PIVOT_LOAD_ALL = 0xff
}
NAPivotLoadableSet;
/* properties
*/
#define NAPIVOT_PROP_LOADABLE_SET "na-pivot-prop-loadable-set"
#define NAPIVOT_PROP_TREE "na-pivot-prop-tree"
};
NAPivot *na_pivot_new( NAPivotLoadableSet loadable );
NAPivot *na_pivot_new( void );
void na_pivot_dump( const NAPivot *pivot );
/* providers management of any NAIxxxxProvider interface
......@@ -133,7 +135,8 @@ void na_pivot_free_providers( GList *providers );
*/
NAObjectItem *na_pivot_get_item( const NAPivot *pivot, const gchar *id );
GList *na_pivot_get_items( const NAPivot *pivot );
void na_pivot_load_items( NAPivot *pivot );
void na_pivot_load_items( NAPivot *pivot, guint loadable );
void na_pivot_reload_items( NAPivot *pivot );
void na_pivot_item_changed_handler( NAIIOProvider *provider, const gchar *id, NAPivot *pivot );
......
......@@ -173,16 +173,14 @@ instance_finalize( GObject *object )
* Returns: a newly allocated #NAUpdater object.
*/
NAUpdater *
na_updater_new( NAPivotLoadableSet loadable )
na_updater_new( void )
{
static const gchar *thisfn = "na_updater_new";
NAUpdater *updater;
g_debug( "%s", thisfn );
updater = g_object_new( NA_UPDATER_TYPE,
NAPIVOT_PROP_LOADABLE_SET, GUINT_TO_POINTER( loadable ),
NULL );
updater = g_object_new( NA_UPDATER_TYPE, NULL );
return( updater );
}
......
......@@ -69,7 +69,7 @@ typedef struct {
GType na_updater_get_type( void );
NAUpdater *na_updater_new( NAPivotLoadableSet loadable );
NAUpdater *na_updater_new( void );
/* update the tree in memory
*/
......
......@@ -392,8 +392,8 @@ appli_initialize_application( BaseApplication *application )
g_debug( "%s: application=%p", thisfn, ( void * ) application );
NACT_APPLICATION( application )->private->updater = na_updater_new( PIVOT_LOAD_ALL );
na_pivot_load_items( NA_PIVOT( NACT_APPLICATION( application )->private->updater ));
NACT_APPLICATION( application )->private->updater = na_updater_new();
na_pivot_load_items( NA_PIVOT( NACT_APPLICATION( application )->private->updater ), PIVOT_LOAD_ALL );
/* call parent class */
ok = BASE_APPLICATION_CLASS( st_parent_class )->initialize_application( application );
......
......@@ -1399,7 +1399,7 @@ reload( NactMainWindow *window )
application = NACT_APPLICATION( base_window_get_application( BASE_WINDOW( window )));
updater = nact_application_get_updater( application );
na_pivot_load_items( NA_PIVOT( updater ));
na_pivot_reload_items( NA_PIVOT( updater ));
nact_iactions_list_fill( NACT_IACTIONS_LIST( window ), na_pivot_get_items( NA_PIVOT( updater )));
nact_iactions_list_bis_select_first_row( NACT_IACTIONS_LIST( window ));
......
......@@ -185,11 +185,6 @@ instance_init( GTypeInstance *instance, gpointer klass )
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 );
}
static void
......@@ -207,9 +202,10 @@ instance_constructed( GObject *object )
if( !self->private->dispose_has_run ){
self->private->pivot = na_pivot_new();
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 );
na_pivot_load_items( self->private->pivot, !PIVOT_LOAD_DISABLED & !PIVOT_LOAD_INVALID );
/* chain up to the parent class */
if( G_OBJECT_CLASS( st_parent_class )->constructed ){
......
......@@ -38,7 +38,7 @@ main( int argc, char **argv )
{
g_type_init();
NAPivot *pivot = na_pivot_new( PIVOT_LOAD_NONE );
NAPivot *pivot = na_pivot_new();
GSList *msg = NULL;
gchar *uri = "file:///net/pierre/eclipse/nautilus-actions/exports/config_0af5a47e-96d9-441c-a3b8-d1185ced0351.schemas";
NAObjectItem *item = na_importer_import( pivot, uri, IMPORTER_MODE_ASK, NULL, NULL, &msg );
......
......@@ -376,7 +376,7 @@ write_to_gconf( NAObjectAction *action, GSList **msg )
NAUpdater *updater;
guint ret;
updater = na_updater_new( PIVOT_LOAD_NONE );
updater = na_updater_new();
ret = na_updater_write_item( updater, NA_OBJECT_ITEM( action ), msg );
......
......@@ -213,8 +213,8 @@ get_action( const gchar *id )
action = NULL;
pivot = na_pivot_new( !PIVOT_LOAD_DISABLED & !PIVOT_LOAD_INVALID );
na_pivot_load_items( pivot );
pivot = na_pivot_new();
na_pivot_load_items( pivot, !PIVOT_LOAD_DISABLED & !PIVOT_LOAD_INVALID );
action = ( NAObjectAction * ) na_pivot_get_item( pivot, id );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment