[nautilus-actions] Fix validity check of the items
- From: Pierre Wieser <pwieser src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus-actions] Fix validity check of the items
- Date: Fri, 19 Feb 2010 02:30:13 +0000 (UTC)
commit 6cbe811556d6c7e7583b63380c33ff5bb36c7647
Author: Pierre Wieser <pwieser trychlos org>
Date: Thu Feb 18 18:31:03 2010 +0100
Fix validity check of the items
ChangeLog | 12 +++++
src/api/na-object-api.h | 2 +
src/api/na-object.h | 2 +
src/core/na-data-factory.c | 7 +++
src/core/na-io-provider.c | 2 +-
src/core/na-object-action.c | 70 +++++++++++++++++++++---------
src/core/na-object-id.c | 44 +++++++++++++-------
src/core/na-object-menu.c | 60 ++++++++++++++++++--------
src/core/na-object-profile.c | 95 +++++++++++++++++++++++++++++++-----------
src/core/na-object.c | 27 +++++++++++-
10 files changed, 240 insertions(+), 81 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index b427c4d..38b01e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2009-02-18 Pierre Wieser <pwieser trychlos org>
+
+ * src/api/na-object-api.h:
+ * src/api/na-object.h:
+ * src/core/na-data-factory.c:
+ * src/core/na-io-provider.c:
+ * src/core/na-object-action.c:
+ * src/core/na-object-id.c:
+ * src/core/na-object-menu.c:
+ * src/core/na-object-profile.c:
+ * src/core/na-object.c: Fix validity check of the items.
+
2009-02-17 Pierre Wieser <pwieser trychlos org>
* po/POTFILES.in:
diff --git a/src/api/na-object-api.h b/src/api/na-object-api.h
index 2cd17d7..28c9dbf 100644
--- a/src/api/na-object-api.h
+++ b/src/api/na-object-api.h
@@ -73,6 +73,8 @@ G_BEGIN_DECLS
#define na_object_ref( obj ) na_object_object_ref( NA_OBJECT( obj ))
#define na_object_unref( obj ) na_object_object_unref( NA_OBJECT( obj ))
+#define na_object_debug_invalid( obj, reason ) na_object_object_debug_invalid( NA_OBJECT( obj ), ( const gchar * )( reason ))
+
/* NAObjectId
*/
#define na_object_get_id( obj ) (( gchar * ) na_idata_factory_get( NA_IDATA_FACTORY( obj ), NADF_DATA_ID ))
diff --git a/src/api/na-object.h b/src/api/na-object.h
index e52ab73..95b7d6c 100644
--- a/src/api/na-object.h
+++ b/src/api/na-object.h
@@ -150,6 +150,8 @@ void na_object_object_dump_tree ( GList *tree );
GList *na_object_object_get_hierarchy( const NAObject *object );
void na_object_free_hierarchy( GList *hierarchy );
+void na_object_object_debug_invalid( const NAObject *object, const gchar *reason );
+
G_END_DECLS
#endif /* __NAUTILUS_ACTIONS_API_NA_OBJECT_H__ */
diff --git a/src/core/na-data-factory.c b/src/core/na-data-factory.c
index 4521edd..6d0dd6e 100644
--- a/src/core/na-data-factory.c
+++ b/src/core/na-data-factory.c
@@ -372,10 +372,14 @@ v_are_equal( const NAIDataFactory *a, const NAIDataFactory *b )
gboolean
na_data_factory_is_valid( const NAIDataFactory *object )
{
+ static const gchar *thisfn = "na_data_factory_is_valid";
gboolean is_valid;
GList *list_values, *iv;
NadfDataValue *a_data;
+ g_debug( "%s: object=%p (%s)",
+ thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ));
+
g_return_val_if_fail( NA_IS_IDATA_FACTORY( object ), FALSE );
list_values = g_object_get_data( G_OBJECT( object ), NA_IDATA_FACTORY_PROP_DATA );
@@ -387,6 +391,9 @@ na_data_factory_is_valid( const NAIDataFactory *object )
if( a_data->iddef->mandatory ){
is_valid = na_data_element_is_valid( a_data->element );
+ if( !is_valid ){
+ g_debug( "%s: invalid element: %s", thisfn, a_data->iddef->name );
+ }
}
}
diff --git a/src/core/na-io-provider.c b/src/core/na-io-provider.c
index ccbd0f2..c25a93e 100644
--- a/src/core/na-io-provider.c
+++ b/src/core/na-io-provider.c
@@ -742,7 +742,7 @@ build_hierarchy( GList **tree, GSList *level_zero, gboolean list_if_empty )
if( g_slist_length( level_zero )){
for( ilevel = level_zero ; ilevel ; ilevel = ilevel->next ){
- g_debug( "%s: uuid=%s", thisfn, ( gchar * ) ilevel->data );
+ /*g_debug( "%s: uuid=%s", thisfn, ( gchar * ) ilevel->data );*/
it = g_list_find_custom( *tree, ilevel->data, ( GCompareFunc ) search_item );
if( it ){
hierarchy = g_list_append( hierarchy, it->data );
diff --git a/src/core/na-object-action.c b/src/core/na-object-action.c
index 107add8..b4a2fa6 100644
--- a/src/core/na-object-action.c
+++ b/src/core/na-object-action.c
@@ -66,6 +66,8 @@ static void instance_set_property( GObject *object, guint property_id, const
static void instance_dispose( GObject *object );
static void instance_finalize( GObject *object );
+static gboolean object_is_valid( const NAObject *object );
+
static void idata_factory_iface_init( NAIDataFactoryInterface *iface );
static guint idata_factory_get_version( const NAIDataFactory *instance );
static gchar *idata_factory_get_default( const NAIDataFactory *instance, const NadfIdType *iddef );
@@ -75,6 +77,7 @@ static gboolean idata_factory_is_valid( const NAIDataFactory *object );
static void idata_factory_read_done( NAIDataFactory *instance, const NAIIOFactory *reader, void *reader_data, GSList **messages );
static void idata_factory_write_done( NAIDataFactory *instance, const NAIIOFactory *writer, void *writer_data, GSList **messages );
+static gboolean object_object_is_valid( const NAObjectAction *action );
static gboolean is_valid_label( const NAObjectAction *action );
static gboolean is_valid_toolbar_label( const NAObjectAction *action );
@@ -147,7 +150,7 @@ class_init( NAObjectActionClass *klass )
naobject_class->dump = NULL;
naobject_class->copy = NULL;
naobject_class->are_equal = NULL;
- naobject_class->is_valid = NULL;
+ naobject_class->is_valid = object_is_valid;
klass->private = g_new0( NAObjectActionClassPrivate, 1 );
@@ -241,6 +244,14 @@ instance_finalize( GObject *object )
}
}
+static gboolean
+object_is_valid( const NAObject *object )
+{
+ g_return_val_if_fail( NA_IS_OBJECT_ACTION( object ), FALSE );
+
+ return( object_object_is_valid( NA_OBJECT_ACTION( object )));
+}
+
static void
idata_factory_iface_init( NAIDataFactoryInterface *iface )
{
@@ -296,29 +307,49 @@ idata_factory_are_equal( const NAIDataFactory *a, const NAIDataFactory *b )
}
static gboolean
-idata_factory_is_valid( const NAIDataFactory *action )
+idata_factory_is_valid( const NAIDataFactory *object )
+{
+ g_return_val_if_fail( NA_IS_OBJECT_ACTION( object ), FALSE );
+
+ return( object_object_is_valid( NA_OBJECT_ACTION( object )));
+}
+
+static void
+idata_factory_read_done( NAIDataFactory *instance, const NAIIOFactory *reader, void *reader_data, GSList **messages )
+{
+ g_debug( "na_object_action_idata_factory_read_done: instance=%p", ( void * ) instance );
+
+ na_object_dump( instance );
+}
+
+static void
+idata_factory_write_done( NAIDataFactory *instance, const NAIIOFactory *writer, void *writer_data, GSList **messages )
+{
+
+}
+
+static gboolean
+object_object_is_valid( const NAObjectAction *action )
{
gboolean is_valid;
GList *profiles, *ip;
gint valid_profiles;
- g_return_val_if_fail( NA_IS_OBJECT_ACTION( action ), FALSE );
-
is_valid = FALSE;
- if( !NA_OBJECT_ACTION( action )->private->dispose_has_run ){
+ if( !action->private->dispose_has_run ){
is_valid = TRUE;
if( is_valid ){
if( na_object_is_target_toolbar( action )){
- is_valid = is_valid_toolbar_label( NA_OBJECT_ACTION( action ));
+ is_valid = is_valid_toolbar_label( action );
}
}
if( is_valid ){
if( na_object_is_target_selection( action ) || na_object_is_target_background( action )){
- is_valid = is_valid_label( NA_OBJECT_ACTION( action ));
+ is_valid = is_valid_label( action );
}
}
@@ -331,26 +362,15 @@ idata_factory_is_valid( const NAIDataFactory *action )
}
}
is_valid = ( valid_profiles > 0 );
+ if( !is_valid ){
+ na_object_debug_invalid( action, "no valid profile" );
+ }
}
}
return( is_valid );
}
-static void
-idata_factory_read_done( NAIDataFactory *instance, const NAIIOFactory *reader, void *reader_data, GSList **messages )
-{
- g_debug( "na_object_action_idata_factory_read_done: instance=%p", ( void * ) instance );
-
- na_object_dump( instance );
-}
-
-static void
-idata_factory_write_done( NAIDataFactory *instance, const NAIIOFactory *writer, void *writer_data, GSList **messages )
-{
-
-}
-
static gboolean
is_valid_label( const NAObjectAction *action )
{
@@ -361,6 +381,10 @@ is_valid_label( const NAObjectAction *action )
is_valid = ( label && g_utf8_strlen( label, -1 ) > 0 );
g_free( label );
+ if( !is_valid ){
+ na_object_debug_invalid( action, "label" );
+ }
+
return( is_valid );
}
@@ -374,6 +398,10 @@ is_valid_toolbar_label( const NAObjectAction *action )
is_valid = ( label && g_utf8_strlen( label, -1 ) > 0 );
g_free( label );
+ if( !is_valid ){
+ na_object_debug_invalid( action, "toolbar-label" );
+ }
+
return( is_valid );
}
diff --git a/src/core/na-object-id.c b/src/core/na-object-id.c
index f12c176..daad211 100644
--- a/src/core/na-object-id.c
+++ b/src/core/na-object-id.c
@@ -46,21 +46,19 @@ struct NAObjectIdClassPrivate {
*/
struct NAObjectIdPrivate {
gboolean dispose_has_run;
-
- gchar *id;
};
-#define NA_OBJECT_PROP_ID "na-object-prop-id"
-
static NAObjectClass *st_parent_class = NULL;
-static GType register_type( void );
-static void class_init( NAObjectIdClass *klass );
-static void instance_init( GTypeInstance *instance, gpointer klass );
-static void instance_dispose( GObject *object );
-static void instance_finalize( GObject *object );
+static GType register_type( void );
+static void class_init( NAObjectIdClass *klass );
+static void instance_init( GTypeInstance *instance, gpointer klass );
+static void instance_dispose( GObject *object );
+static void instance_finalize( GObject *object );
-static gchar *v_new_id( const NAObjectId *object, const NAObjectId *new_parent );
+static gboolean object_is_valid( const NAObject *object );
+
+static gchar *v_new_id( const NAObjectId *object, const NAObjectId *new_parent );
GType
na_object_id_get_type( void )
@@ -118,9 +116,7 @@ class_init( NAObjectIdClass *klass )
naobject_class->dump = NULL;
naobject_class->copy = NULL;
naobject_class->are_equal = NULL;
- naobject_class->is_valid = NULL;
-
- klass->new_id = NULL;
+ naobject_class->is_valid = object_is_valid;
klass->private = g_new0( NAObjectIdClassPrivate, 1 );
}
@@ -173,8 +169,6 @@ instance_finalize( GObject *object )
self = NA_OBJECT_ID( object );
- g_free( self->private->id );
-
g_free( self->private );
/* chain call to parent class */
@@ -183,6 +177,26 @@ instance_finalize( GObject *object )
}
}
+/*
+ * a NAObjectId is valid if it has a non-null id
+ */
+static gboolean
+object_is_valid( const NAObject *object )
+{
+ gboolean is_valid;
+ gchar *id;
+
+ is_valid = TRUE;
+
+ if( is_valid ){
+ id = na_object_get_id( object );
+ is_valid = ( id != NULL && strlen( id ) > 0 );
+ g_free( id );
+ }
+
+ return( is_valid );
+}
+
/**
* na_object_id_sort_alpha_asc:
* @a: first #NAObjectId.
diff --git a/src/core/na-object-menu.c b/src/core/na-object-menu.c
index 7fb0637..7a57ca4 100644
--- a/src/core/na-object-menu.c
+++ b/src/core/na-object-menu.c
@@ -67,6 +67,8 @@ static void instance_set_property( GObject *object, guint property_id, const
static void instance_dispose( GObject *object );
static void instance_finalize( GObject *object );
+static gboolean object_is_valid( const NAObject *object );
+
static void idata_factory_iface_init( NAIDataFactoryInterface *iface );
static guint idata_factory_get_version( const NAIDataFactory *instance );
static gchar *idata_factory_get_default( const NAIDataFactory *instance, const NadfIdType *iddef );
@@ -76,6 +78,7 @@ static gboolean idata_factory_is_valid( const NAIDataFactory *object );
static void idata_factory_read_done( NAIDataFactory *instance, const NAIIOFactory *reader, void *reader_data, GSList **messages );
static void idata_factory_write_done( NAIDataFactory *instance, const NAIIOFactory *writer, void *writer_data, GSList **messages );
+static gboolean menu_is_valid( const NAObjectMenu *menu );
static gboolean is_valid_label( const NAObjectMenu *menu );
GType
@@ -147,7 +150,7 @@ class_init( NAObjectMenuClass *klass )
naobject_class->dump = NULL;
naobject_class->copy = NULL;
naobject_class->are_equal = NULL;
- naobject_class->is_valid = NULL;
+ naobject_class->is_valid = object_is_valid;
klass->private = g_new0( NAObjectMenuClassPrivate, 1 );
@@ -241,6 +244,14 @@ instance_finalize( GObject *object )
}
}
+static gboolean
+object_is_valid( const NAObject *object )
+{
+ g_return_val_if_fail( NA_IS_OBJECT_MENU( object ), FALSE );
+
+ return( menu_is_valid( NA_OBJECT_MENU( object )));
+}
+
static void
idata_factory_iface_init( NAIDataFactoryInterface *iface )
{
@@ -295,22 +306,40 @@ idata_factory_are_equal( const NAIDataFactory *a, const NAIDataFactory *b )
}
static gboolean
-idata_factory_is_valid( const NAIDataFactory *menu )
+idata_factory_is_valid( const NAIDataFactory *object )
+{
+ g_return_val_if_fail( NA_IS_OBJECT_MENU( object ), FALSE );
+
+ return( menu_is_valid( NA_OBJECT_MENU( object )));
+}
+
+static void
+idata_factory_read_done( NAIDataFactory *instance, const NAIIOFactory *reader, void *reader_data, GSList **messages )
+{
+
+}
+
+static void
+idata_factory_write_done( NAIDataFactory *instance, const NAIIOFactory *writer, void *writer_data, GSList **messages )
+{
+
+}
+
+static gboolean
+menu_is_valid( const NAObjectMenu *menu )
{
gboolean is_valid;
gint valid_subitems;
GList *subitems, *ip;
- g_return_val_if_fail( NA_IS_OBJECT_MENU( menu ), FALSE );
-
is_valid = FALSE;
- if( !NA_OBJECT_MENU( menu )->private->dispose_has_run ){
+ if( !menu->private->dispose_has_run ){
is_valid = TRUE;
if( is_valid ){
- is_valid = is_valid_label( NA_OBJECT_MENU( menu ));
+ is_valid = is_valid_label( menu );
}
if( is_valid ){
@@ -322,24 +351,15 @@ idata_factory_is_valid( const NAIDataFactory *menu )
}
}
is_valid = ( valid_subitems > 0 );
+ if( !is_valid ){
+ na_object_debug_invalid( menu, "no valid subitem" );
+ }
}
}
return( is_valid );
}
-static void
-idata_factory_read_done( NAIDataFactory *instance, const NAIIOFactory *reader, void *reader_data, GSList **messages )
-{
-
-}
-
-static void
-idata_factory_write_done( NAIDataFactory *instance, const NAIIOFactory *writer, void *writer_data, GSList **messages )
-{
-
-}
-
static gboolean
is_valid_label( const NAObjectMenu *menu )
{
@@ -350,6 +370,10 @@ is_valid_label( const NAObjectMenu *menu )
is_valid = ( label && g_utf8_strlen( label, -1 ) > 0 );
g_free( label );
+ if( !is_valid ){
+ na_object_debug_invalid( menu, "label" );
+ }
+
return( is_valid );
}
diff --git a/src/core/na-object-profile.c b/src/core/na-object-profile.c
index 90df5d6..019ea80 100644
--- a/src/core/na-object-profile.c
+++ b/src/core/na-object-profile.c
@@ -76,12 +76,16 @@ static void instance_set_property( GObject *object, guint property_id, const
static void instance_dispose( GObject *object );
static void instance_finalize( GObject *object );
+static gboolean object_is_valid( const NAObject *object );
+
static void idata_factory_iface_init( NAIDataFactoryInterface *iface );
static guint idata_factory_get_version( const NAIDataFactory *instance );
static gchar *idata_factory_get_default( const NAIDataFactory *instance, const NadfIdType *iddef );
static gboolean idata_factory_is_valid( const NAIDataFactory *object );
static void idata_factory_read_done( NAIDataFactory *instance, const NAIIOFactory *reader, void *reader_data, GSList **messages );
static void idata_factory_write_done( NAIDataFactory *instance, const NAIIOFactory *writer, void *writer_data, GSList **messages );
+
+static gboolean profile_is_valid( const NAObjectProfile *profile );
static gboolean is_valid_path_parameters( const NAObjectProfile *profile );
static gboolean is_valid_basenames( const NAObjectProfile *profile );
static gboolean is_valid_mimetypes( const NAObjectProfile *profile );
@@ -174,7 +178,7 @@ class_init( NAObjectProfileClass *klass )
naobject_class->dump = NULL;
naobject_class->copy = NULL;
naobject_class->are_equal = NULL;
- naobject_class->is_valid = NULL;
+ naobject_class->is_valid = object_is_valid;
naobjectid_class = NA_OBJECT_ID_CLASS( klass );
naobjectid_class->new_id = object_id_new_id;
@@ -273,6 +277,14 @@ instance_finalize( GObject *object )
}
}
+static gboolean
+object_is_valid( const NAObject *object )
+{
+ g_return_val_if_fail( NA_IS_OBJECT_PROFILE( object ), FALSE );
+
+ return( profile_is_valid( NA_OBJECT_PROFILE( object )));
+}
+
static void
idata_factory_iface_init( NAIDataFactoryInterface *iface )
{
@@ -319,34 +331,57 @@ idata_factory_get_default( const NAIDataFactory *instance, const NadfIdType *idd
}
static gboolean
-idata_factory_is_valid( const NAIDataFactory *profile )
+idata_factory_is_valid( const NAIDataFactory *object )
+{
+ static const gchar *thisfn = "na_object_profile_idata_factory_is_valid: object";
+
+ g_debug( "%s: object=%p (%s)",
+ thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ));
+
+ g_return_val_if_fail( NA_IS_OBJECT_PROFILE( object ), FALSE );
+
+ return( profile_is_valid( NA_OBJECT_PROFILE( object )));
+}
+
+static void
+idata_factory_read_done( NAIDataFactory *instance, const NAIIOFactory *reader, void *reader_data, GSList **messages )
+{
+
+}
+
+static void
+idata_factory_write_done( NAIDataFactory *instance, const NAIIOFactory *writer, void *writer_data, GSList **messages )
+{
+
+}
+
+static gboolean
+profile_is_valid( const NAObjectProfile *profile )
{
gboolean is_valid;
NAObjectItem *parent;
- g_return_val_if_fail( NA_IS_OBJECT_PROFILE( profile ), FALSE );
-
is_valid = FALSE;
- if( !NA_OBJECT_PROFILE( profile )->private->dispose_has_run ){
+ if( !profile->private->dispose_has_run ){
is_valid = TRUE;
parent = na_object_get_parent( profile );
if( is_valid && na_object_is_target_background( parent )){
is_valid =
- is_valid_path_parameters( NA_OBJECT_PROFILE( profile )) &&
- is_valid_folders( NA_OBJECT_PROFILE( profile ));
+ is_valid_path_parameters( profile ) &&
+ is_valid_folders( profile );
}
if( is_valid ){
if( na_object_is_target_selection( parent ) || na_object_is_target_toolbar( parent )){
is_valid =
- is_valid_path_parameters( NA_OBJECT_PROFILE( profile )) &&
- is_valid_basenames( NA_OBJECT_PROFILE( profile )) &&
- is_valid_mimetypes( NA_OBJECT_PROFILE( profile )) &&
- is_valid_isfiledir( NA_OBJECT_PROFILE( profile )) &&
- is_valid_schemes( NA_OBJECT_PROFILE( profile ));
+ is_valid_path_parameters( profile ) &&
+ is_valid_basenames( profile ) &&
+ is_valid_mimetypes( profile ) &&
+ is_valid_isfiledir( profile ) &&
+ is_valid_schemes( profile );
}
}
}
@@ -354,18 +389,6 @@ idata_factory_is_valid( const NAIDataFactory *profile )
return( is_valid );
}
-static void
-idata_factory_read_done( NAIDataFactory *instance, const NAIIOFactory *reader, void *reader_data, GSList **messages )
-{
-
-}
-
-static void
-idata_factory_write_done( NAIDataFactory *instance, const NAIIOFactory *writer, void *writer_data, GSList **messages )
-{
-
-}
-
static gboolean
is_valid_path_parameters( const NAObjectProfile *profile )
{
@@ -389,6 +412,10 @@ is_valid_path_parameters( const NAObjectProfile *profile )
g_free( parameters );
g_free( path );
+ if( !valid ){
+ na_object_debug_invalid( profile, "command" );
+ }
+
return( valid );
}
@@ -402,6 +429,10 @@ is_valid_basenames( const NAObjectProfile *profile )
valid = basenames && g_slist_length( basenames ) > 0;
na_core_utils_slist_free( basenames );
+ if( !valid ){
+ na_object_debug_invalid( profile, "basenames" );
+ }
+
return( valid );
}
@@ -415,6 +446,10 @@ is_valid_mimetypes( const NAObjectProfile *profile )
valid = mimetypes && g_slist_length( mimetypes ) > 0;
na_core_utils_slist_free( mimetypes );
+ if( !valid ){
+ na_object_debug_invalid( profile, "mimetypes" );
+ }
+
return( valid );
}
@@ -429,6 +464,10 @@ is_valid_isfiledir( const NAObjectProfile *profile )
valid = isfile || isdir;
+ if( !valid ){
+ na_object_debug_invalid( profile, "isfiledir" );
+ }
+
return( valid );
}
@@ -442,6 +481,10 @@ is_valid_schemes( const NAObjectProfile *profile )
valid = schemes && g_slist_length( schemes ) > 0;
na_core_utils_slist_free( schemes );
+ if( !valid ){
+ na_object_debug_invalid( profile, "schemes" );
+ }
+
return( valid );
}
@@ -455,6 +498,10 @@ is_valid_folders( const NAObjectProfile *profile )
valid = folders && g_slist_length( folders ) > 0;
na_core_utils_slist_free( folders );
+ if( !valid ){
+ na_object_debug_invalid( profile, "folders" );
+ }
+
return( valid );
}
diff --git a/src/core/na-object.c b/src/core/na-object.c
index 25390f5..911921f 100644
--- a/src/core/na-object.c
+++ b/src/core/na-object.c
@@ -295,17 +295,26 @@ iduplicable_are_equal_iter( GObjectClass *class, const NAObject *a, HierarchyIte
static gboolean
iduplicable_is_valid( const NAIDuplicable *object )
{
+ static const gchar *thisfn = "na_object_iduplicable_is_valid";
gboolean is_valid;
HierarchyIter *str;
+ g_debug( "%s: object=%p (%s)",
+ thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ));
+
+ g_return_val_if_fail( NA_IS_OBJECT( object ), FALSE );
+
is_valid = FALSE;
if( !NA_OBJECT( object )->private->dispose_has_run ){
if( NA_IS_IDATA_FACTORY( object )){
- na_data_factory_is_valid( NA_IDATA_FACTORY( object ));
+ is_valid = na_data_factory_is_valid( NA_IDATA_FACTORY( object ));
} else {
+ g_debug( "%s: object=%p (%s): iterating on class hierarchy",
+ thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ));
+
str = g_new0( HierarchyIter, 1 );
str->result = TRUE;
iter_on_class_hierarchy( NA_OBJECT( object ), ( HierarchyIterFunc ) &iduplicable_is_valid_iter, str );
@@ -356,7 +365,7 @@ object_dump( const NAObject *object )
* Internally set some properties which may be requested later. This
* two-steps check-request let us optimize some work in the UI.
*
- * na_object_editable_check_status( object )
+ * na_object_object_check_status( object )
* +- na_iduplicable_check_status( object )
* +- get_origin( object )
* +- modified_status = v_are_equal( origin, object ) -> interface are_equal()
@@ -737,3 +746,17 @@ na_object_free_hierarchy( GList *hierarchy )
{
g_list_free( hierarchy );
}
+
+/**
+ * na_object_object_debug_invalid:
+ * @object: the #NAObject-derived object which is invalid.
+ * @reason: the reason.
+ *
+ * Dump the object with the invalidity reason.
+ */
+void
+na_object_object_debug_invalid( const NAObject *object, const gchar *reason )
+{
+ g_debug( "na_object_object_debug_invalid: object is marked invalid for reason \"%s\"", reason );
+ na_object_dump_norec( object );
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]