[nautilus-actions] Move item properties to their own tab



commit 6760cbcbda2ae7ceaba0df83e79c974965ca9c26
Author: Pierre Wieser <pwieser trychlos org>
Date:   Mon Apr 12 06:11:02 2010 +0200

    Move item properties to their own tab

 ChangeLog                                |   12 +-
 NEWS                                     |   16 ++
 TODO                                     |    2 +-
 src/nact/Makefile.am                     |    2 +
 src/nact/nact-iaction-tab.c              |  202 +--------------
 src/nact/nact-iproperties-tab.c          |  417 ++++++++++++++++++++++++++++++
 src/nact/nact-iproperties-tab.h          |   73 ++++++
 src/nact/nact-main-tab.h                 |    3 +-
 src/nact/nact-main-window.c              |   23 ++
 src/nact/nautilus-actions-config-tool.ui |  377 +++++++++++++++------------
 10 files changed, 753 insertions(+), 374 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 39aa8c3..e8f3326 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -83,8 +83,16 @@
 
 2010-04-12 Pierre Wieser <pwieser trychlos org>
 
-	* src/plugin-menu/Makefile.am:
-	* src/plugin-tracker/Makefile.am: Fix incorrect log domains.
+	Move item properties to their own tab.
+
+	* src/nact/nact-iproperties-tab.c:
+	* src/nact/nact-iproperties-tab.h: New files.
+
+	* src/nact/Makefile.am:
+	* src/nact/nact-iaction-tab.c:
+	* src/nact/nact-main-tab.h:
+	* src/nact/nact-main-window.c:
+	* src/nact/nautilus-actions-config-tool.ui: Updated accordingly.
 
 2010-04-09 Pierre Wieser <pwieser trychlos org>
 
diff --git a/NEWS b/NEWS
index f2a256e..4803416 100644
--- a/NEWS
+++ b/NEWS
@@ -54,6 +54,22 @@ Version 2.30.2
 
 		es (Jorge González)
 		lt (Gintautas Miliauskas)
+=======
+[newdata branch]
+
+	Enhancements:
+
+		- Implement .desktop files as a new storage format, shareable with
+		  most common willing-to desktop environments (KDE, XFCE, etc.)
+
+		- Implement new properties, both in GConf and .desktop files:
+		  . a description of the item
+
+	UI modifications:
+
+		- Item properties have now their own 'Properties' tab
+		- 'Advanced conditions' tab is renamed as 'Schemes' tab
+>>>>>>> Move item properties to their own tab
 
 Version 2.30.1
 ==============
diff --git a/TODO b/TODO
index 6459bf5..f22c4ed 100644
--- a/TODO
+++ b/TODO
@@ -132,6 +132,6 @@
   not even in unstable library on the web
   http://library.gnome.org/devel/gconf/unstable/gconf-gconf.html#gconf-concat-dir-and-key
 
-- "x-nautilus-desktop:///" is rather a scheme than a folder
+- "x-nautilus-desktop:///" is rather a scheme than a folder => actually is an URI
 
 - enhancement.ui: add a 'why this item is invalid' 
diff --git a/src/nact/Makefile.am b/src/nact/Makefile.am
index 572f01e..7b94580 100644
--- a/src/nact/Makefile.am
+++ b/src/nact/Makefile.am
@@ -103,6 +103,8 @@ nautilus_actions_config_tool_SOURCES = \
 	nact-iconditions-tab.h								\
 	nact-iprefs.c										\
 	nact-iprefs.h										\
+	nact-iproperties-tab.c								\
+	nact-iproperties-tab.h								\
 	nact-main.c											\
 	nact-main-menubar.c									\
 	nact-main-menubar.h									\
diff --git a/src/nact/nact-iaction-tab.c b/src/nact/nact-iaction-tab.c
index 7109943..63c084b 100644
--- a/src/nact/nact-iaction-tab.c
+++ b/src/nact/nact-iaction-tab.c
@@ -81,7 +81,6 @@ static void          interface_base_finalize( NactIActionTabInterface *klass );
 
 static void          on_iactions_list_column_edited( NactIActionTab *instance, NAObject *object, gchar *text, gint column );
 static void          on_tab_updatable_selection_changed( NactIActionTab *instance, gint count_selected );
-static void          on_tab_updatable_provider_changed( NactIActionTab *instance, NAObjectItem *item );
 
 static void          on_target_selection_toggled( GtkToggleButton *button, NactIActionTab *instance );
 static void          on_target_location_toggled( GtkToggleButton *button, NactIActionTab *instance );
@@ -109,13 +108,6 @@ static gint          sort_stock_ids( gconstpointer a, gconstpointer b );
 static gchar        *strip_underscore( const gchar *text );
 static void          release_icon_combobox( NactIActionTab *instance );
 
-static GtkButton    *get_enabled_button( NactIActionTab *instance );
-static void          on_enabled_toggled( GtkToggleButton *button, NactIActionTab *instance );
-static void          on_readonly_toggled( GtkToggleButton *button, NactIActionTab *instance );
-static void          on_description_changed( GtkTextBuffer *buffer, NactIActionTab *instance );
-
-static void          display_provider_name( NactIActionTab *instance, NAObjectItem *item );
-
 GType
 nact_iaction_tab_get_type( void )
 {
@@ -232,9 +224,7 @@ nact_iaction_tab_runtime_init_toplevel( NactIActionTab *instance )
 {
 	static const gchar *thisfn = "nact_iaction_tab_runtime_init_toplevel";
 	GtkWidget *label_widget, *tooltip_widget, *icon_widget;
-	GtkButton *enabled_button;
 	GtkWidget *button;
-	GtkTextBuffer *buffer;
 
 	g_debug( "%s: instance=%p", thisfn, ( void * ) instance );
 	g_return_if_fail( NACT_IS_IACTION_TAB( instance ));
@@ -250,12 +240,6 @@ nact_iaction_tab_runtime_init_toplevel( NactIActionTab *instance )
 		base_window_signal_connect(
 				BASE_WINDOW( instance ),
 				G_OBJECT( instance ),
-				TAB_UPDATABLE_SIGNAL_PROVIDER_CHANGED,
-				G_CALLBACK( on_tab_updatable_provider_changed ));
-
-		base_window_signal_connect(
-				BASE_WINDOW( instance ),
-				G_OBJECT( instance ),
 				IACTIONS_LIST_SIGNAL_COLUMN_EDITED,
 				G_CALLBACK( on_iactions_list_column_edited ));
 
@@ -321,28 +305,6 @@ nact_iaction_tab_runtime_init_toplevel( NactIActionTab *instance )
 				G_OBJECT( button ),
 				"clicked",
 				G_CALLBACK( on_icon_browse ));
-
-		enabled_button = get_enabled_button( instance );
-		base_window_signal_connect(
-				BASE_WINDOW( instance ),
-				G_OBJECT( enabled_button ),
-				"toggled",
-				G_CALLBACK( on_enabled_toggled ));
-
-		button = base_window_get_widget( BASE_WINDOW( instance ), "ActionReadonlyButton" );
-		base_window_signal_connect(
-				BASE_WINDOW( instance ),
-				G_OBJECT( button ),
-				"toggled",
-				G_CALLBACK( on_readonly_toggled ));
-
-		label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionDescriptionText" );
-		buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW( label_widget ));
-		base_window_signal_connect(
-				BASE_WINDOW( instance ),
-				G_OBJECT( buffer ),
-				"changed",
-				G_CALLBACK( on_description_changed ));
 	}
 }
 
@@ -424,17 +386,11 @@ on_tab_updatable_selection_changed( NactIActionTab *instance, gint count_selecte
 	gboolean target_selection, target_location, target_toolbar;
 	gboolean enable_label;
 	gboolean same_label;
-	GtkWidget *label_widget, *tooltip_widget, *icon_widget, *title_widget;
+	GtkWidget *label_widget, *tooltip_widget, *icon_widget;
 	gchar *label, *tooltip, *icon;
 	GtkButton *icon_button;
-	GtkButton *enabled_button;
-	GtkToggleButton *readonly_button;
-	gboolean enabled_item;
 	GtkToggleButton *toggle;
 	gboolean editable;
-	GtkNotebook *notebook;
-	GtkWidget *page;
-	GtkTextBuffer *buffer;
 
 	g_debug( "%s: instance=%p, count_selected=%d", thisfn, ( void * ) instance, count_selected );
 	g_return_if_fail( BASE_IS_WINDOW( instance ));
@@ -527,66 +483,11 @@ on_tab_updatable_selection_changed( NactIActionTab *instance, gint count_selecte
 		gtk_widget_set_sensitive( GTK_WIDGET( icon_button ), item != NULL );
 		nact_gtk_utils_set_editable( GTK_OBJECT( icon_button ), editable );
 
-		if( enable_tab ){
-			notebook = GTK_NOTEBOOK( base_window_get_widget( BASE_WINDOW( instance ), "MainNotebook" ));
-			page = gtk_notebook_get_nth_page( notebook, TAB_ACTION );
-			title_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionPropertiesTitle" );
-			if( item && NA_IS_OBJECT_MENU( item )){
-				gtk_notebook_set_tab_label_text( notebook, page, _( "Menu" ));
-				gtk_label_set_markup( GTK_LABEL( title_widget ), _( "<b>Menu properties</b>" ));
-			} else {
-				gtk_notebook_set_tab_label_text( notebook, page, _( "Action" ));
-				gtk_label_set_markup( GTK_LABEL( title_widget ), _( "<b>Action properties</b>" ));
-			}
-		}
-
-		enabled_button = get_enabled_button( instance );
-		enabled_item = item ? na_object_is_enabled( NA_OBJECT_ITEM( item )) : FALSE;
-		gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( enabled_button ), enabled_item );
-		gtk_widget_set_sensitive( GTK_WIDGET( enabled_button ), item != NULL );
-		nact_gtk_utils_set_editable( GTK_OBJECT( enabled_button ), editable );
-
-		/* read-only toggle only indicates the intrinsic writability status of this item
-		 * _not_ the writability status of the provider
-		 */
-		readonly_button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionReadonlyButton" ));
-		gtk_toggle_button_set_active( readonly_button, item ? na_object_is_readonly( item ) : FALSE );
-		gtk_widget_set_sensitive( GTK_WIDGET( readonly_button ), item != NULL );
-		nact_gtk_utils_set_editable( GTK_OBJECT( readonly_button ), FALSE );
-
-		label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionDescriptionText" );
-		buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW( label_widget ));
-		label = item ? na_object_get_description( item ) : g_strdup( "" );
-		gtk_text_buffer_set_text( buffer, label, -1 );
-		g_free( label );
-		gtk_widget_set_sensitive( label_widget, item != NULL );
-
-		label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionItemID" );
-		label = item ? na_object_get_id( item ) : g_strdup( "" );
-		gtk_label_set_text( GTK_LABEL( label_widget ), label );
-		g_free( label );
-		gtk_widget_set_sensitive( label_widget, item != NULL );
-
-		display_provider_name( instance, item );
-
 		st_on_selection_change = FALSE;
 	}
 }
 
 static void
-on_tab_updatable_provider_changed( NactIActionTab *instance, NAObjectItem *item )
-{
-	static const gchar *thisfn = "nact_iaction_tab_on_tab_updatable_provider_changed";
-
-	g_debug( "%s: instance=%p, item=%p", thisfn, ( void * ) instance, ( void * ) item );
-
-	if( st_initialized && !st_finalized ){
-
-		display_provider_name( instance, item );
-	}
-}
-
-static void
 on_target_selection_toggled( GtkToggleButton *button, NactIActionTab *instance )
 {
 	static const gchar *thisfn = "nact_iaction_tab_on_target_selection_toggled";
@@ -1092,104 +993,3 @@ release_icon_combobox( NactIActionTab *instance )
 	model = gtk_combo_box_get_model( GTK_COMBO_BOX( combo ));
 	gtk_list_store_clear( GTK_LIST_STORE( model ));
 }
-
-static GtkButton *
-get_enabled_button( NactIActionTab *instance )
-{
-	return( GTK_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionEnabledButton" )));
-}
-
-static void
-on_enabled_toggled( GtkToggleButton *button, NactIActionTab *instance )
-{
-	static const gchar *thisfn = "nact_iaction_tab_on_enabled_toggled";
-	NAObjectItem *edited;
-	gboolean enabled;
-	gboolean editable;
-
-	if( !st_on_selection_change ){
-		g_debug( "%s: button=%p, instance=%p", thisfn, ( void * ) button, ( void * ) instance );
-
-		g_object_get(
-				G_OBJECT( instance ),
-				TAB_UPDATABLE_PROP_EDITED_ACTION, &edited,
-				TAB_UPDATABLE_PROP_EDITABLE, &editable,
-				NULL );
-
-		if( edited && NA_IS_OBJECT_ITEM( edited )){
-
-			enabled = gtk_toggle_button_get_active( button );
-
-			if( editable ){
-				na_object_set_enabled( edited, enabled );
-				g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, edited, FALSE );
-
-			} else {
-				g_signal_handlers_block_by_func(( gpointer ) button, on_enabled_toggled, instance );
-				gtk_toggle_button_set_active( button, !enabled );
-				g_signal_handlers_unblock_by_func(( gpointer ) button, on_enabled_toggled, instance );
-			}
-		}
-	}
-}
-
-static void
-on_readonly_toggled( GtkToggleButton *button, NactIActionTab *instance )
-{
-	static const gchar *thisfn = "nact_iaction_tab_on_readonly_toggled";
-	gboolean active;
-
-	if( !st_on_selection_change ){
-		g_debug( "%s: button=%p, instance=%p", thisfn, ( void * ) button, ( void * ) instance );
-
-		active = gtk_toggle_button_get_active( button );
-
-		g_signal_handlers_block_by_func(( gpointer ) button, on_readonly_toggled, instance );
-		gtk_toggle_button_set_active( button, !active );
-		g_signal_handlers_unblock_by_func(( gpointer ) button, on_readonly_toggled, instance );
-	}
-}
-
-static void
-on_description_changed( GtkTextBuffer *buffer, NactIActionTab *instance )
-{
-	NAObjectItem *edited;
-	GtkTextIter start, end;
-	gchar *text;
-
-	g_object_get(
-			G_OBJECT( instance ),
-			TAB_UPDATABLE_PROP_EDITED_ACTION, &edited,
-			NULL );
-
-	if( edited ){
-		gtk_text_buffer_get_start_iter( buffer, &start );
-		gtk_text_buffer_get_end_iter( buffer, &end );
-		text = gtk_text_buffer_get_text( buffer, &start, &end, TRUE );
-		na_object_set_description( edited, text );
-		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, edited, FALSE );
-	}
-}
-
-static void
-display_provider_name( NactIActionTab *instance, NAObjectItem *item )
-{
-	GtkWidget *label_widget;
-	gchar *label;
-	NAIOProvider *provider;
-
-	label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionItemProvider" );
-	label = NULL;
-	if( item ){
-		provider = na_object_get_provider( item );
-		if( provider ){
-			label = na_io_provider_get_name( provider );
-		}
-	}
-	if( !label ){
-		label = g_strdup( "" );
-	}
-	gtk_label_set_text( GTK_LABEL( label_widget ), label );
-	g_free( label );
-	gtk_widget_set_sensitive( label_widget, item != NULL );
-}
diff --git a/src/nact/nact-iproperties-tab.c b/src/nact/nact-iproperties-tab.c
new file mode 100644
index 0000000..7e382f1
--- /dev/null
+++ b/src/nact/nact-iproperties-tab.c
@@ -0,0 +1,417 @@
+/*
+ * Nautilus Actions
+ * A Nautilus extension which offers configurable context menu actions.
+ *
+ * Copyright (C) 2005 The GNOME Foundation
+ * Copyright (C) 2006, 2007, 2008 Frederic Ruaudel and others (see AUTHORS)
+ * Copyright (C) 2009, 2010 Pierre Wieser and others (see AUTHORS)
+ *
+ * This Program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This Program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this Library; see the file COPYING.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors:
+ *   Frederic Ruaudel <grumz grumz net>
+ *   Rodrigo Moya <rodrigo gnome-db org>
+ *   Pierre Wieser <pwieser trychlos org>
+ *   ... and many others (see AUTHORS)
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib/gi18n.h>
+
+#include <api/na-object-api.h>
+
+#include <core/na-io-provider.h>
+
+#include "nact-gtk-utils.h"
+#include "nact-iproperties-tab.h"
+#include "nact-main-tab.h"
+
+/* private interface data
+ */
+struct NactIPropertiesTabInterfacePrivate {
+	void *empty;						/* so that gcc -pedantic is happy */
+};
+
+static gboolean st_initialized = FALSE;
+static gboolean st_finalized   = FALSE;
+static gboolean st_on_selection_change = FALSE;
+
+static GType      register_type( void );
+static void       interface_base_init( NactIPropertiesTabInterface *klass );
+static void       interface_base_finalize( NactIPropertiesTabInterface *klass );
+
+static void       on_tab_updatable_selection_changed( NactIPropertiesTab *instance, gint count_selected );
+static void       on_tab_updatable_provider_changed( NactIPropertiesTab *instance, NAObjectItem *item );
+
+static GtkButton *get_enabled_button( NactIPropertiesTab *instance );
+static void       on_enabled_toggled( GtkToggleButton *button, NactIPropertiesTab *instance );
+static void       on_readonly_toggled( GtkToggleButton *button, NactIPropertiesTab *instance );
+static void       on_description_changed( GtkTextBuffer *buffer, NactIPropertiesTab *instance );
+
+static void       display_provider_name( NactIPropertiesTab *instance, NAObjectItem *item );
+
+GType
+nact_iproperties_tab_get_type( void )
+{
+	static GType iface_type = 0;
+
+	if( !iface_type ){
+		iface_type = register_type();
+	}
+
+	return( iface_type );
+}
+
+static GType
+register_type( void )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_register_type";
+	GType type;
+
+	static const GTypeInfo info = {
+		sizeof( NactIPropertiesTabInterface ),
+		( GBaseInitFunc ) interface_base_init,
+		( GBaseFinalizeFunc ) interface_base_finalize,
+		NULL,
+		NULL,
+		NULL,
+		0,
+		0,
+		NULL
+	};
+
+	g_debug( "%s", thisfn );
+
+	type = g_type_register_static( G_TYPE_INTERFACE, "NactIPropertiesTab", &info, 0 );
+
+	g_type_interface_add_prerequisite( type, BASE_WINDOW_TYPE );
+
+	return( type );
+}
+
+static void
+interface_base_init( NactIPropertiesTabInterface *klass )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_interface_base_init";
+
+	if( !st_initialized ){
+
+		g_debug( "%s: klass=%p", thisfn, ( void * ) klass );
+
+		klass->private = g_new0( NactIPropertiesTabInterfacePrivate, 1 );
+
+		st_initialized = TRUE;
+	}
+}
+
+static void
+interface_base_finalize( NactIPropertiesTabInterface *klass )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_interface_base_finalize";
+
+	if( st_initialized && !st_finalized ){
+
+		g_debug( "%s: klass=%p", thisfn, ( void * ) klass );
+
+		st_finalized = TRUE;
+
+		g_free( klass->private );
+	}
+}
+
+void
+nact_iproperties_tab_initial_load_toplevel( NactIPropertiesTab *instance )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_initial_load_toplevel";
+
+	g_debug( "%s: instance=%p", thisfn, ( void * ) instance );
+	g_return_if_fail( NACT_IS_IPROPERTIES_TAB( instance ));
+
+	if( st_initialized && !st_finalized ){
+	}
+}
+
+void
+nact_iproperties_tab_runtime_init_toplevel( NactIPropertiesTab *instance )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_runtime_init_toplevel";
+	GtkButton *enabled_button;
+	GtkWidget *button;
+	GtkWidget *label_widget;
+	GtkTextBuffer *buffer;
+
+	g_debug( "%s: instance=%p", thisfn, ( void * ) instance );
+	g_return_if_fail( NACT_IS_IPROPERTIES_TAB( instance ));
+
+	if( st_initialized && !st_finalized ){
+
+		base_window_signal_connect(
+				BASE_WINDOW( instance ),
+				G_OBJECT( instance ),
+				MAIN_WINDOW_SIGNAL_SELECTION_CHANGED,
+				G_CALLBACK( on_tab_updatable_selection_changed ));
+
+		base_window_signal_connect(
+				BASE_WINDOW( instance ),
+				G_OBJECT( instance ),
+				TAB_UPDATABLE_SIGNAL_PROVIDER_CHANGED,
+				G_CALLBACK( on_tab_updatable_provider_changed ));
+
+		enabled_button = get_enabled_button( instance );
+		base_window_signal_connect(
+				BASE_WINDOW( instance ),
+				G_OBJECT( enabled_button ),
+				"toggled",
+				G_CALLBACK( on_enabled_toggled ));
+
+		button = base_window_get_widget( BASE_WINDOW( instance ), "ActionReadonlyButton" );
+		base_window_signal_connect(
+				BASE_WINDOW( instance ),
+				G_OBJECT( button ),
+				"toggled",
+				G_CALLBACK( on_readonly_toggled ));
+
+		label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionDescriptionText" );
+		buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW( label_widget ));
+		base_window_signal_connect(
+				BASE_WINDOW( instance ),
+				G_OBJECT( buffer ),
+				"changed",
+				G_CALLBACK( on_description_changed ));
+	}
+}
+
+void
+nact_iproperties_tab_all_widgets_showed( NactIPropertiesTab *instance )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_all_widgets_showed";
+
+	g_debug( "%s: instance=%p", thisfn, ( void * ) instance );
+	g_return_if_fail( NACT_IS_IPROPERTIES_TAB( instance ));
+
+	if( st_initialized && !st_finalized ){
+	}
+}
+
+void
+nact_iproperties_tab_dispose( NactIPropertiesTab *instance )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_dispose";
+
+	g_debug( "%s: instance=%p", thisfn, ( void * ) instance );
+	g_return_if_fail( NACT_IS_IPROPERTIES_TAB( instance ));
+
+	if( st_initialized && !st_finalized ){
+	}
+}
+
+static void
+on_tab_updatable_selection_changed( NactIPropertiesTab *instance, gint count_selected )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_on_tab_updatable_selection_changed";
+	NAObjectItem *item;
+	gboolean editable;
+	gboolean enable_tab;
+	GtkNotebook *notebook;
+	GtkWidget *page;
+	GtkWidget *title_widget, *label_widget;
+	GtkButton *enabled_button;
+	gboolean enabled_item;
+	GtkToggleButton *readonly_button;
+	GtkTextBuffer *buffer;
+	gchar *label;
+
+	g_debug( "%s: instance=%p, count_selected=%d", thisfn, ( void * ) instance, count_selected );
+	g_return_if_fail( BASE_IS_WINDOW( instance ));
+	g_return_if_fail( NACT_IS_IPROPERTIES_TAB( instance ));
+
+	if( st_initialized && !st_finalized ){
+
+		st_on_selection_change = TRUE;
+
+		g_object_get(
+				G_OBJECT( instance ),
+				TAB_UPDATABLE_PROP_EDITED_ACTION, &item,
+				TAB_UPDATABLE_PROP_EDITABLE, &editable,
+				NULL );
+
+		g_return_if_fail( !item || NA_IS_OBJECT_ITEM( item ));
+
+		enable_tab = ( count_selected == 1 );
+		nact_main_tab_enable_page( NACT_MAIN_WINDOW( instance ), TAB_PROPERTIES, enable_tab );
+
+		if( enable_tab ){
+			notebook = GTK_NOTEBOOK( base_window_get_widget( BASE_WINDOW( instance ), "MainNotebook" ));
+			page = gtk_notebook_get_nth_page( notebook, TAB_ACTION );
+			title_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionPropertiesTitle" );
+			if( item && NA_IS_OBJECT_MENU( item )){
+				gtk_notebook_set_tab_label_text( notebook, page, _( "Menu" ));
+				gtk_label_set_markup( GTK_LABEL( title_widget ), _( "<b>Menu properties</b>" ));
+			} else {
+				gtk_notebook_set_tab_label_text( notebook, page, _( "Action" ));
+				gtk_label_set_markup( GTK_LABEL( title_widget ), _( "<b>Action properties</b>" ));
+			}
+		}
+
+		enabled_button = get_enabled_button( instance );
+		enabled_item = item ? na_object_is_enabled( NA_OBJECT_ITEM( item )) : FALSE;
+		gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( enabled_button ), enabled_item );
+		gtk_widget_set_sensitive( GTK_WIDGET( enabled_button ), item != NULL );
+		nact_gtk_utils_set_editable( GTK_OBJECT( enabled_button ), editable );
+
+		/* read-only toggle only indicates the intrinsic writability status of this item
+		 * _not_ the writability status of the provider
+		 */
+		readonly_button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionReadonlyButton" ));
+		gtk_toggle_button_set_active( readonly_button, item ? na_object_is_readonly( item ) : FALSE );
+		gtk_widget_set_sensitive( GTK_WIDGET( readonly_button ), item != NULL );
+		nact_gtk_utils_set_editable( GTK_OBJECT( readonly_button ), FALSE );
+
+		label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionDescriptionText" );
+		buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW( label_widget ));
+		label = item ? na_object_get_description( item ) : g_strdup( "" );
+		gtk_text_buffer_set_text( buffer, label, -1 );
+		g_free( label );
+		gtk_widget_set_sensitive( label_widget, item != NULL );
+
+		label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionItemID" );
+		label = item ? na_object_get_id( item ) : g_strdup( "" );
+		gtk_label_set_text( GTK_LABEL( label_widget ), label );
+		g_free( label );
+		gtk_widget_set_sensitive( label_widget, item != NULL );
+
+		display_provider_name( instance, item );
+
+		st_on_selection_change = FALSE;
+	}
+}
+
+static void
+on_tab_updatable_provider_changed( NactIPropertiesTab *instance, NAObjectItem *item )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_on_tab_updatable_provider_changed";
+
+	g_debug( "%s: instance=%p, item=%p", thisfn, ( void * ) instance, ( void * ) item );
+
+	if( st_initialized && !st_finalized ){
+
+		display_provider_name( instance, item );
+	}
+}
+
+static GtkButton *
+get_enabled_button( NactIPropertiesTab *instance )
+{
+	return( GTK_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionEnabledButton" )));
+}
+
+static void
+on_enabled_toggled( GtkToggleButton *button, NactIPropertiesTab *instance )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_on_enabled_toggled";
+	NAObjectItem *edited;
+	gboolean enabled;
+	gboolean editable;
+
+	if( !st_on_selection_change ){
+		g_debug( "%s: button=%p, instance=%p", thisfn, ( void * ) button, ( void * ) instance );
+
+		g_object_get(
+				G_OBJECT( instance ),
+				TAB_UPDATABLE_PROP_EDITED_ACTION, &edited,
+				TAB_UPDATABLE_PROP_EDITABLE, &editable,
+				NULL );
+
+		if( edited && NA_IS_OBJECT_ITEM( edited )){
+
+			enabled = gtk_toggle_button_get_active( button );
+
+			if( editable ){
+				na_object_set_enabled( edited, enabled );
+				g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, edited, FALSE );
+
+			} else {
+				g_signal_handlers_block_by_func(( gpointer ) button, on_enabled_toggled, instance );
+				gtk_toggle_button_set_active( button, !enabled );
+				g_signal_handlers_unblock_by_func(( gpointer ) button, on_enabled_toggled, instance );
+			}
+		}
+	}
+}
+
+static void
+on_readonly_toggled( GtkToggleButton *button, NactIPropertiesTab *instance )
+{
+	static const gchar *thisfn = "nact_iproperties_tab_on_readonly_toggled";
+	gboolean active;
+
+	if( !st_on_selection_change ){
+		g_debug( "%s: button=%p, instance=%p", thisfn, ( void * ) button, ( void * ) instance );
+
+		active = gtk_toggle_button_get_active( button );
+
+		g_signal_handlers_block_by_func(( gpointer ) button, on_readonly_toggled, instance );
+		gtk_toggle_button_set_active( button, !active );
+		g_signal_handlers_unblock_by_func(( gpointer ) button, on_readonly_toggled, instance );
+	}
+}
+
+static void
+on_description_changed( GtkTextBuffer *buffer, NactIPropertiesTab *instance )
+{
+	NAObjectItem *edited;
+	GtkTextIter start, end;
+	gchar *text;
+
+	g_object_get(
+			G_OBJECT( instance ),
+			TAB_UPDATABLE_PROP_EDITED_ACTION, &edited,
+			NULL );
+
+	if( edited ){
+		gtk_text_buffer_get_start_iter( buffer, &start );
+		gtk_text_buffer_get_end_iter( buffer, &end );
+		text = gtk_text_buffer_get_text( buffer, &start, &end, TRUE );
+		na_object_set_description( edited, text );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, edited, FALSE );
+	}
+}
+
+static void
+display_provider_name( NactIPropertiesTab *instance, NAObjectItem *item )
+{
+	GtkWidget *label_widget;
+	gchar *label;
+	NAIOProvider *provider;
+
+	label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionItemProvider" );
+	label = NULL;
+	if( item ){
+		provider = na_object_get_provider( item );
+		if( provider ){
+			label = na_io_provider_get_name( provider );
+		}
+	}
+	if( !label ){
+		label = g_strdup( "" );
+	}
+	gtk_label_set_text( GTK_LABEL( label_widget ), label );
+	g_free( label );
+	gtk_widget_set_sensitive( label_widget, item != NULL );
+}
diff --git a/src/nact/nact-iproperties-tab.h b/src/nact/nact-iproperties-tab.h
new file mode 100644
index 0000000..d19237a
--- /dev/null
+++ b/src/nact/nact-iproperties-tab.h
@@ -0,0 +1,73 @@
+/*
+ * Nautilus Actions
+ * A Nautilus extension which offers configurable context menu actions.
+ *
+ * Copyright (C) 2005 The GNOME Foundation
+ * Copyright (C) 2006, 2007, 2008 Frederic Ruaudel and others (see AUTHORS)
+ * Copyright (C) 2009, 2010 Pierre Wieser and others (see AUTHORS)
+ *
+ * This Program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This Program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this Library; see the file COPYING.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors:
+ *   Frederic Ruaudel <grumz grumz net>
+ *   Rodrigo Moya <rodrigo gnome-db org>
+ *   Pierre Wieser <pwieser trychlos org>
+ *   ... and many others (see AUTHORS)
+ */
+
+#ifndef __NACT_IPROPERTIES_TAB_H__
+#define __NACT_IPROPERTIES_TAB_H__
+
+/**
+ * SECTION: nact_iproperties_tab
+ * @short_description: #NactIPropertiesTab interface definition.
+ * @include: nact/nact-iproperties-tab.h
+ *
+ * This interface implements the "Properties" tab of the notebook.
+ *
+ * Entry fields are enabled, as soon as an edited item has been set a a
+ * property of the main window,
+ */
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define NACT_IPROPERTIES_TAB_TYPE						( nact_iproperties_tab_get_type())
+#define NACT_IPROPERTIES_TAB( object )					( G_TYPE_CHECK_INSTANCE_CAST( object, NACT_IPROPERTIES_TAB_TYPE, NactIPropertiesTab ))
+#define NACT_IS_IPROPERTIES_TAB( object )				( G_TYPE_CHECK_INSTANCE_TYPE( object, NACT_IPROPERTIES_TAB_TYPE ))
+#define NACT_IPROPERTIES_TAB_GET_INTERFACE( instance )	( G_TYPE_INSTANCE_GET_INTERFACE(( instance ), NACT_IPROPERTIES_TAB_TYPE, NactIPropertiesTabInterface ))
+
+typedef struct NactIPropertiesTab                 NactIPropertiesTab;
+
+typedef struct NactIPropertiesTabInterfacePrivate NactIPropertiesTabInterfacePrivate;
+
+typedef struct {
+	GTypeInterface                      parent;
+	NactIPropertiesTabInterfacePrivate *private;
+}
+	NactIPropertiesTabInterface;
+
+GType    nact_iproperties_tab_get_type( void );
+
+void     nact_iproperties_tab_initial_load_toplevel( NactIPropertiesTab *instance );
+void     nact_iproperties_tab_runtime_init_toplevel( NactIPropertiesTab *instance );
+void     nact_iproperties_tab_all_widgets_showed( NactIPropertiesTab *instance );
+void     nact_iproperties_tab_dispose( NactIPropertiesTab *instance );
+
+G_END_DECLS
+
+#endif /* __NACT_IPROPERTIES_TAB_H__ */
diff --git a/src/nact/nact-main-tab.h b/src/nact/nact-main-tab.h
index 54b85e6..674a1ae 100644
--- a/src/nact/nact-main-tab.h
+++ b/src/nact/nact-main-tab.h
@@ -63,7 +63,8 @@ enum {
 	TAB_COMMAND,
 	TAB_FOLDERS,
 	TAB_CONDITIONS,
-	TAB_ADVANCED
+	TAB_ADVANCED,
+	TAB_PROPERTIES
 };
 
 void     nact_main_tab_enable_page( NactMainWindow *window, gint page, gboolean enabled );
diff --git a/src/nact/nact-main-window.c b/src/nact/nact-main-window.c
index be909ee..90c0ade 100644
--- a/src/nact/nact-main-window.c
+++ b/src/nact/nact-main-window.c
@@ -52,6 +52,7 @@
 #include "nact-ifolders-tab.h"
 #include "nact-iconditions-tab.h"
 #include "nact-iadvanced-tab.h"
+#include "nact-iproperties-tab.h"
 #include "nact-main-tab.h"
 #include "nact-main-menubar.h"
 #include "nact-main-statusbar.h"
@@ -148,6 +149,7 @@ static void     icommand_tab_iface_init( NactICommandTabInterface *iface );
 static void     ifolders_tab_iface_init( NactIFoldersTabInterface *iface );
 static void     iconditions_tab_iface_init( NactIConditionsTabInterface *iface );
 static void     iadvanced_tab_iface_init( NactIAdvancedTabInterface *iface );
+static void     iproperties_tab_iface_init( NactIPropertiesTabInterface *iface );
 static void     iabout_iface_init( NAIAboutInterface *iface );
 static void     ipivot_consumer_iface_init( NAIPivotConsumerInterface *iface );
 static void     iprefs_base_iface_init( BaseIPrefsInterface *iface );
@@ -251,6 +253,12 @@ register_type( void )
 		NULL
 	};
 
+	static const GInterfaceInfo iproperties_tab_iface_info = {
+		( GInterfaceInitFunc ) iproperties_tab_iface_init,
+		NULL,
+		NULL
+	};
+
 	static const GInterfaceInfo iabout_iface_info = {
 		( GInterfaceInitFunc ) iabout_iface_init,
 		NULL,
@@ -285,6 +293,8 @@ register_type( void )
 
 	g_type_add_interface_static( type, NACT_IADVANCED_TAB_TYPE, &iadvanced_tab_iface_info );
 
+	g_type_add_interface_static( type, NACT_IPROPERTIES_TAB_TYPE, &iproperties_tab_iface_info );
+
 	g_type_add_interface_static( type, NA_IABOUT_TYPE, &iabout_iface_info );
 
 	g_type_add_interface_static( type, NA_IPIVOT_CONSUMER_TYPE, &ipivot_consumer_iface_info );
@@ -531,6 +541,14 @@ iadvanced_tab_iface_init( NactIAdvancedTabInterface *iface )
 }
 
 static void
+iproperties_tab_iface_init( NactIPropertiesTabInterface *iface )
+{
+	static const gchar *thisfn = "nact_main_window_iproperties_tab_iface_init";
+
+	g_debug( "%s: iface=%p", thisfn, ( void * ) iface );
+}
+
+static void
 iabout_iface_init( NAIAboutInterface *iface )
 {
 	static const gchar *thisfn = "nact_main_window_iabout_iface_init";
@@ -713,6 +731,7 @@ instance_dispose( GObject *window )
 		nact_ifolders_tab_dispose( NACT_IFOLDERS_TAB( window ));
 		nact_iconditions_tab_dispose( NACT_ICONDITIONS_TAB( window ));
 		nact_iadvanced_tab_dispose( NACT_IADVANCED_TAB( window ));
+		nact_iproperties_tab_dispose( NACT_IPROPERTIES_TAB( window ));
 		nact_main_menubar_dispose( self );
 
 		/* chain up to the parent class */
@@ -1036,6 +1055,7 @@ on_base_initial_load_toplevel( NactMainWindow *window, gpointer user_data )
 		nact_ifolders_tab_initial_load_toplevel( NACT_IFOLDERS_TAB( window ));
 		nact_iconditions_tab_initial_load_toplevel( NACT_ICONDITIONS_TAB( window ));
 		nact_iadvanced_tab_initial_load_toplevel( NACT_IADVANCED_TAB( window ));
+		nact_iproperties_tab_initial_load_toplevel( NACT_IPROPERTIES_TAB( window ));
 
 		nact_main_statusbar_initial_load_toplevel( window );
 	}
@@ -1073,6 +1093,7 @@ on_base_runtime_init_toplevel( NactMainWindow *window, gpointer user_data )
 		nact_ifolders_tab_runtime_init_toplevel( NACT_IFOLDERS_TAB( window ));
 		nact_iconditions_tab_runtime_init_toplevel( NACT_ICONDITIONS_TAB( window ));
 		nact_iadvanced_tab_runtime_init_toplevel( NACT_IADVANCED_TAB( window ));
+		nact_iproperties_tab_runtime_init_toplevel( NACT_IPROPERTIES_TAB( window ));
 		nact_main_menubar_runtime_init( window );
 
 		order_mode = na_iprefs_get_order_mode( NA_IPREFS( updater ));
@@ -1112,6 +1133,7 @@ on_base_all_widgets_showed( NactMainWindow *window, gpointer user_data )
 	g_return_if_fail( NACT_IS_IFOLDERS_TAB( window ));
 	g_return_if_fail( NACT_IS_ICONDITIONS_TAB( window ));
 	g_return_if_fail( NACT_IS_IADVANCED_TAB( window ));
+	g_return_if_fail( NACT_IS_IPROPERTIES_TAB( window ));
 
 	if( !window->private->dispose_has_run ){
 
@@ -1120,6 +1142,7 @@ on_base_all_widgets_showed( NactMainWindow *window, gpointer user_data )
 		nact_ifolders_tab_all_widgets_showed( NACT_IFOLDERS_TAB( window ));
 		nact_iconditions_tab_all_widgets_showed( NACT_ICONDITIONS_TAB( window ));
 		nact_iadvanced_tab_all_widgets_showed( NACT_IADVANCED_TAB( window ));
+		nact_iproperties_tab_all_widgets_showed( NACT_IPROPERTIES_TAB( window ));
 
 		nact_iactions_list_all_widgets_showed( NACT_IACTIONS_LIST( window ));
 		nact_sort_buttons_all_widgets_showed( window );
diff --git a/src/nact/nautilus-actions-config-tool.ui b/src/nact/nautilus-actions-config-tool.ui
index d109ad1..d9417ed 100644
--- a/src/nact/nautilus-actions-config-tool.ui
+++ b/src/nact/nautilus-actions-config-tool.ui
@@ -458,164 +458,7 @@ Menus are never displayed in the toolbar.</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkFrame" id="frame8">
-                            <property name="visible">True</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">in</property>
-                            <child>
-                              <object class="GtkAlignment" id="alignment8">
-                                <property name="visible">True</property>
-                                <property name="top_padding">6</property>
-                                <property name="bottom_padding">6</property>
-                                <property name="left_padding">12</property>
-                                <property name="right_padding">6</property>
-                                <child>
-                                  <object class="GtkTable" id="table4">
-                                    <property name="visible">True</property>
-                                    <property name="n_rows">4</property>
-                                    <property name="n_columns">2</property>
-                                    <property name="column_spacing">5</property>
-                                    <child>
-                                      <object class="GtkLabel" id="ActionItemID">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="yalign">1</property>
-                                        <property name="ypad">6</property>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="ActionIdLabel">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">1</property>
-                                        <property name="label" translatable="yes">Id. :</property>
-                                      </object>
-                                      <packing>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label19">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">1</property>
-                                        <property name="label" translatable="yes">I/O provider :</property>
-                                      </object>
-                                      <packing>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="ActionItemProvider">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="ActionDescriptionLabel">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">1</property>
-                                        <property name="yalign">0</property>
-                                        <property name="label" translatable="yes">_Description :</property>
-                                        <property name="use_underline">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="x_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkHBox" id="hbox10">
-                                        <property name="visible">True</property>
-                                        <property name="homogeneous">True</property>
-                                        <child>
-                                          <object class="GtkCheckButton" id="ActionEnabledButton">
-                                            <property name="label" translatable="yes">E_nabled</property>
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="use_underline">True</property>
-                                            <property name="draw_indicator">True</property>
-                                          </object>
-                                          <packing>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkCheckButton" id="ActionReadonlyButton">
-                                            <property name="label" translatable="yes">Read-only</property>
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="focus_on_click">False</property>
-                                            <property name="draw_indicator">True</property>
-                                          </object>
-                                          <packing>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkScrolledWindow" id="scrolledwindow3">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="hscrollbar_policy">automatic</property>
-                                        <property name="vscrollbar_policy">automatic</property>
-                                        <property name="shadow_type">in</property>
-                                        <child>
-                                          <object class="GtkTextView" id="ActionDescriptionText">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="tooltip_text" translatable="yes">This description may be used when presenting your menu or action in a web site.</property>
-                                          </object>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <placeholder/>
-                                    </child>
-                                  </object>
-                                </child>
-                              </object>
-                            </child>
-                            <child type="label">
-                              <object class="GtkLabel" id="ActionPropertiesTitle">
-                                <property name="visible">True</property>
-                                <property name="xpad">5</property>
-                                <property name="label" translatable="yes">&lt;b&gt;Action properties&lt;/b&gt;</property>
-                                <property name="use_markup">True</property>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="position">1</property>
-                          </packing>
+                          <placeholder/>
                         </child>
                       </object>
                     </child>
@@ -979,14 +822,14 @@ Defining several profiles lets you have several commands, each applying with a d
                       </packing>
                     </child>
                     <child type="tab">
-                      <object class="GtkLabel" id="label15">
+                      <object class="GtkLabel" id="label16">
                         <property name="visible">True</property>
                         <property name="tooltip_text" translatable="yes">This tab lets you precisely choose in which folders this profile will apply.</property>
                         <property name="label" translatable="yes">_Folders</property>
                         <property name="use_underline">True</property>
                       </object>
                       <packing>
-                        <property name="position">4</property>
+                        <property name="position">2</property>
                         <property name="tab_fill">False</property>
                       </packing>
                     </child>
@@ -1345,10 +1188,197 @@ Defining several profiles lets you have several commands, each applying with a d
                       </packing>
                     </child>
                     <child type="tab">
+                      <object class="GtkLabel" id="label15">
+                        <property name="visible">True</property>
+                        <property name="tooltip_text" translatable="yes">This advanced tab lets you precisely choose on which schemes the selection will apply.</property>
+                        <property name="label" translatable="yes">_Schemes</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="position">4</property>
+                        <property name="tab_fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox17">
+                        <property name="visible">True</property>
+                        <property name="border_width">6</property>
+                        <property name="orientation">vertical</property>
+                        <property name="spacing">10</property>
+                        <child>
+                          <object class="GtkFrame" id="frame8">
+                            <property name="visible">True</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment8">
+                                <property name="visible">True</property>
+                                <property name="top_padding">6</property>
+                                <property name="bottom_padding">6</property>
+                                <property name="left_padding">12</property>
+                                <property name="right_padding">6</property>
+                                <child>
+                                  <object class="GtkTable" id="table4">
+                                    <property name="visible">True</property>
+                                    <property name="n_rows">5</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">5</property>
+                                    <child>
+                                      <object class="GtkLabel" id="ActionItemID">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">1</property>
+                                        <property name="ypad">6</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">3</property>
+                                        <property name="bottom_attach">4</property>
+                                        <property name="y_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="ActionIdLabel">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">1</property>
+                                        <property name="label" translatable="yes">Id. :</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">3</property>
+                                        <property name="bottom_attach">4</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label19">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">1</property>
+                                        <property name="label" translatable="yes">I/O provider :</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">4</property>
+                                        <property name="bottom_attach">5</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="ActionItemProvider">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">4</property>
+                                        <property name="bottom_attach">5</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="ActionDescriptionLabel">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">1</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">_Description :</property>
+                                        <property name="use_underline">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkScrolledWindow" id="scrolledwindow3">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="hscrollbar_policy">automatic</property>
+                                        <property name="vscrollbar_policy">automatic</property>
+                                        <property name="shadow_type">in</property>
+                                        <child>
+                                          <object class="GtkTextView" id="ActionDescriptionText">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="ActionEnabledButton">
+                                        <property name="label" translatable="yes">E_nabled</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="draw_indicator">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="ActionReadonlyButton">
+                                        <property name="label" translatable="yes">Read-only</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="focus_on_click">False</property>
+                                        <property name="draw_indicator">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">2</property>
+                                        <property name="bottom_attach">3</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="ActionPropertiesTitle">
+                                <property name="visible">True</property>
+                                <property name="xpad">5</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Action properties&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">5</property>
+                      </packing>
+                    </child>
+                    <child type="tab">
                       <object class="GtkLabel" id="label50">
                         <property name="visible">True</property>
                         <property name="tooltip_text" translatable="yes">This advanced tab lets you precisely choose on which schemes the selection will apply.</property>
-                        <property name="label" translatable="yes">A_dvanced conditions</property>
+                        <property name="label" translatable="yes">_Properties</property>
                         <property name="use_underline">True</property>
                       </object>
                       <packing>
@@ -1453,6 +1483,15 @@ Defining several profiles lets you have several commands, each applying with a d
       <placeholder/>
     </child>
     <child>
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
       <object class="GtkLabel" id="label3">
         <property name="visible">True</property>
         <property name="label" translatable="yes">This assistant will guide you through the process of importing items, actions or menus.</property>
@@ -1469,9 +1508,9 @@ Defining several profiles lets you have several commands, each applying with a d
           <object class="GtkFileChooserWidget" id="ImportFileChooser">
             <property name="visible">True</property>
             <property name="preview_widget_active">False</property>
+            <property name="select_multiple">True</property>
             <property name="local_only">False</property>
             <property name="use_preview_label">False</property>
-            <property name="select_multiple">True</property>
           </object>
           <packing>
             <property name="position">0</property>
@@ -2265,24 +2304,24 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
   </object>
   <object class="GtkSizeGroup" id="CommandLabelSizeGroup">
     <widgets>
-      <widget name="ProfileLabelLabel"/>
-      <widget name="CommandPathLabel"/>
       <widget name="CommandParametersLabel"/>
+      <widget name="CommandPathLabel"/>
+      <widget name="ProfileLabelLabel"/>
     </widgets>
   </object>
   <object class="GtkSizeGroup" id="CommandButtonSizeGroup">
     <widgets>
-      <widget name="CommandPathButton"/>
       <widget name="CommandLegendButton"/>
+      <widget name="CommandPathButton"/>
     </widgets>
   </object>
   <object class="GtkSizeGroup" id="ActionLabelSizeGroup">
     <widgets>
-      <widget name="ActionToolbarLabelLabel"/>
-      <widget name="ActionMenuLabelLabel"/>
-      <widget name="ActionIdLabel"/>
-      <widget name="ActionTooltipLabel"/>
       <widget name="ActionIconLabel"/>
+      <widget name="ActionTooltipLabel"/>
+      <widget name="ActionIdLabel"/>
+      <widget name="ActionMenuLabelLabel"/>
+      <widget name="ActionToolbarLabelLabel"/>
     </widgets>
   </object>
 </interface>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]