[nautilus-actions] Only display valid items in Nautilus context menu
- From: Pierre Wieser <pwieser src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [nautilus-actions] Only display valid items in Nautilus context menu
- Date: Wed, 14 Oct 2009 17:30:27 +0000 (UTC)
commit 08923c403c45ee556185f4643f669d11393313a7
Author: pierre <pierre vfedora10 virtuals pwi>
Date: Mon Oct 12 16:54:19 2009 +0200
Only display valid items in Nautilus context menu
ChangeLog | 26 +++++++++++++++++
src/common/na-object-api.h | 2 -
src/common/na-object-fn.h | 3 --
src/common/na-object.c | 63 -----------------------------------------
src/plugin/nautilus-actions.c | 5 ++-
src/runtime/na-iio-provider.c | 6 +++-
src/runtime/na-object-api.h | 2 +
src/runtime/na-object-fn.h | 2 +
src/runtime/na-object.c | 63 +++++++++++++++++++++++++++++++++++++++++
9 files changed, 101 insertions(+), 71 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index cc3b482..486bfc9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,34 @@
2009-10-12 Pierre Wieser <pwieser trychlos org>
+ * src/common/na-object-api.h
+ (na_object_check_edition_status, na_object_is_valid):
+ Moved to src/runtime/na-object-api.h.
+
+ * src/common/na-object-fn.h:
+ * src/common/na-object.c
+ (na_object_iduplicable_check_edition_status,
+ na_object_iduplicable_is_valid):
+ Moved to src/runtime/na-object-fn.h, src/runtime/na-object.c.
+
* src/nact/nact-tree-model.c (drop_inside):
Adjust the dest when moving items down.
+ * src/plugin/nautilus-actions.c (build_nautilus_menus):
+ Only display valid items.
+
+ * src/runtime/na-iio-provider.c (na_iio_provider_get_items_tree):
+ Check validity status at load time.
+
+ * src/runtime/na-object-api.h
+ (na_object_check_edition_status, na_object_is_valid):
+ Moved from src/common/na-object-api.h.
+
+ * src/runtime/na-object-fn.h:
+ * src/runtime/na-object.c
+ (na_object_iduplicable_check_edition_status,
+ na_object_iduplicable_is_valid):
+ Moved from src/common/na-object-fn.h, src/common/na-object.c.
+
* src/runtime/na-object-menu.c (object_is_valid):
A valid menu has at least one valid subitem.
diff --git a/src/common/na-object-api.h b/src/common/na-object-api.h
index fe4bf46..fb6eab0 100644
--- a/src/common/na-object-api.h
+++ b/src/common/na-object-api.h
@@ -58,8 +58,6 @@ G_BEGIN_DECLS
/* NAIDuplicable
*/
-#define na_object_check_edition_status( object ) na_object_iduplicable_check_edition_status( NA_OBJECT( object ))
-#define na_object_is_valid( object ) na_object_iduplicable_is_valid( NA_OBJECT( object ))
#define na_object_get_origin( object ) na_object_iduplicable_get_origin( NA_OBJECT( object ))
#define na_object_set_origin( object, origin ) na_object_iduplicable_set_origin( NA_OBJECT( object ), NA_OBJECT( origin ))
diff --git a/src/common/na-object-fn.h b/src/common/na-object-fn.h
index 6721ec2..32020ad 100644
--- a/src/common/na-object-fn.h
+++ b/src/common/na-object-fn.h
@@ -49,9 +49,6 @@ G_BEGIN_DECLS
/* NAIDuplicable
*/
-void na_object_iduplicable_check_edition_status( const NAObject *object );
-
-gboolean na_object_iduplicable_is_valid( const NAObject *object );
NAObject *na_object_iduplicable_get_origin( const NAObject *object );
void na_object_iduplicable_set_origin( NAObject *object, const NAObject *origin );
diff --git a/src/common/na-object.c b/src/common/na-object.c
index 74c86e6..1332011 100644
--- a/src/common/na-object.c
+++ b/src/common/na-object.c
@@ -42,69 +42,6 @@
static GList *v_get_childs( const NAObject *object );
/**
- * na_object_iduplicable_check_edition_status:
- * @object: the #NAObject object to be checked.
- *
- * Recursively checks for the edition status of @object and its childs
- * (if any).
- *
- * Internally set some properties which may be requested later. This
- * two-steps check-request let us optimize some work in the UI.
- *
- * na_object_check_edition_status( object )
- * +- na_iduplicable_check_edition_status( object )
- * +- get_origin( object )
- * +- modified_status = v_are_equal( origin, object ) -> interface are_equal()
- * +- valid_status = v_is_valid( object ) -> interface is_valid()
- *
- * Note that the recursivity is managed here, so that we can be sure
- * that edition status of childs is actually checked.
- */
-void
-na_object_iduplicable_check_edition_status( const NAObject *object )
-{
- GList *childs, *ic;
-
-#if NA_IDUPLICABLE_EDITION_STATUS_DEBUG
- g_debug( "na_object_iduplicable_check_edition_status: object=%p (%s)",
- ( void * ) object, G_OBJECT_TYPE_NAME( object ));
-#endif
- g_return_if_fail( NA_IS_OBJECT( object ));
-
- if( !object->private->dispose_has_run ){
-
- childs = v_get_childs( object );
- for( ic = childs ; ic ; ic = ic->next ){
- na_object_iduplicable_check_edition_status( NA_OBJECT( ic->data ));
- }
-
- na_iduplicable_check_edition_status( NA_IDUPLICABLE( object ));
- }
-}
-
-/**
- * na_object_iduplicable_is_valid:
- * @object: the #NAObject object whose validity is to be checked.
- *
- * Gets the validity status of @object.
- *
- * Returns: %TRUE is @object is valid, %FALSE else.
- */
-gboolean
-na_object_iduplicable_is_valid( const NAObject *object )
-{
- gboolean is_valid = FALSE;
-
- g_return_val_if_fail( NA_IS_OBJECT( object ), FALSE );
-
- if( !object->private->dispose_has_run ){
- is_valid = na_iduplicable_is_valid( NA_IDUPLICABLE( object ));
- }
-
- return( is_valid );
-}
-
-/**
* na_object_iduplicable_get_origin:
* @object: the #NAObject object whose status is requested.
*
diff --git a/src/plugin/nautilus-actions.c b/src/plugin/nautilus-actions.c
index 4a3a896..583bdb4 100644
--- a/src/plugin/nautilus-actions.c
+++ b/src/plugin/nautilus-actions.c
@@ -353,8 +353,9 @@ build_nautilus_menus( NautilusActions *plugin, GList *tree, GList *files )
g_return_val_if_fail( NA_IS_OBJECT_ITEM( it->data ), NULL );
- if( !na_object_is_enabled( it->data )){
- continue;
+ if( !na_object_is_enabled( it->data ) ||
+ !na_object_is_valid( it->data )){
+ continue;
}
label = na_object_get_label( it->data );
diff --git a/src/runtime/na-iio-provider.c b/src/runtime/na-iio-provider.c
index 1f1cbb5..9350eaf 100644
--- a/src/runtime/na-iio-provider.c
+++ b/src/runtime/na-iio-provider.c
@@ -156,7 +156,7 @@ na_iio_provider_get_items_tree( const NAPivot *pivot )
{
static const gchar *thisfn = "na_iio_provider_get_items_tree";
GList *providers;
- GList *merged, *hierarchy;
+ GList *merged, *hierarchy, *it;
GSList *level_zero;
gint order_mode;
@@ -209,6 +209,10 @@ na_iio_provider_get_items_tree( const NAPivot *pivot )
default:
break;
}
+
+ for( it = hierarchy ; it ; it = it->next ){
+ na_object_check_edition_status( it->data );
+ }
}
return( hierarchy );
diff --git a/src/runtime/na-object-api.h b/src/runtime/na-object-api.h
index 6944c09..d30e9ae 100644
--- a/src/runtime/na-object-api.h
+++ b/src/runtime/na-object-api.h
@@ -64,9 +64,11 @@ G_BEGIN_DECLS
/* NAIDuplicable
*/
+#define na_object_check_edition_status( object ) na_object_iduplicable_check_edition_status( NA_OBJECT( object ))
#define na_object_duplicate( object ) na_object_iduplicable_duplicate( NA_OBJECT( object ))
#define na_object_are_equal( a, b ) na_object_iduplicable_are_equal( NA_OBJECT( a ), NA_OBJECT( b ))
#define na_object_is_modified( object ) na_object_iduplicable_is_modified( NA_OBJECT( object ))
+#define na_object_is_valid( object ) na_object_iduplicable_is_valid( NA_OBJECT( object ))
/* NAObjectId
*/
diff --git a/src/runtime/na-object-fn.h b/src/runtime/na-object-fn.h
index 51341fc..a96160d 100644
--- a/src/runtime/na-object-fn.h
+++ b/src/runtime/na-object-fn.h
@@ -48,9 +48,11 @@ G_BEGIN_DECLS
/* NAIDuplicable
*/
+void na_object_iduplicable_check_edition_status( const NAObject *object );
NAObject *na_object_iduplicable_duplicate( const NAObject *object );
gboolean na_object_iduplicable_are_equal( const NAObject *a, const NAObject *b );
gboolean na_object_iduplicable_is_modified( const NAObject *object );
+gboolean na_object_iduplicable_is_valid( const NAObject *object );
/* NAObject
*/
diff --git a/src/runtime/na-object.c b/src/runtime/na-object.c
index 898795e..40195ff 100644
--- a/src/runtime/na-object.c
+++ b/src/runtime/na-object.c
@@ -231,6 +231,47 @@ instance_finalize( GObject *object )
}
/**
+ * na_object_iduplicable_check_edition_status:
+ * @object: the #NAObject object to be checked.
+ *
+ * Recursively checks for the edition status of @object and its childs
+ * (if any).
+ *
+ * Internally set some properties which may be requested later. This
+ * two-steps check-request let us optimize some work in the UI.
+ *
+ * na_object_check_edition_status( object )
+ * +- na_iduplicable_check_edition_status( object )
+ * +- get_origin( object )
+ * +- modified_status = v_are_equal( origin, object ) -> interface are_equal()
+ * +- valid_status = v_is_valid( object ) -> interface is_valid()
+ *
+ * Note that the recursivity is managed here, so that we can be sure
+ * that edition status of childs is actually checked.
+ */
+void
+na_object_iduplicable_check_edition_status( const NAObject *object )
+{
+ GList *childs, *ic;
+
+#if NA_IDUPLICABLE_EDITION_STATUS_DEBUG
+ g_debug( "na_object_iduplicable_check_edition_status: object=%p (%s)",
+ ( void * ) object, G_OBJECT_TYPE_NAME( object ));
+#endif
+ g_return_if_fail( NA_IS_OBJECT( object ));
+
+ if( !object->private->dispose_has_run ){
+
+ childs = v_get_childs( object );
+ for( ic = childs ; ic ; ic = ic->next ){
+ na_object_iduplicable_check_edition_status( NA_OBJECT( ic->data ));
+ }
+
+ na_iduplicable_check_edition_status( NA_IDUPLICABLE( object ));
+ }
+}
+
+/**
* na_object_iduplicable_duplicate:
* @object: the #NAObject object to be dumped.
*
@@ -338,6 +379,28 @@ na_object_iduplicable_is_modified( const NAObject *object )
}
/**
+ * na_object_iduplicable_is_valid:
+ * @object: the #NAObject object whose validity is to be checked.
+ *
+ * Gets the validity status of @object.
+ *
+ * Returns: %TRUE is @object is valid, %FALSE else.
+ */
+gboolean
+na_object_iduplicable_is_valid( const NAObject *object )
+{
+ gboolean is_valid = FALSE;
+
+ g_return_val_if_fail( NA_IS_OBJECT( object ), FALSE );
+
+ if( !object->private->dispose_has_run ){
+ is_valid = na_iduplicable_is_valid( NA_IDUPLICABLE( object ));
+ }
+
+ return( is_valid );
+}
+
+/**
* na_object_object_dump:
* @object: the #NAObject-derived object to be dumped.
*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]