[nautilus-actions] Reset all fields to an empty value when there is no selection



commit 9f99bdd7a2dabca2c74328462418c5e7220ab312
Author: Pierre Wieser <pwieser trychlos org>
Date:   Mon Jun 21 06:26:26 2010 +0200

    Reset all fields to an empty value when there is no selection

 ChangeLog                                |   15 +
 src/nact/nact-iaction-tab.c              |  207 ++++++------
 src/nact/nact-ibasenames-tab.c           |    1 -
 src/nact/nact-icommand-tab.c             |  128 ++++----
 src/nact/nact-ienvironment-tab.c         |  337 ++++++++++--------
 src/nact/nact-iexecution-tab.c           |  151 ++++----
 src/nact/nact-iproperties-tab.c          |  126 ++++----
 src/nact/nact-main-tab.h                 |    2 +-
 src/nact/nact-match-list.c               |  111 +++---
 src/nact/nautilus-actions-config-tool.ui |  576 +++++++++++++++---------------
 10 files changed, 846 insertions(+), 808 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 6519add..6600665 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2010-06-21 Pierre Wieser <pwieser trychlos org>
+
+	* src/nact/nact-iaction-tab.c:
+	* src/nact/nact-ibasenames-tab.c:
+	* src/nact/nact-icommand-tab.c:
+	* src/nact/nact-ienvironment-tab.c:
+	* src/nact/nact-iexecution-tab.c:
+	* src/nact/nact-iproperties-tab.c:
+	* src/nact/nact-match-list.c:
+	Reset all fields to an empty value when there is no selection.
+
+	* src/nact/nact-main-tab.h:
+	* src/nact/nautilus-actions-config-tool.ui:
+	Move the Execution tab just besides the Command one.
+
 2010-06-20 Pierre Wieser <pwieser trychlos org>
 
 	* src/core/na-object.c (na_object_object_unref):
diff --git a/src/nact/nact-iaction-tab.c b/src/nact/nact-iaction-tab.c
index a2de698..0ccde5a 100644
--- a/src/nact/nact-iaction-tab.c
+++ b/src/nact/nact-iaction-tab.c
@@ -368,7 +368,7 @@ on_iactions_list_column_edited( NactIActionTab *instance, NAObject *object, gcha
 
 	if( st_initialized && !st_finalized ){
 
-		if( NA_IS_OBJECT_ITEM( object )){
+		if( object && NA_IS_OBJECT_ITEM( object )){
 			label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionMenuLabelEntry" );
 			gtk_entry_set_text( GTK_ENTRY( label_widget ), text );
 		}
@@ -400,88 +400,93 @@ on_tab_updatable_selection_changed( NactIActionTab *instance, gint count_selecte
 		enable_tab = ( count_selected == 1 );
 		nact_main_tab_enable_page( NACT_MAIN_WINDOW( instance ), TAB_ACTION, enable_tab );
 
-		if( enable_tab ){
-			st_on_selection_change = TRUE;
+		st_on_selection_change = TRUE;
 
-			g_object_get(
-				G_OBJECT( instance ),
-				TAB_UPDATABLE_PROP_SELECTED_ITEM, &item,
-				TAB_UPDATABLE_PROP_EDITABLE, &editable,
-				NULL );
+		g_object_get(
+			G_OBJECT( instance ),
+			TAB_UPDATABLE_PROP_SELECTED_ITEM, &item,
+			TAB_UPDATABLE_PROP_EDITABLE, &editable,
+			NULL );
 
-			target_selection =
-					NA_IS_OBJECT_ACTION( item ) && na_object_is_target_selection( item );
+		target_selection =
+				enable_tab &&
+				item != NULL &&
+				NA_IS_OBJECT_ACTION( item ) &&
+				na_object_is_target_selection( item );
+
+		target_location =
+				enable_tab &&
+				item != NULL &&
+				NA_IS_OBJECT_ACTION( item ) &&
+				na_object_is_target_location( item );
+
+		target_toolbar =
+				enable_tab &&
+				item != NULL &&
+				NA_IS_OBJECT_ACTION( item ) &&
+				na_object_is_target_toolbar( item );
+
+		toggle = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionTargetSelectionButton" ));
+		gtk_toggle_button_set_active( toggle, target_selection || ( item && NA_IS_OBJECT_MENU( item )));
+		gtk_widget_set_sensitive( GTK_WIDGET( toggle ), item && NA_IS_OBJECT_ACTION( item ));
+		nact_gtk_utils_set_editable( GTK_OBJECT( toggle ), editable );
+
+		toggle = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionTargetLocationButton" ));
+		gtk_toggle_button_set_active( toggle, target_location || ( item && NA_IS_OBJECT_MENU( item )));
+		gtk_widget_set_sensitive( GTK_WIDGET( toggle ), item && NA_IS_OBJECT_ACTION( item ));
+		nact_gtk_utils_set_editable( GTK_OBJECT( toggle ), editable );
+
+		enable_label = target_selection || target_location || ( item && NA_IS_OBJECT_MENU( item ));
+		label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionMenuLabelEntry" );
+		label = item ? na_object_get_label( item ) : g_strdup( "" );
+		label = label ? label : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( label_widget ), label );
+		if( item ){
+			check_for_label( instance, GTK_ENTRY( label_widget ), label );
+		}
+		g_free( label );
+		gtk_widget_set_sensitive( label_widget, enable_label );
+		nact_gtk_utils_set_editable( GTK_OBJECT( label_widget ), editable );
 
-			target_location =
-					NA_IS_OBJECT_ACTION( item ) && na_object_is_target_location( item );
+		toggle = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionTargetToolbarButton" ));
+		gtk_toggle_button_set_active( toggle, target_toolbar );
+		gtk_widget_set_sensitive( GTK_WIDGET( toggle ), item && NA_IS_OBJECT_ACTION( item ));
+		nact_gtk_utils_set_editable( GTK_OBJECT( toggle ), editable );
 
-			target_toolbar =
-					NA_IS_OBJECT_ACTION( item ) && na_object_is_target_toolbar( item );
+		toggle = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ToolbarSameLabelButton" ));
+		same_label = item && NA_IS_OBJECT_ACTION( item ) ? na_object_is_toolbar_same_label( item ) : FALSE;
+		gtk_toggle_button_set_active( toggle, same_label );
+		gtk_widget_set_sensitive( GTK_WIDGET( toggle ), target_toolbar );
+		nact_gtk_utils_set_editable( GTK_OBJECT( toggle ), editable );
 
-			toggle = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionTargetSelectionButton" ));
-			gtk_toggle_button_set_active( toggle, target_selection || NA_IS_OBJECT_MENU( item ));
-			gtk_widget_set_sensitive( GTK_WIDGET( toggle ), NA_IS_OBJECT_ACTION( item ));
-			nact_gtk_utils_set_editable( GTK_OBJECT( toggle ), editable );
+		label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionToolbarLabelEntry" );
+		label = item && NA_IS_OBJECT_ACTION( item ) ? na_object_get_toolbar_label( item ) : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( label_widget ), label );
+		g_free( label );
+		gtk_widget_set_sensitive( label_widget, target_toolbar && !same_label );
+		nact_gtk_utils_set_editable( GTK_OBJECT( label_widget ), editable );
 
-			toggle = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionTargetLocationButton" ));
-			gtk_toggle_button_set_active( toggle, target_location || NA_IS_OBJECT_MENU( item ));
-			gtk_widget_set_sensitive( GTK_WIDGET( toggle ), NA_IS_OBJECT_ACTION( item ));
-			nact_gtk_utils_set_editable( GTK_OBJECT( toggle ), editable );
+		label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionToolbarLabelLabel" );
+		gtk_widget_set_sensitive( label_widget, target_toolbar && !same_label );
 
-			enable_label = target_selection || target_location || NA_IS_OBJECT_MENU( item );
-			label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionMenuLabelEntry" );
-			label = na_object_get_label( item );
-			label = label ? label : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( label_widget ), label );
-			if( item ){
-				check_for_label( instance, GTK_ENTRY( label_widget ), label );
-			}
-			g_free( label );
-			gtk_widget_set_sensitive( label_widget, enable_label );
-			nact_gtk_utils_set_editable( GTK_OBJECT( label_widget ), editable );
+		tooltip_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionTooltipEntry" );
+		tooltip = item ? na_object_get_tooltip( item ) : g_strdup( "" );
+		tooltip = tooltip ? tooltip : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( tooltip_widget ), tooltip );
+		g_free( tooltip );
+		nact_gtk_utils_set_editable( GTK_OBJECT( tooltip_widget ), editable );
 
-			toggle = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionTargetToolbarButton" ));
-			gtk_toggle_button_set_active( toggle, target_toolbar );
-			gtk_widget_set_sensitive( GTK_WIDGET( toggle ), NA_IS_OBJECT_ACTION( item ));
-			nact_gtk_utils_set_editable( GTK_OBJECT( toggle ), editable );
+		icon_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionIconComboBoxEntry" );
+		icon = item ? na_object_get_icon( item ) : g_strdup( "" );
+		icon = icon ? icon : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( gtk_bin_get_child( GTK_BIN( icon_widget ))), icon );
+		g_free( icon );
+		nact_gtk_utils_set_editable( GTK_OBJECT( icon_widget ), editable );
 
-			toggle = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ToolbarSameLabelButton" ));
-			same_label = NA_IS_OBJECT_ACTION( item ) ? na_object_is_toolbar_same_label( item ) : FALSE;
-			gtk_toggle_button_set_active( toggle, same_label );
-			gtk_widget_set_sensitive( GTK_WIDGET( toggle ), target_toolbar );
-			nact_gtk_utils_set_editable( GTK_OBJECT( toggle ), editable );
+		icon_button = GTK_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionIconBrowseButton" ));
+		nact_gtk_utils_set_editable( GTK_OBJECT( icon_button ), editable );
 
-			label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionToolbarLabelEntry" );
-			label = NA_IS_OBJECT_ACTION( item ) ? na_object_get_toolbar_label( item ) : g_strdup( "" );
-			/* .. */
-			gtk_entry_set_text( GTK_ENTRY( label_widget ), label );
-			/* .. */
-			g_free( label );
-			gtk_widget_set_sensitive( label_widget, target_toolbar && !same_label );
-			nact_gtk_utils_set_editable( GTK_OBJECT( label_widget ), editable );
-
-			label_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionToolbarLabelLabel" );
-			gtk_widget_set_sensitive( label_widget, target_toolbar && !same_label );
-
-			tooltip_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionTooltipEntry" );
-			tooltip = item ? na_object_get_tooltip( item ) : g_strdup( "" );
-			tooltip = tooltip ? tooltip : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( tooltip_widget ), tooltip );
-			g_free( tooltip );
-			nact_gtk_utils_set_editable( GTK_OBJECT( tooltip_widget ), editable );
-
-			icon_widget = base_window_get_widget( BASE_WINDOW( instance ), "ActionIconComboBoxEntry" );
-			icon = item ? na_object_get_icon( item ) : g_strdup( "" );
-			icon = icon ? icon : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( gtk_bin_get_child( GTK_BIN( icon_widget ))), icon );
-			g_free( icon );
-			nact_gtk_utils_set_editable( GTK_OBJECT( icon_widget ), editable );
-
-			icon_button = GTK_BUTTON( base_window_get_widget( BASE_WINDOW( instance ), "ActionIconBrowseButton" ));
-			nact_gtk_utils_set_editable( GTK_OBJECT( icon_button ), editable );
-
-			st_on_selection_change = FALSE;
-		}
+		st_on_selection_change = FALSE;
 	}
 }
 
@@ -507,9 +512,7 @@ on_target_selection_toggled( GtkToggleButton *button, NactIActionTab *instance )
 				thisfn, ( void * ) item, item ? G_OBJECT_TYPE_NAME( item ) : "null",
 				editable ? "True":"False" );
 
-		g_return_if_fail( item );
-
-		if( NA_IS_OBJECT_ACTION( item )){
+		if( item && NA_IS_OBJECT_ACTION( item )){
 			is_target = gtk_toggle_button_get_active( button );
 
 			if( editable ){
@@ -547,9 +550,7 @@ on_target_location_toggled( GtkToggleButton *button, NactIActionTab *instance )
 				thisfn, ( void * ) item, item ? G_OBJECT_TYPE_NAME( item ) : "null",
 				editable ? "True":"False" );
 
-		g_return_if_fail( item );
-
-		if( NA_IS_OBJECT_ACTION( item )){
+		if( item && NA_IS_OBJECT_ACTION( item )){
 			is_target = gtk_toggle_button_get_active( button );
 
 			if( editable ){
@@ -610,17 +611,17 @@ on_label_changed( GtkEntry *entry, NactIActionTab *instance )
 			TAB_UPDATABLE_PROP_SELECTED_ITEM, &item,
 			NULL );
 
-	g_return_if_fail( item );
+	if( item ){
+		label = gtk_entry_get_text( entry );
+		na_object_set_label( item, label );
+		check_for_label( instance, entry, label );
 
-	label = gtk_entry_get_text( entry );
-	na_object_set_label( item, label );
-	check_for_label( instance, entry, label );
+		if( NA_IS_OBJECT_ACTION( item )){
+			setup_toolbar_label( instance, item, label );
+		}
 
-	if( NA_IS_OBJECT_ACTION( item )){
-		setup_toolbar_label( instance, item, label );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, item, TRUE );
 	}
-
-	g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, item, TRUE );
 }
 
 static void
@@ -656,9 +657,7 @@ on_target_toolbar_toggled( GtkToggleButton *button, NactIActionTab *instance )
 				thisfn, ( void * ) item, item ? G_OBJECT_TYPE_NAME( item ) : "null",
 				editable ? "True":"False" );
 
-		g_return_if_fail( item );
-
-		if( NA_IS_OBJECT_ACTION( item )){
+		if( item && NA_IS_OBJECT_ACTION( item )){
 			is_target = gtk_toggle_button_get_active( button );
 
 			if( editable ){
@@ -699,9 +698,7 @@ on_toolbar_same_label_toggled( GtkToggleButton *button, NactIActionTab *instance
 				thisfn, ( void * ) item, item ? G_OBJECT_TYPE_NAME( item ) : "null",
 				editable ? "True":"False" );
 
-		g_return_if_fail( item );
-
-		if( NA_IS_OBJECT_ACTION( item )){
+		if( item && NA_IS_OBJECT_ACTION( item )){
 			same_label = gtk_toggle_button_get_active( button );
 
 			if( editable ){
@@ -767,9 +764,7 @@ on_toolbar_label_changed( GtkEntry *entry, NactIActionTab *instance )
 			TAB_UPDATABLE_PROP_SELECTED_ITEM, &item,
 			NULL );
 
-	g_return_if_fail( item );
-
-	if( NA_IS_OBJECT_ACTION( item )){
+	if( item && NA_IS_OBJECT_ACTION( item )){
 		label = gtk_entry_get_text( entry );
 		na_object_set_toolbar_label( NA_OBJECT_ACTION( item ), label );
 
@@ -800,10 +795,10 @@ on_tooltip_changed( GtkEntry *entry, NactIActionTab *instance )
 			TAB_UPDATABLE_PROP_SELECTED_ITEM, &item,
 			NULL );
 
-	g_return_if_fail( item );
-
-	na_object_set_tooltip( item, gtk_entry_get_text( entry ));
-	g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, item, FALSE );
+	if( item ){
+		na_object_set_tooltip( item, gtk_entry_get_text( entry ));
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, item, FALSE );
+	}
 }
 
 static GtkTreeModel *
@@ -899,12 +894,14 @@ on_icon_changed( GtkEntry *icon_entry, NactIActionTab *instance )
 			TAB_UPDATABLE_PROP_SELECTED_ITEM, &item,
 			NULL );
 
-	icon_name = gtk_entry_get_text( icon_entry );
-	na_object_set_icon( item, icon_name );
-	g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, item, TRUE );
+	if( item ){
+		icon_name = gtk_entry_get_text( icon_entry );
+		na_object_set_icon( item, icon_name );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, item, TRUE );
 
-	image = GTK_IMAGE( base_window_get_widget( BASE_WINDOW( instance ), "ActionIconImage" ));
-	nact_gtk_utils_render( icon_name, image, GTK_ICON_SIZE_MENU );
+		image = GTK_IMAGE( base_window_get_widget( BASE_WINDOW( instance ), "ActionIconImage" ));
+		nact_gtk_utils_render( icon_name, image, GTK_ICON_SIZE_MENU );
+	}
 }
 
 static gint
diff --git a/src/nact/nact-ibasenames-tab.c b/src/nact/nact-ibasenames-tab.c
index 6246afc..7d9a4e7 100644
--- a/src/nact/nact-ibasenames-tab.c
+++ b/src/nact/nact-ibasenames-tab.c
@@ -254,7 +254,6 @@ on_matchcase_toggled( GtkToggleButton *button, BaseWindow *window )
 	gboolean matchcase;
 
 	if( !st_on_selection_change ){
-
 		context = nact_main_tab_get_context( NACT_MAIN_WINDOW( window ), &editable );
 
 		if( context ){
diff --git a/src/nact/nact-icommand-tab.c b/src/nact/nact-icommand-tab.c
index 3e3732b..44f46ea 100644
--- a/src/nact/nact-icommand-tab.c
+++ b/src/nact/nact-icommand-tab.c
@@ -358,51 +358,49 @@ on_tab_updatable_selection_changed( NactICommandTab *instance, gint count_select
 		enable_tab = ( profile != NULL );
 		nact_main_tab_enable_page( NACT_MAIN_WINDOW( instance ), TAB_COMMAND, enable_tab );
 
-		if( enable_tab ){
-			st_on_selection_change = TRUE;
-
-			label_entry = get_label_entry( instance );
-			label = profile ? na_object_get_label( profile ) : g_strdup( "" );
-			label = label ? label : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( label_entry ), label );
-			check_for_label( instance, GTK_ENTRY( label_entry ), label );
-			g_free( label );
-			gtk_widget_set_sensitive( label_entry, profile != NULL );
-			nact_gtk_utils_set_editable( GTK_OBJECT( label_entry ), editable );
-
-			path_entry = get_path_entry( instance );
-			path = profile ? na_object_get_path( profile ) : g_strdup( "" );
-			path = path ? path : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( path_entry ), path );
-			g_free( path );
-			gtk_widget_set_sensitive( path_entry, profile != NULL );
-			nact_gtk_utils_set_editable( GTK_OBJECT( path_entry ), editable );
-
-			path_button = get_path_button( instance );
-			gtk_widget_set_sensitive( GTK_WIDGET( path_button ), profile != NULL );
-			nact_gtk_utils_set_editable( GTK_OBJECT( path_button ), editable );
-
-			parameters_entry = get_parameters_entry( instance );
-			parameters = profile ? na_object_get_parameters( profile ) : g_strdup( "" );
-			parameters = parameters ? parameters : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( parameters_entry ), parameters );
-			g_free( parameters );
-			gtk_widget_set_sensitive( parameters_entry, profile != NULL );
-			nact_gtk_utils_set_editable( GTK_OBJECT( parameters_entry ), editable );
-
-			legend_button = get_legend_button( instance );
-			gtk_widget_set_sensitive( GTK_WIDGET( legend_button ), profile != NULL );
-
-			wdir_entry = base_window_get_widget( BASE_WINDOW( instance ), "WorkingDirectoryEntry" );
-			wdir = profile ? na_object_get_working_dir( profile ) : g_strdup( "" );
-			wdir = wdir ? wdir : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( wdir_entry ), wdir );
-			g_free( wdir );
-			gtk_widget_set_sensitive( wdir_entry, profile != NULL );
-			nact_gtk_utils_set_editable( GTK_OBJECT( wdir_entry ), editable );
-
-			st_on_selection_change = FALSE;
-		}
+		st_on_selection_change = TRUE;
+
+		label_entry = get_label_entry( instance );
+		label = profile ? na_object_get_label( profile ) : g_strdup( "" );
+		label = label ? label : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( label_entry ), label );
+		check_for_label( instance, GTK_ENTRY( label_entry ), label );
+		g_free( label );
+		gtk_widget_set_sensitive( label_entry, profile != NULL );
+		nact_gtk_utils_set_editable( GTK_OBJECT( label_entry ), editable );
+
+		path_entry = get_path_entry( instance );
+		path = profile ? na_object_get_path( profile ) : g_strdup( "" );
+		path = path ? path : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( path_entry ), path );
+		g_free( path );
+		gtk_widget_set_sensitive( path_entry, profile != NULL );
+		nact_gtk_utils_set_editable( GTK_OBJECT( path_entry ), editable );
+
+		path_button = get_path_button( instance );
+		gtk_widget_set_sensitive( GTK_WIDGET( path_button ), profile != NULL );
+		nact_gtk_utils_set_editable( GTK_OBJECT( path_button ), editable );
+
+		parameters_entry = get_parameters_entry( instance );
+		parameters = profile ? na_object_get_parameters( profile ) : g_strdup( "" );
+		parameters = parameters ? parameters : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( parameters_entry ), parameters );
+		g_free( parameters );
+		gtk_widget_set_sensitive( parameters_entry, profile != NULL );
+		nact_gtk_utils_set_editable( GTK_OBJECT( parameters_entry ), editable );
+
+		legend_button = get_legend_button( instance );
+		gtk_widget_set_sensitive( GTK_WIDGET( legend_button ), profile != NULL );
+
+		wdir_entry = base_window_get_widget( BASE_WINDOW( instance ), "WorkingDirectoryEntry" );
+		wdir = profile ? na_object_get_working_dir( profile ) : g_strdup( "" );
+		wdir = wdir ? wdir : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( wdir_entry ), wdir );
+		g_free( wdir );
+		gtk_widget_set_sensitive( wdir_entry, profile != NULL );
+		nact_gtk_utils_set_editable( GTK_OBJECT( wdir_entry ), editable );
+
+		st_on_selection_change = FALSE;
 	}
 }
 
@@ -482,12 +480,12 @@ legend_dialog_hide( NactICommandTab *instance )
 			g_object_get_data( G_OBJECT( legend_dialog ), ICOMMAND_TAB_LEGEND_VISIBLE ));
 
 	if( is_visible ){
-		g_assert( GTK_IS_WINDOW( legend_dialog ));
+		g_return_if_fail( GTK_IS_WINDOW( legend_dialog ));
 		base_iprefs_save_named_window_position( BASE_WINDOW( instance ), legend_dialog, IPREFS_LEGEND_DIALOG );
 		gtk_widget_hide( GTK_WIDGET( legend_dialog ));
 
 		/* set the legend button state consistent for when the dialog is
-		 * hidden by another mean (eg. close the edit profile dialog)
+		 * hidden by another way (eg. close the edit profile dialog)
 		 */
 		legend_button = get_legend_button( instance );
 		gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( legend_button ), FALSE );
@@ -521,7 +519,6 @@ on_label_changed( GtkEntry *entry, NactICommandTab *instance )
 	const gchar *label;
 
 	if( !st_on_selection_change ){
-
 		g_object_get(
 				G_OBJECT( instance ),
 				TAB_UPDATABLE_PROP_SELECTED_PROFILE, &profile,
@@ -553,7 +550,6 @@ on_parameters_changed( GtkEntry *entry, NactICommandTab *instance )
 	NAObjectProfile *profile;
 
 	if( !st_on_selection_change ){
-
 		g_object_get(
 				G_OBJECT( instance ),
 				TAB_UPDATABLE_PROP_SELECTED_PROFILE, &profile,
@@ -582,16 +578,16 @@ on_path_changed( GtkEntry *entry, NactICommandTab *instance )
 	NAObjectProfile *profile;
 
 	if( !st_on_selection_change ){
-
 		g_object_get(
 				G_OBJECT( instance ),
 				TAB_UPDATABLE_PROP_SELECTED_PROFILE, &profile,
 				NULL );
-		g_return_if_fail( profile );
 
-		na_object_set_path( profile, gtk_entry_get_text( entry ));
-		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
-		update_example_label( instance, profile );
+		if( profile ){
+			na_object_set_path( profile, gtk_entry_get_text( entry ));
+			g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
+			update_example_label( instance, profile );
+		}
 	}
 }
 
@@ -602,21 +598,22 @@ on_wdir_browse( GtkButton *button, NactICommandTab *instance )
 	NAObjectProfile *profile;
 	gchar *default_value;
 
-	wdir_entry = base_window_get_widget( BASE_WINDOW( instance ), "WorkingDirectoryEntry" );
-
 	g_object_get(
 			G_OBJECT( instance ),
 			TAB_UPDATABLE_PROP_SELECTED_PROFILE, &profile,
 			NULL );
 
-	default_value = na_factory_object_get_default( NA_IFACTORY_OBJECT( profile ), NAFO_DATA_WORKING_DIR );
+	if( profile ){
+		default_value = na_factory_object_get_default( NA_IFACTORY_OBJECT( profile ), NAFO_DATA_WORKING_DIR );
+		wdir_entry = base_window_get_widget( BASE_WINDOW( instance ), "WorkingDirectoryEntry" );
 
-	nact_gtk_utils_select_dir(
-			BASE_WINDOW( instance ),
-			_( "Choosing a working directory" ), IPREFS_WORKING_DIR_DIALOG,
-			wdir_entry, IPREFS_WORKING_DIR_URI, default_value );
+		nact_gtk_utils_select_dir(
+				BASE_WINDOW( instance ),
+				_( "Choosing a working directory" ), IPREFS_WORKING_DIR_DIALOG,
+				wdir_entry, IPREFS_WORKING_DIR_URI, default_value );
 
-	g_free( default_value );
+		g_free( default_value );
+	}
 }
 
 static void
@@ -625,14 +622,15 @@ on_wdir_changed( GtkEntry *entry, NactICommandTab *instance )
 	NAObjectProfile *profile;
 
 	if( !st_on_selection_change ){
-
 		g_object_get(
 				G_OBJECT( instance ),
 				TAB_UPDATABLE_PROP_SELECTED_PROFILE, &profile,
 				NULL );
 
-		na_object_set_working_dir( profile, gtk_entry_get_text( entry ));
-		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
+		if( profile ){
+			na_object_set_working_dir( profile, gtk_entry_get_text( entry ));
+			g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
+		}
 	}
 }
 
diff --git a/src/nact/nact-ienvironment-tab.c b/src/nact/nact-ienvironment-tab.c
index 38d0d95..21be8c5 100644
--- a/src/nact/nact-ienvironment-tab.c
+++ b/src/nact/nact-ienvironment-tab.c
@@ -418,99 +418,97 @@ on_tab_updatable_selection_changed( NactIEnvironmentTab *instance, gint count_se
 		enable_tab = ( context != NULL );
 		nact_main_tab_enable_page( NACT_MAIN_WINDOW( instance ), TAB_ENVIRONMENT, enable_tab );
 
-		if( context ){
+		st_on_selection_change = TRUE;
 
-			st_on_selection_change = TRUE;
+		/* selection count
+		 */
+		sel_count = context ? na_object_get_selection_count( context ) : g_strdup( "" );
+		na_core_utils_selcount_get_ope_int( sel_count, &selcount_ope, &selcount_int );
+		set_selection_count_selection( instance, selcount_ope, selcount_int );
+		g_free( selcount_int );
+		g_free( selcount_ope );
+		g_free( sel_count );
 
-			/* selection count
-			 */
-			sel_count = na_object_get_selection_count( context );
-			na_core_utils_selcount_get_ope_int( sel_count, &selcount_ope, &selcount_int );
-			set_selection_count_selection( instance, selcount_ope, selcount_int );
-			g_free( selcount_int );
-			g_free( selcount_ope );
-			g_free( sel_count );
+		combo = base_window_get_widget( BASE_WINDOW( instance ), "SelectionCountSigneCombobox" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( combo ), editable );
 
-			combo = base_window_get_widget( BASE_WINDOW( instance ), "SelectionCountSigneCombobox" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( combo ), editable );
+		entry = base_window_get_widget( BASE_WINDOW( instance ), "SelectionCountNumberEntry" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
 
-			entry = base_window_get_widget( BASE_WINDOW( instance ), "SelectionCountNumberEntry" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
+		/* desktop environment
+		 */
+		raz_desktop_listview( instance );
 
-			/* desktop environment
-			 */
-			raz_desktop_listview( instance );
+		always_button = base_window_get_widget( BASE_WINDOW( instance ), "ShowAlwaysButton" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( always_button ), editable );
 
-			always_button = base_window_get_widget( BASE_WINDOW( instance ), "ShowAlwaysButton" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( always_button ), editable );
+		show_button = base_window_get_widget( BASE_WINDOW( instance ), "OnlyShowButton" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( show_button ), editable );
 
-			show_button = base_window_get_widget( BASE_WINDOW( instance ), "OnlyShowButton" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( show_button ), editable );
+		notshow_button = base_window_get_widget( BASE_WINDOW( instance ), "DoNotShowButton" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( notshow_button ), editable );
 
-			notshow_button = base_window_get_widget( BASE_WINDOW( instance ), "DoNotShowButton" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( notshow_button ), editable );
+		desktops = context ? na_object_get_only_show_in( context ) : NULL;
+		listview = GTK_TREE_VIEW( base_window_get_widget( BASE_WINDOW( instance ), "EnvironmentsDesktopTreeView" ));
 
-			desktops = na_object_get_only_show_in( context );
-			listview = GTK_TREE_VIEW( base_window_get_widget( BASE_WINDOW( instance ), "EnvironmentsDesktopTreeView" ));
+		if( desktops && g_slist_length( desktops )){
+			gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( show_button ), TRUE );
+			gtk_widget_set_sensitive( GTK_WIDGET( listview ), TRUE );
+
+		} else {
+			desktops = context ? na_object_get_not_show_in( context ) : NULL;
 
 			if( desktops && g_slist_length( desktops )){
-				gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( show_button ), TRUE );
+				gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( notshow_button ), TRUE );
 				gtk_widget_set_sensitive( GTK_WIDGET( listview ), TRUE );
 
 			} else {
-				desktops = na_object_get_not_show_in( context );
+				gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( always_button ), context != NULL );
+				gtk_toggle_button_set_inconsistent( GTK_TOGGLE_BUTTON( always_button ), context == NULL );
+				gtk_widget_set_sensitive( GTK_WIDGET( listview ), FALSE );
+				desktops = NULL;
+			}
+		}
 
-				if( desktops && g_slist_length( desktops )){
-					gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( notshow_button ), TRUE );
-					gtk_widget_set_sensitive( GTK_WIDGET( listview ), TRUE );
+		setup_desktop_listview( instance, desktops );
 
-				} else {
-					gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( always_button ), TRUE );
-					gtk_widget_set_sensitive( GTK_WIDGET( listview ), FALSE );
-					desktops = NULL;
-				}
-			}
+		/* execution environment
+		 */
+		entry = base_window_get_widget( BASE_WINDOW( instance ), "TryExecEntry" );
+		text = context ? na_object_get_try_exec( context ) : g_strdup( "" );
+		text = text && strlen( text ) ? text : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( entry ), text );
+		g_free( text );
+		nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
 
-			setup_desktop_listview( instance, desktops );
-
-			/* execution environment
-			 */
-			entry = base_window_get_widget( BASE_WINDOW( instance ), "TryExecEntry" );
-			text = na_object_get_try_exec( context );
-			text = text && strlen( text ) ? text : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( entry ), text );
-			g_free( text );
-			nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
-
-			entry = base_window_get_widget( BASE_WINDOW( instance ), "ShowIfRegisteredEntry" );
-			text = na_object_get_show_if_registered( context );
-			text = text && strlen( text ) ? text : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( entry ), text );
-			g_free( text );
-			nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
-
-			entry = base_window_get_widget( BASE_WINDOW( instance ), "ShowIfTrueEntry" );
-			text = na_object_get_show_if_true( context );
-			text = text && strlen( text ) ? text : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( entry ), text );
-			g_free( text );
-			nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
-
-			entry = base_window_get_widget( BASE_WINDOW( instance ), "ShowIfRunningEntry" );
-			text = na_object_get_show_if_running( context );
-			text = text && strlen( text ) ? text : g_strdup( "" );
-			gtk_entry_set_text( GTK_ENTRY( entry ), text );
-			g_free( text );
-			nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
-
-			st_on_selection_change = FALSE;
-
-			path = gtk_tree_path_new_first();
-			if( path ){
-				selection = gtk_tree_view_get_selection( listview );
-				gtk_tree_selection_select_path( selection, path );
-				gtk_tree_path_free( path );
-			}
+		entry = base_window_get_widget( BASE_WINDOW( instance ), "ShowIfRegisteredEntry" );
+		text = context ? na_object_get_show_if_registered( context ) : g_strdup( "" );
+		text = text && strlen( text ) ? text : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( entry ), text );
+		g_free( text );
+		nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
+
+		entry = base_window_get_widget( BASE_WINDOW( instance ), "ShowIfTrueEntry" );
+		text = context ? na_object_get_show_if_true( context ) : g_strdup( "" );
+		text = text && strlen( text ) ? text : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( entry ), text );
+		g_free( text );
+		nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
+
+		entry = base_window_get_widget( BASE_WINDOW( instance ), "ShowIfRunningEntry" );
+		text = context ? na_object_get_show_if_running( context ) : g_strdup( "" );
+		text = text && strlen( text ) ? text : g_strdup( "" );
+		gtk_entry_set_text( GTK_ENTRY( entry ), text );
+		g_free( text );
+		nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
+
+		st_on_selection_change = FALSE;
+
+		path = gtk_tree_path_new_first();
+		if( path ){
+			selection = gtk_tree_view_get_selection( listview );
+			gtk_tree_selection_select_path( selection, path );
+			gtk_tree_path_free( path );
 		}
 	}
 }
@@ -534,14 +532,15 @@ on_selection_count_changed( NactIEnvironmentTab *instance )
 	gchar *selcount;
 
 	if( !st_on_selection_change ){
-
 		context = nact_main_tab_get_context( NACT_MAIN_WINDOW( instance ), NULL );
-		g_return_if_fail( context != NULL );
 
-		selcount = get_selection_count_selection( instance );
-		na_object_set_selection_count( context, selcount );
-		g_free( selcount );
-		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+		if( context ){
+			selcount = get_selection_count_selection( instance );
+			na_object_set_selection_count( context, selcount );
+			g_free( selcount );
+
+			g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+		}
 	}
 }
 
@@ -572,23 +571,26 @@ on_show_always_toggled( GtkToggleButton *toggle_button, NactIEnvironmentTab *ins
 			( void * ) instance );
 
 	context = nact_main_tab_get_context( NACT_MAIN_WINDOW( instance ), &editable );
-	active = gtk_toggle_button_get_active( toggle_button );
 
-	if( editable ){
-		listview = GTK_TREE_VIEW( base_window_get_widget( BASE_WINDOW( instance ), "EnvironmentsDesktopTreeView" ));
-		gtk_widget_set_sensitive( GTK_WIDGET( listview ), !active );
+	if( context ){
+		active = gtk_toggle_button_get_active( toggle_button );
 
-		if( active ){
-			raz_desktop_listview( instance );
-			na_object_set_only_show_in( context, NULL );
-			na_object_set_not_show_in( context, NULL );
-			g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
-		}
+		if( editable ){
+			listview = GTK_TREE_VIEW( base_window_get_widget( BASE_WINDOW( instance ), "EnvironmentsDesktopTreeView" ));
+			gtk_widget_set_sensitive( GTK_WIDGET( listview ), !active );
 
-	} else {
-		g_signal_handlers_block_by_func(( gpointer ) toggle_button, on_show_always_toggled, instance );
-		gtk_toggle_button_set_active( toggle_button, !active );
-		g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, on_show_always_toggled, instance );
+			if( active ){
+				raz_desktop_listview( instance );
+				na_object_set_only_show_in( context, NULL );
+				na_object_set_not_show_in( context, NULL );
+				g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+			}
+
+		} else {
+			g_signal_handlers_block_by_func(( gpointer ) toggle_button, on_show_always_toggled, instance );
+			gtk_toggle_button_set_active( toggle_button, !active );
+			g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, on_show_always_toggled, instance );
+		}
 	}
 }
 
@@ -607,25 +609,28 @@ on_only_show_toggled( GtkToggleButton *toggle_button, NactIEnvironmentTab *insta
 			( void * ) instance );
 
 	context = nact_main_tab_get_context( NACT_MAIN_WINDOW( instance ), &editable );
-	active = gtk_toggle_button_get_active( toggle_button );
-
-	if( editable ){
-		if( active ){
-			raz_desktop_listview( instance );
-			show = na_object_get_only_show_in( context );
-			if( show && g_slist_length( show )){
-				setup_desktop_listview( instance, show );
+
+	if( context ){
+		active = gtk_toggle_button_get_active( toggle_button );
+
+		if( editable ){
+			if( active ){
+				raz_desktop_listview( instance );
+				show = na_object_get_only_show_in( context );
+				if( show && g_slist_length( show )){
+					setup_desktop_listview( instance, show );
+				}
+
+			} else {
+				na_object_set_only_show_in( context, NULL );
+				g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
 			}
 
 		} else {
-			na_object_set_only_show_in( context, NULL );
-			g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+			g_signal_handlers_block_by_func(( gpointer ) toggle_button, on_only_show_toggled, instance );
+			gtk_toggle_button_set_active( toggle_button, !active );
+			g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, on_only_show_toggled, instance );
 		}
-
-	} else {
-		g_signal_handlers_block_by_func(( gpointer ) toggle_button, on_only_show_toggled, instance );
-		gtk_toggle_button_set_active( toggle_button, !active );
-		g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, on_only_show_toggled, instance );
 	}
 }
 
@@ -644,25 +649,28 @@ on_do_not_show_toggled( GtkToggleButton *toggle_button, NactIEnvironmentTab *ins
 			( void * ) instance );
 
 	context = nact_main_tab_get_context( NACT_MAIN_WINDOW( instance ), &editable );
-	active = gtk_toggle_button_get_active( toggle_button );
-
-	if( editable ){
-		if( active ){
-			raz_desktop_listview( instance );
-			show = na_object_get_not_show_in( context );
-			if( show && g_slist_length( show )){
-				setup_desktop_listview( instance, show );
+
+	if( context ){
+		active = gtk_toggle_button_get_active( toggle_button );
+
+		if( editable ){
+			if( active ){
+				raz_desktop_listview( instance );
+				show = na_object_get_not_show_in( context );
+				if( show && g_slist_length( show )){
+					setup_desktop_listview( instance, show );
+				}
+
+			} else {
+				na_object_set_not_show_in( context, NULL );
+				g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
 			}
 
 		} else {
-			na_object_set_not_show_in( context, NULL );
-			g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+			g_signal_handlers_block_by_func(( gpointer ) toggle_button, on_do_not_show_toggled, instance );
+			gtk_toggle_button_set_active( toggle_button, !active );
+			g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, on_do_not_show_toggled, instance );
 		}
-
-	} else {
-		g_signal_handlers_block_by_func(( gpointer ) toggle_button, on_do_not_show_toggled, instance );
-		gtk_toggle_button_set_active( toggle_button, !active );
-		g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, on_do_not_show_toggled, instance );
 	}
 }
 
@@ -683,33 +691,34 @@ on_desktop_toggled( GtkCellRendererToggle *renderer, gchar *path, BaseWindow *wi
 	g_debug( "%s: renderer=%p, path=%s, window=%p", thisfn, ( void * ) renderer, path, ( void * ) window );
 
 	if( !st_on_selection_change ){
-
 		context = nact_main_tab_get_context( NACT_MAIN_WINDOW( window ), &editable );
 
-		if( editable ){
-			listview = GTK_TREE_VIEW( base_window_get_widget( window, "EnvironmentsDesktopTreeView" ));
-			model = gtk_tree_view_get_model( listview );
-			tree_path = gtk_tree_path_new_from_string( path );
-			gtk_tree_model_get_iter( model, &iter, tree_path );
-			gtk_tree_path_free( tree_path );
-			gtk_tree_model_get( model, &iter, ENV_BOOL_COLUMN, &state, ENV_KEYWORD_COLUMN, &desktop, -1 );
-			gtk_list_store_set( GTK_LIST_STORE( model ), &iter, ENV_BOOL_COLUMN, !state, -1 );
-
-			show_button = base_window_get_widget( BASE_WINDOW( window ), "OnlyShowButton" );
-			if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( show_button ))){
-				na_object_set_only_desktop( context, desktop, !state );
-			} else {
-				na_object_set_not_desktop( context, desktop, !state );
-			}
+		if( context ){
+			if( editable ){
+				listview = GTK_TREE_VIEW( base_window_get_widget( window, "EnvironmentsDesktopTreeView" ));
+				model = gtk_tree_view_get_model( listview );
+				tree_path = gtk_tree_path_new_from_string( path );
+				gtk_tree_model_get_iter( model, &iter, tree_path );
+				gtk_tree_path_free( tree_path );
+				gtk_tree_model_get( model, &iter, ENV_BOOL_COLUMN, &state, ENV_KEYWORD_COLUMN, &desktop, -1 );
+				gtk_list_store_set( GTK_LIST_STORE( model ), &iter, ENV_BOOL_COLUMN, !state, -1 );
+
+				show_button = base_window_get_widget( BASE_WINDOW( window ), "OnlyShowButton" );
+				if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( show_button ))){
+					na_object_set_only_desktop( context, desktop, !state );
+				} else {
+					na_object_set_not_desktop( context, desktop, !state );
+				}
 
-			g_signal_emit_by_name( G_OBJECT( window ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+				g_signal_emit_by_name( G_OBJECT( window ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
 
-			g_free( desktop );
+				g_free( desktop );
 
-		} else {
-			g_signal_handlers_block_by_func(( gpointer ) renderer, on_desktop_toggled, window );
-			gtk_cell_renderer_toggle_set_active( renderer, state );
-			g_signal_handlers_unblock_by_func(( gpointer ) renderer, on_desktop_toggled, window );
+			} else {
+				g_signal_handlers_block_by_func(( gpointer ) renderer, on_desktop_toggled, window );
+				gtk_cell_renderer_toggle_set_active( renderer, state );
+				g_signal_handlers_unblock_by_func(( gpointer ) renderer, on_desktop_toggled, window );
+			}
 		}
 	}
 }
@@ -721,8 +730,12 @@ on_try_exec_changed( GtkEntry *entry, NactIEnvironmentTab *instance )
 	const gchar *text;
 
 	context = nact_main_tab_get_context( NACT_MAIN_WINDOW( instance ), NULL );
-	text = gtk_entry_get_text( entry );
-	na_object_set_try_exec( context, text );
+
+	if( context ){
+		text = gtk_entry_get_text( entry );
+		na_object_set_try_exec( context, text );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+	}
 }
 
 static void
@@ -745,8 +758,12 @@ on_show_if_registered_changed( GtkEntry *entry, NactIEnvironmentTab *instance )
 	const gchar *text;
 
 	context = nact_main_tab_get_context( NACT_MAIN_WINDOW( instance ), NULL );
-	text = gtk_entry_get_text( entry );
-	na_object_set_show_if_registered( context, text );
+
+	if( context ){
+		text = gtk_entry_get_text( entry );
+		na_object_set_show_if_registered( context, text );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+	}
 }
 
 static void
@@ -756,8 +773,12 @@ on_show_if_true_changed( GtkEntry *entry, NactIEnvironmentTab *instance )
 	const gchar *text;
 
 	context = nact_main_tab_get_context( NACT_MAIN_WINDOW( instance ), NULL );
-	text = gtk_entry_get_text( entry );
-	na_object_set_show_if_true( context, text );
+
+	if( context ){
+		text = gtk_entry_get_text( entry );
+		na_object_set_show_if_true( context, text );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+	}
 }
 
 static void
@@ -767,8 +788,12 @@ on_show_if_running_changed( GtkEntry *entry, NactIEnvironmentTab *instance )
 	const gchar *text;
 
 	context = nact_main_tab_get_context( NACT_MAIN_WINDOW( instance ), NULL );
-	text = gtk_entry_get_text( entry );
-	na_object_set_show_if_running( context, text );
+
+	if( context ){
+		text = gtk_entry_get_text( entry );
+		na_object_set_show_if_running( context, text );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
+	}
 }
 
 static void
diff --git a/src/nact/nact-iexecution-tab.c b/src/nact/nact-iexecution-tab.c
index 320a8d7..e922cb8 100644
--- a/src/nact/nact-iexecution-tab.c
+++ b/src/nact/nact-iexecution-tab.c
@@ -290,55 +290,54 @@ on_tab_updatable_selection_changed( NactIExecutionTab *instance, gint count_sele
 		enable_tab = ( profile != NULL );
 		nact_main_tab_enable_page( NACT_MAIN_WINDOW( instance ), TAB_EXECUTION, enable_tab );
 
-		if( enable_tab ){
-			st_on_selection_change = TRUE;
-
-			normal_toggle = base_window_get_widget( BASE_WINDOW( instance ), "ExecutionModeNormal" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( normal_toggle ), editable );
-
-			terminal_toggle = base_window_get_widget( BASE_WINDOW( instance ), "ExecutionModeTerminal" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( terminal_toggle ), editable );
-
-			embedded_toggle = base_window_get_widget( BASE_WINDOW( instance ), "ExecutionModeEmbedded" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( embedded_toggle ), editable );
-
-			display_toggle = base_window_get_widget( BASE_WINDOW( instance ), "ExecutionModeDisplayOutput" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( display_toggle ), editable );
-
-			mode = na_object_get_execution_mode( profile );
-			if( !strcmp( mode, "Normal" )){
-				gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( normal_toggle ), TRUE );
-			} else if( !strcmp( mode, "Terminal" )){
-				gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( terminal_toggle ), TRUE );
-			} else if( !strcmp( mode, "Embedded" )){
-				gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( embedded_toggle ), TRUE );
-			} else if( !strcmp( mode, "DisplayOutput" )){
-				gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( display_toggle ), TRUE );
-			} else {
-				g_warning( "%s: unable to setup execution mode '%s'", thisfn, mode );
-			}
-			g_free( mode );
+		st_on_selection_change = TRUE;
+
+		normal_toggle = base_window_get_widget( BASE_WINDOW( instance ), "ExecutionModeNormal" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( normal_toggle ), editable );
+
+		terminal_toggle = base_window_get_widget( BASE_WINDOW( instance ), "ExecutionModeTerminal" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( terminal_toggle ), editable );
+
+		embedded_toggle = base_window_get_widget( BASE_WINDOW( instance ), "ExecutionModeEmbedded" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( embedded_toggle ), editable );
+
+		display_toggle = base_window_get_widget( BASE_WINDOW( instance ), "ExecutionModeDisplayOutput" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( display_toggle ), editable );
+
+		mode = profile ? na_object_get_execution_mode( profile ) : g_strdup( "Normal" );
+		if( !strcmp( mode, "Normal" )){
+			gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( normal_toggle ), TRUE );
+			gtk_toggle_button_set_inconsistent( GTK_TOGGLE_BUTTON( normal_toggle ), profile == NULL );
+		} else if( !strcmp( mode, "Terminal" )){
+			gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( terminal_toggle ), TRUE );
+		} else if( !strcmp( mode, "Embedded" )){
+			gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( embedded_toggle ), TRUE );
+		} else if( !strcmp( mode, "DisplayOutput" )){
+			gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( display_toggle ), TRUE );
+		} else {
+			g_warning( "%s: unable to setup execution mode '%s'", thisfn, mode );
+		}
+		g_free( mode );
 
-			notify = na_object_get_startup_notify( profile );
-			notify_check = base_window_get_widget( BASE_WINDOW( instance ), "StartupNotifyButton" );
-			nact_gtk_utils_set_editable( GTK_OBJECT( notify_check ), editable );
-			gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( notify_check ), notify );
+		notify = profile ? na_object_get_startup_notify( profile ) : FALSE;
+		notify_check = base_window_get_widget( BASE_WINDOW( instance ), "StartupNotifyButton" );
+		nact_gtk_utils_set_editable( GTK_OBJECT( notify_check ), editable );
+		gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( notify_check ), notify );
 
-			class = na_object_get_startup_class( profile );
-			entry = base_window_get_widget( BASE_WINDOW( instance ), "StartupWMClassEntry" );
-			gtk_entry_set_text( GTK_ENTRY( entry ), class );
-			nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
-			gtk_widget_set_sensitive( entry, notify );
-			g_free( class );
-
-			user = na_object_get_execute_as( profile );
-			entry = base_window_get_widget( BASE_WINDOW( instance ), "ExecuteAsEntry" );
-			gtk_entry_set_text( GTK_ENTRY( entry ), user );
-			nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
-			g_free( user );
-
-			st_on_selection_change = FALSE;
-		}
+		class = profile ? na_object_get_startup_class( profile ) : g_strdup( "" );
+		entry = base_window_get_widget( BASE_WINDOW( instance ), "StartupWMClassEntry" );
+		gtk_entry_set_text( GTK_ENTRY( entry ), class );
+		nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
+		gtk_widget_set_sensitive( entry, notify );
+		g_free( class );
+
+		user = profile ? na_object_get_execute_as( profile ) : g_strdup( "" );
+		entry = base_window_get_widget( BASE_WINDOW( instance ), "ExecuteAsEntry" );
+		gtk_entry_set_text( GTK_ENTRY( entry ), user );
+		nact_gtk_utils_set_editable( GTK_OBJECT( entry ), editable );
+		g_free( user );
+
+		st_on_selection_change = FALSE;
 	}
 }
 
@@ -379,18 +378,20 @@ execution_mode_toggle( NactIExecutionTab *instance, GtkToggleButton *toggle_butt
 			TAB_UPDATABLE_PROP_EDITABLE, &editable,
 			NULL );
 
-	active = gtk_toggle_button_get_active( toggle_button );
+	if( profile ){
+		active = gtk_toggle_button_get_active( toggle_button );
 
-	if( editable ){
-		if( active ){
-			na_object_set_execution_mode( profile, mode );
-			g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
-		}
+		if( editable ){
+			if( active ){
+				na_object_set_execution_mode( profile, mode );
+				g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
+			}
 
-	} else {
-		g_signal_handlers_block_by_func(( gpointer ) toggle_button, cb, instance );
-		gtk_toggle_button_set_active( toggle_button, !active );
-		g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, cb, instance );
+		} else {
+			g_signal_handlers_block_by_func(( gpointer ) toggle_button, cb, instance );
+			gtk_toggle_button_set_active( toggle_button, !active );
+			g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, cb, instance );
+		}
 	}
 }
 
@@ -408,18 +409,20 @@ on_startup_notify_toggled( GtkToggleButton *toggle_button, NactIExecutionTab *in
 			TAB_UPDATABLE_PROP_EDITABLE, &editable,
 			NULL );
 
-	active = gtk_toggle_button_get_active( toggle_button );
+	if( profile ){
+		active = gtk_toggle_button_get_active( toggle_button );
 
-	if( editable ){
-		na_object_set_startup_notify( profile, active );
-		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
-		entry = base_window_get_widget( BASE_WINDOW( instance ), "StartupWMClassEntry" );
-		gtk_widget_set_sensitive( entry, active );
+		if( editable ){
+			na_object_set_startup_notify( profile, active );
+			g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
+			entry = base_window_get_widget( BASE_WINDOW( instance ), "StartupWMClassEntry" );
+			gtk_widget_set_sensitive( entry, active );
 
-	} else {
-		g_signal_handlers_block_by_func(( gpointer ) toggle_button, on_startup_notify_toggled, instance );
-		gtk_toggle_button_set_active( toggle_button, !active );
-		g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, on_startup_notify_toggled, instance );
+		} else {
+			g_signal_handlers_block_by_func(( gpointer ) toggle_button, on_startup_notify_toggled, instance );
+			gtk_toggle_button_set_active( toggle_button, !active );
+			g_signal_handlers_unblock_by_func(( gpointer ) toggle_button, on_startup_notify_toggled, instance );
+		}
 	}
 }
 
@@ -434,8 +437,11 @@ on_startup_class_changed( GtkEntry *entry, NactIExecutionTab *instance )
 			TAB_UPDATABLE_PROP_SELECTED_PROFILE, &profile,
 			NULL );
 
-	text = gtk_entry_get_text( entry );
-	na_object_set_startup_class( profile, text );
+	if( profile ){
+		text = gtk_entry_get_text( entry );
+		na_object_set_startup_class( profile, text );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
+	}
 }
 
 static void
@@ -449,6 +455,9 @@ on_execute_as_changed( GtkEntry *entry, NactIExecutionTab *instance )
 			TAB_UPDATABLE_PROP_SELECTED_PROFILE, &profile,
 			NULL );
 
-	text = gtk_entry_get_text( entry );
-	na_object_set_execute_as( profile, text );
+	if( profile ){
+		text = gtk_entry_get_text( entry );
+		na_object_set_execute_as( profile, text );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, profile, FALSE );
+	}
 }
diff --git a/src/nact/nact-iproperties-tab.c b/src/nact/nact-iproperties-tab.c
index bc6f90b..0a15303 100644
--- a/src/nact/nact-iproperties-tab.c
+++ b/src/nact/nact-iproperties-tab.c
@@ -268,61 +268,60 @@ on_tab_updatable_selection_changed( NactIPropertiesTab *instance, gint count_sel
 		enable_tab = ( count_selected == 1 );
 		nact_main_tab_enable_page( NACT_MAIN_WINDOW( instance ), TAB_PROPERTIES, enable_tab );
 
-		if( enable_tab ){
-			st_on_selection_change = TRUE;
-
-			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" );
-			label_widget = gtk_notebook_get_tab_label( notebook, page );
-			if( item && NA_IS_OBJECT_MENU( item )){
-				gtk_label_set_label( GTK_LABEL( label_widget ), _( "Me_nu" ));
-				gtk_label_set_markup( GTK_LABEL( title_widget ), _( "<b>Menu editable properties</b>" ));
-			} else {
-				gtk_label_set_label( GTK_LABEL( label_widget ), _( "_Action" ));
-				gtk_label_set_markup( GTK_LABEL( title_widget ), _( "<b>Action editable properties</b>" ));
-			}
+		st_on_selection_change = TRUE;
+
+		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" );
+		label_widget = gtk_notebook_get_tab_label( notebook, page );
+
+		if( item && NA_IS_OBJECT_MENU( item )){
+			gtk_label_set_label( GTK_LABEL( label_widget ), _( "Me_nu" ));
+			gtk_label_set_markup( GTK_LABEL( title_widget ), _( "<b>Menu editable properties</b>" ));
+		} else {
+			gtk_label_set_label( GTK_LABEL( label_widget ), _( "_Action" ));
+			gtk_label_set_markup( GTK_LABEL( title_widget ), _( "<b>Action editable 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 );
-			nact_gtk_utils_set_editable( GTK_OBJECT( enabled_button ), editable );
-
-			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 );
-
-			shortcut_button = base_window_get_widget( BASE_WINDOW( instance ), "SuggestedShortcutButton" );
-			shortcut = na_object_get_shortcut( item );
-			if( !shortcut || !strlen( shortcut )){
-				g_free( shortcut );
-				shortcut = g_strdup( NO_SHORTCUT );
-			}
-			gtk_button_set_label( GTK_BUTTON( shortcut_button ), shortcut );
+		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 );
+		nact_gtk_utils_set_editable( GTK_OBJECT( enabled_button ), editable );
+
+		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 );
+
+		shortcut_button = base_window_get_widget( BASE_WINDOW( instance ), "SuggestedShortcutButton" );
+		shortcut = item ? na_object_get_shortcut( item ) : g_strdup( "" );
+		if( !shortcut || !strlen( shortcut )){
 			g_free( shortcut );
-			nact_gtk_utils_set_editable( GTK_OBJECT( shortcut_button ), editable );
+			shortcut = g_strdup( NO_SHORTCUT );
+		}
+		gtk_button_set_label( GTK_BUTTON( shortcut_button ), shortcut );
+		g_free( shortcut );
+		nact_gtk_utils_set_editable( GTK_OBJECT( shortcut_button ), editable );
 
-			/* TODO: don't know how to edit a shortcut for now */
-			gtk_widget_set_sensitive( shortcut_button, FALSE );
+		/* TODO: don't know how to edit a shortcut for now */
+		gtk_widget_set_sensitive( shortcut_button, FALSE );
 
-			/* 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 );
-			nact_gtk_utils_set_editable( GTK_OBJECT( readonly_button ), FALSE );
+		/* 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 );
+		nact_gtk_utils_set_editable( GTK_OBJECT( readonly_button ), FALSE );
 
-			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 );
+		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 );
 
-			display_provider_name( instance, item );
+		display_provider_name( instance, item );
 
-			st_on_selection_change = FALSE;
-		}
+		st_on_selection_change = FALSE;
 	}
 }
 
@@ -349,7 +348,7 @@ static void
 on_enabled_toggled( GtkToggleButton *button, NactIPropertiesTab *instance )
 {
 	static const gchar *thisfn = "nact_iproperties_tab_on_enabled_toggled";
-	NAObjectItem *edited;
+	NAObjectItem *item;
 	gboolean enabled;
 	gboolean editable;
 
@@ -358,17 +357,16 @@ on_enabled_toggled( GtkToggleButton *button, NactIPropertiesTab *instance )
 
 		g_object_get(
 				G_OBJECT( instance ),
-				TAB_UPDATABLE_PROP_SELECTED_ITEM, &edited,
+				TAB_UPDATABLE_PROP_SELECTED_ITEM, &item,
 				TAB_UPDATABLE_PROP_EDITABLE, &editable,
 				NULL );
 
-		if( edited && NA_IS_OBJECT_ITEM( edited )){
-
+		if( item && NA_IS_OBJECT_ITEM( item )){
 			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 );
+				na_object_set_enabled( item, enabled );
+				g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, item, FALSE );
 
 			} else {
 				g_signal_handlers_block_by_func(( gpointer ) button, on_enabled_toggled, instance );
@@ -399,20 +397,22 @@ on_readonly_toggled( GtkToggleButton *button, NactIPropertiesTab *instance )
 static void
 on_description_changed( GtkTextBuffer *buffer, NactIPropertiesTab *instance )
 {
-	NAObjectItem *edited;
+	NAObjectItem *item;
 	GtkTextIter start, end;
 	gchar *text;
 
 	g_object_get(
 			G_OBJECT( instance ),
-			TAB_UPDATABLE_PROP_SELECTED_ITEM, &edited,
+			TAB_UPDATABLE_PROP_SELECTED_ITEM, &item,
 			NULL );
 
-	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 );
+	if( item ){
+		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( item, text );
+		g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, item, FALSE );
+	}
 }
 
 static void
@@ -425,7 +425,9 @@ on_shortcut_clicked( GtkButton *button, NactIPropertiesTab *instance )
 			TAB_UPDATABLE_PROP_SELECTED_ITEM, &item,
 			NULL );
 
-	/*g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, edited, FALSE );*/
+	if( item ){
+		/*g_signal_emit_by_name( G_OBJECT( instance ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, edited, FALSE );*/
+	}
 }
 
 static void
diff --git a/src/nact/nact-main-tab.h b/src/nact/nact-main-tab.h
index 5f9cbff..1822e22 100644
--- a/src/nact/nact-main-tab.h
+++ b/src/nact/nact-main-tab.h
@@ -61,13 +61,13 @@
 enum {
 	TAB_ACTION = 0,
 	TAB_COMMAND,
+	TAB_EXECUTION,
 	TAB_BASENAMES,
 	TAB_MIMETYPES,
 	TAB_FOLDERS,
 	TAB_SCHEMES,
 	TAB_CAPABILITIES,
 	TAB_ENVIRONMENT,
-	TAB_EXECUTION,
 	TAB_PROPERTIES
 };
 
diff --git a/src/nact/nact-match-list.c b/src/nact/nact-match-list.c
index 2e4dbd6..c5da795 100644
--- a/src/nact/nact-match-list.c
+++ b/src/nact/nact-match-list.c
@@ -324,38 +324,35 @@ nact_match_list_on_selection_changed( BaseWindow *window, const gchar *tab_name,
 	enable_tab = ( context != NULL );
 	nact_main_tab_enable_page( NACT_MAIN_WINDOW( data->window ), data->tab_id, enable_tab );
 
-	if( enable_tab ){
+	st_on_selection_change = TRUE;
 
-		st_on_selection_change = TRUE;
+	filters = context ? ( *data->pget )( context ) : NULL;
+	g_debug( "%s: filters=%p (count=%d)", thisfn, ( void * ) filters, filters ? g_slist_length( filters ) : -1 );
 
-		filters = ( *data->pget )( context );
-		g_debug( "%s: filters=%p (count=%d)", thisfn, ( void * ) filters, filters ? g_slist_length( filters ) : -1 );
-
-		model = gtk_tree_view_get_model( data->listview );
-		selection = gtk_tree_view_get_selection( data->listview );
-		gtk_tree_selection_unselect_all( selection );
-		gtk_list_store_clear( GTK_LIST_STORE( model ));
+	model = gtk_tree_view_get_model( data->listview );
+	selection = gtk_tree_view_get_selection( data->listview );
+	gtk_tree_selection_unselect_all( selection );
+	gtk_list_store_clear( GTK_LIST_STORE( model ));
 
-		if( filters ){
-			na_core_utils_slist_dump( filters );
-			g_slist_foreach( filters, ( GFunc ) iter_for_setup, model );
-		}
+	if( filters ){
+		na_core_utils_slist_dump( filters );
+		g_slist_foreach( filters, ( GFunc ) iter_for_setup, model );
+	}
 
-		column = gtk_tree_view_get_column( data->listview, ITEM_COLUMN );
-		nact_gtk_utils_set_editable( GTK_OBJECT( column ), data->editable );
+	column = gtk_tree_view_get_column( data->listview, ITEM_COLUMN );
+	nact_gtk_utils_set_editable( GTK_OBJECT( column ), data->editable );
 
-		nact_gtk_utils_set_editable( GTK_OBJECT( data->addbutton ), data->editable );
-		nact_gtk_utils_set_editable( GTK_OBJECT( data->removebutton ), data->editable );
-		gtk_widget_set_sensitive( data->removebutton, FALSE );
+	nact_gtk_utils_set_editable( GTK_OBJECT( data->addbutton ), data->editable );
+	nact_gtk_utils_set_editable( GTK_OBJECT( data->removebutton ), data->editable );
+	gtk_widget_set_sensitive( data->removebutton, FALSE );
 
-		st_on_selection_change = FALSE;
+	st_on_selection_change = FALSE;
 
-		path = gtk_tree_path_new_first();
-		if( path ){
-			selection = gtk_tree_view_get_selection( data->listview );
-			gtk_tree_selection_select_path( selection, path );
-			gtk_tree_path_free( path );
-		}
+	path = gtk_tree_path_new_first();
+	if( path ){
+		selection = gtk_tree_view_get_selection( data->listview );
+		gtk_tree_selection_select_path( selection, path );
+		gtk_tree_path_free( path );
 	}
 }
 
@@ -432,22 +429,22 @@ on_filter_edited( GtkCellRendererText *renderer, const gchar *path_str, const gc
 	gchar *to_add, *to_remove;
 	GSList *filters;
 
-	model = gtk_tree_view_get_model( data->listview );
-	path = gtk_tree_path_new_from_string( path_str );
-	gtk_tree_model_get_iter( model, &iter, path );
-	gtk_tree_path_free( path );
+	context = nact_main_tab_get_context( NACT_MAIN_WINDOW( data->window ), NULL );
 
-	gtk_tree_model_get( model, &iter,
-			ITEM_COLUMN, &old_text,
-			MUST_MATCH_COLUMN, &must_match,
-			MUST_NOT_MATCH_COLUMN, &must_not_match,
-			-1 );
+	if( context ){
+		model = gtk_tree_view_get_model( data->listview );
+		path = gtk_tree_path_new_from_string( path_str );
+		gtk_tree_model_get_iter( model, &iter, path );
+		gtk_tree_path_free( path );
 
-	gtk_list_store_set( GTK_LIST_STORE( model ), &iter, ITEM_COLUMN, text, -1 );
+		gtk_tree_model_get( model, &iter,
+				ITEM_COLUMN, &old_text,
+				MUST_MATCH_COLUMN, &must_match,
+				MUST_NOT_MATCH_COLUMN, &must_not_match,
+				-1 );
 
-	context = nact_main_tab_get_context( NACT_MAIN_WINDOW( data->window ), NULL );
+		gtk_list_store_set( GTK_LIST_STORE( model ), &iter, ITEM_COLUMN, text, -1 );
 
-	if( context ){
 		filters = ( *data->pget )( context );
 
 		if( filters ){
@@ -469,11 +466,10 @@ on_filter_edited( GtkCellRendererText *renderer, const gchar *path_str, const gc
 
 		( *data->pset )( context, filters );
 		na_core_utils_slist_free( filters );
+		g_free( old_text );
 
 		g_signal_emit_by_name( G_OBJECT( data->window ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
 	}
-
-	g_free( old_text );
 }
 
 static gboolean
@@ -531,18 +527,17 @@ on_must_match_toggled( GtkCellRendererToggle *cell_renderer, gchar *path_str, Ma
 	g_debug( "%s: is_active=%s", thisfn, is_active ? "True":"False" );*/
 
 	if( !gtk_cell_renderer_toggle_get_active( cell_renderer )){
-
-		model = gtk_tree_view_get_model( data->listview );
-		path = gtk_tree_path_new_from_string( path_str );
-		gtk_tree_model_get_iter( model, &iter, path );
-		gtk_tree_path_free( path );
-
-		gtk_tree_model_get( model, &iter, ITEM_COLUMN, &filter, -1 );
-		gtk_list_store_set( GTK_LIST_STORE( model ), &iter, MUST_MATCH_COLUMN, TRUE, MUST_NOT_MATCH_COLUMN, FALSE, -1 );
-
 		context = nact_main_tab_get_context( NACT_MAIN_WINDOW( data->window ), NULL );
 
 		if( context ){
+			model = gtk_tree_view_get_model( data->listview );
+			path = gtk_tree_path_new_from_string( path_str );
+			gtk_tree_model_get_iter( model, &iter, path );
+			gtk_tree_path_free( path );
+
+			gtk_tree_model_get( model, &iter, ITEM_COLUMN, &filter, -1 );
+			gtk_list_store_set( GTK_LIST_STORE( model ), &iter, MUST_MATCH_COLUMN, TRUE, MUST_NOT_MATCH_COLUMN, FALSE, -1 );
+
 			filters = ( *data->pget )( context );
 			if( filters ){
 				to_remove = g_strdup_printf( "!%s", filter );
@@ -580,18 +575,17 @@ on_must_not_match_toggled( GtkCellRendererToggle *cell_renderer, gchar *path_str
 	g_debug( "%s: is_active=%s", thisfn, is_active ? "True":"False" );*/
 
 	if( !gtk_cell_renderer_toggle_get_active( cell_renderer )){
-
-		model = gtk_tree_view_get_model( data->listview );
-		path = gtk_tree_path_new_from_string( path_str );
-		gtk_tree_model_get_iter( model, &iter, path );
-		gtk_tree_path_free( path );
-
-		gtk_tree_model_get( model, &iter, ITEM_COLUMN, &filter, -1 );
-		gtk_list_store_set( GTK_LIST_STORE( model ), &iter, MUST_MATCH_COLUMN, FALSE, MUST_NOT_MATCH_COLUMN, TRUE, -1 );
-
 		context = nact_main_tab_get_context( NACT_MAIN_WINDOW( data->window ), NULL );
 
 		if( context ){
+			model = gtk_tree_view_get_model( data->listview );
+			path = gtk_tree_path_new_from_string( path_str );
+			gtk_tree_model_get_iter( model, &iter, path );
+			gtk_tree_path_free( path );
+
+			gtk_tree_model_get( model, &iter, ITEM_COLUMN, &filter, -1 );
+			gtk_list_store_set( GTK_LIST_STORE( model ), &iter, MUST_MATCH_COLUMN, FALSE, MUST_NOT_MATCH_COLUMN, TRUE, -1 );
+
 			filters = ( *data->pget )( context );
 
 			if( filters ){
@@ -602,11 +596,10 @@ on_must_not_match_toggled( GtkCellRendererToggle *cell_renderer, gchar *path_str
 			filters = g_slist_prepend( filters, to_add );
 			( *data->pset )( context, filters );
 			na_core_utils_slist_free( filters );
+			g_free( filter );
 
 			g_signal_emit_by_name( G_OBJECT( data->window ), TAB_UPDATABLE_SIGNAL_ITEM_UPDATED, context, FALSE );
 		}
-
-		g_free( filter );
 	}
 }
 
diff --git a/src/nact/nautilus-actions-config-tool.ui b/src/nact/nautilus-actions-config-tool.ui
index 552b7ff..c5af0f0 100644
--- a/src/nact/nautilus-actions-config-tool.ui
+++ b/src/nact/nautilus-actions-config-tool.ui
@@ -763,6 +763,288 @@ Defining several profiles lets you have several commands, each applying with a d
                       </packing>
                     </child>
                     <child>
+                      <object class="GtkVBox" id="vbox15">
+                        <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="frame1">
+                            <property name="visible">True</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment1">
+                                <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="table9">
+                                    <property name="visible">True</property>
+                                    <property name="n_rows">4</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">6</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="ExecutionModeNormal">
+                                        <property name="label" translatable="yes">_Normal</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="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="ExecutionModeTerminal">
+                                        <property name="label" translatable="yes">In a _terminal</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>
+                                        <property name="group">ExecutionModeNormal</property>
+                                      </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>
+                                        <property name="x_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="ExecutionModeEmbedded">
+                                        <property name="label" translatable="yes">_Embedded</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>
+                                        <property name="group">ExecutionModeNormal</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="x_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="ExecutionModeDisplayOutput">
+                                        <property name="label" translatable="yes">_Display output</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>
+                                        <property name="group">ExecutionModeNormal</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="x_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label45">
+                                        <property name="visible">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="x_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label40">
+                                <property name="visible">True</property>
+                                <property name="xpad">5</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Execution mode&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>
+                          <object class="GtkFrame" id="frame3">
+                            <property name="visible">True</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment3">
+                                <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="table8">
+                                    <property name="visible">True</property>
+                                    <property name="n_rows">2</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">6</property>
+                                    <property name="row_spacing">3</property>
+                                    <child>
+                                      <object class="GtkCheckButton" id="StartupNotifyButton">
+                                        <property name="label" translatable="yes">_Startup notify</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>
+                                      <object class="GtkLabel" id="label43">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">1</property>
+                                        <property name="label" translatable="yes">Startup Window Manager _class :</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="GtkEntry" id="StartupWMClassEntry">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="invisible_char">&#x25CF;</property>
+                                      </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>
+                                      <placeholder/>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label42">
+                                <property name="visible">True</property>
+                                <property name="xpad">5</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Startup mode&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>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame2">
+                            <property name="visible">True</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment2">
+                                <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="GtkHBox" id="hbox13">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">6</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label44">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">1</property>
+                                        <property name="label" translatable="yes">Executer as _user :</property>
+                                        <property name="use_underline">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkEntry" id="ExecuteAsEntry">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="invisible_char">&#x25CF;</property>
+                                      </object>
+                                      <packing>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label41">
+                                <property name="visible">True</property>
+                                <property name="xpad">5</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Execute as user&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">2</property>
+                      </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 define how your command will be executed.</property>
+                        <property name="label" translatable="yes">E_xecution</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="position">5</property>
+                        <property name="tab_fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
                       <object class="GtkVBox" id="vbox40">
                         <property name="visible">True</property>
                         <property name="border_width">6</property>
@@ -909,7 +1191,7 @@ Defining several profiles lets you have several commands, each applying with a d
                         </child>
                       </object>
                       <packing>
-                        <property name="position">2</property>
+                        <property name="position">3</property>
                       </packing>
                     </child>
                     <child type="tab">
@@ -1052,7 +1334,7 @@ Defining several profiles lets you have several commands, each applying with a d
                         </child>
                       </object>
                       <packing>
-                        <property name="position">3</property>
+                        <property name="position">4</property>
                       </packing>
                     </child>
                     <child type="tab">
@@ -1221,7 +1503,7 @@ Defining several profiles lets you have several commands, each applying with a d
                         </child>
                       </object>
                       <packing>
-                        <property name="position">4</property>
+                        <property name="position">5</property>
                       </packing>
                     </child>
                     <child type="tab">
@@ -1394,7 +1676,7 @@ Defining several profiles lets you have several commands, each applying with a d
                         </child>
                       </object>
                       <packing>
-                        <property name="position">5</property>
+                        <property name="position">6</property>
                       </packing>
                     </child>
                     <child type="tab">
@@ -1537,7 +1819,7 @@ Defining several profiles lets you have several commands, each applying with a d
                         </child>
                       </object>
                       <packing>
-                        <property name="position">6</property>
+                        <property name="position">7</property>
                       </packing>
                     </child>
                     <child type="tab">
@@ -1932,7 +2214,7 @@ Defining several profiles lets you have several commands, each applying with a d
                         </child>
                       </object>
                       <packing>
-                        <property name="position">7</property>
+                        <property name="position">8</property>
                       </packing>
                     </child>
                     <child type="tab">
@@ -1947,288 +2229,6 @@ Defining several profiles lets you have several commands, each applying with a d
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkVBox" id="vbox15">
-                        <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="frame1">
-                            <property name="visible">True</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">in</property>
-                            <child>
-                              <object class="GtkAlignment" id="alignment1">
-                                <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="table9">
-                                    <property name="visible">True</property>
-                                    <property name="n_rows">4</property>
-                                    <property name="n_columns">2</property>
-                                    <property name="column_spacing">6</property>
-                                    <child>
-                                      <object class="GtkRadioButton" id="ExecutionModeNormal">
-                                        <property name="label" translatable="yes">_Normal</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="active">True</property>
-                                        <property name="draw_indicator">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="ExecutionModeTerminal">
-                                        <property name="label" translatable="yes">In a _terminal</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>
-                                        <property name="group">ExecutionModeNormal</property>
-                                      </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>
-                                        <property name="x_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="ExecutionModeEmbedded">
-                                        <property name="label" translatable="yes">_Embedded</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>
-                                        <property name="group">ExecutionModeNormal</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="x_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="ExecutionModeDisplayOutput">
-                                        <property name="label" translatable="yes">_Display output</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>
-                                        <property name="group">ExecutionModeNormal</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="x_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label45">
-                                        <property name="visible">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="x_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <placeholder/>
-                                    </child>
-                                    <child>
-                                      <placeholder/>
-                                    </child>
-                                    <child>
-                                      <placeholder/>
-                                    </child>
-                                  </object>
-                                </child>
-                              </object>
-                            </child>
-                            <child type="label">
-                              <object class="GtkLabel" id="label40">
-                                <property name="visible">True</property>
-                                <property name="xpad">5</property>
-                                <property name="label" translatable="yes">&lt;b&gt;Execution mode&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>
-                          <object class="GtkFrame" id="frame3">
-                            <property name="visible">True</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">in</property>
-                            <child>
-                              <object class="GtkAlignment" id="alignment3">
-                                <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="table8">
-                                    <property name="visible">True</property>
-                                    <property name="n_rows">2</property>
-                                    <property name="n_columns">2</property>
-                                    <property name="column_spacing">6</property>
-                                    <property name="row_spacing">3</property>
-                                    <child>
-                                      <object class="GtkCheckButton" id="StartupNotifyButton">
-                                        <property name="label" translatable="yes">_Startup notify</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>
-                                      <object class="GtkLabel" id="label43">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">1</property>
-                                        <property name="label" translatable="yes">Startup Window Manager _class :</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="GtkEntry" id="StartupWMClassEntry">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">&#x25CF;</property>
-                                      </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>
-                                      <placeholder/>
-                                    </child>
-                                  </object>
-                                </child>
-                              </object>
-                            </child>
-                            <child type="label">
-                              <object class="GtkLabel" id="label42">
-                                <property name="visible">True</property>
-                                <property name="xpad">5</property>
-                                <property name="label" translatable="yes">&lt;b&gt;Startup mode&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>
-                        </child>
-                        <child>
-                          <object class="GtkFrame" id="frame2">
-                            <property name="visible">True</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">in</property>
-                            <child>
-                              <object class="GtkAlignment" id="alignment2">
-                                <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="GtkHBox" id="hbox13">
-                                    <property name="visible">True</property>
-                                    <property name="spacing">6</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label44">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">1</property>
-                                        <property name="label" translatable="yes">Executer as _user :</property>
-                                        <property name="use_underline">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkEntry" id="ExecuteAsEntry">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">&#x25CF;</property>
-                                      </object>
-                                      <packing>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                </child>
-                              </object>
-                            </child>
-                            <child type="label">
-                              <object class="GtkLabel" id="label41">
-                                <property name="visible">True</property>
-                                <property name="xpad">5</property>
-                                <property name="label" translatable="yes">&lt;b&gt;Execute as user&lt;/b&gt;</property>
-                                <property name="use_markup">True</property>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="position">8</property>
-                      </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">E_xecution</property>
-                        <property name="use_underline">True</property>
-                      </object>
-                      <packing>
-                        <property name="position">5</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>



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