[nautilus-actions] Allow to edit an action without using the 'profile' stuff



commit 51bbca07c8e659bfd7ab48eb22a3b880505e006e
Author: Pierre Wieser <pwieser trychlos org>
Date:   Mon May 25 23:05:07 2009 +0200

    Allow to edit an action without using the 'profile' stuff
---
 ChangeLog                          |   17 +
 nact/Makefile.am                   |    2 +
 nact/nact-action-editor.c          |  406 ++++++++++++
 nact/nact-action-editor.h          |   38 ++
 nact/nact-editor.c                 |   56 ++-
 nact/nact-editor.h                 |    7 +-
 nact/nact-profile-editor.c         |  157 +++--
 nact/nact-profile-editor.h         |   23 +
 nact/nact-utils.c                  |   26 +-
 nact/nact-utils.h                  |   20 +-
 nact/nact.c                        |   78 ++-
 nact/nautilus-actions-config.glade | 1232 +++++++++++++++++++++++++++++++++++-
 po/ChangeLog                       |    8 +-
 po/POTFILES.in                     |    1 +
 14 files changed, 1948 insertions(+), 123 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 353b3db..5d13006 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -24,6 +24,23 @@
 	nautilus_actions_config_action_get_profiles_count,
 	nautilus_actions_config_action_dump: new functions.
 
+	* nact/nact-action-editor.c:
+	* nact/nact-action-editor.h: New files to be able to edit an action
+	without having to deal with the profile stuff.
+
+	* nact/nautilus-actions-config.glade:
+	Add EditActionDialogExt dialog.
+
+	* nact/Makefile.am:
+	* nact/nact-editor.c:
+	* nact/nact-editor.h:
+	* nact/nact-profile-editor.c:
+	* nact/nact-profile-editor.h:
+	* nact/nact-utils.c:
+	* nact/nact-utils.h:
+	* po/POTFILES.in:
+	* po/ChangeLog: Updated accordingly.
+
 2009-05-18 Pierre Wieser <pwieser trychlos org>
 
 	Fix Glade regression I introduced myself when ansi-fying C sources !
diff --git a/nact/Makefile.am b/nact/Makefile.am
index 5ebc9ec..f815d3b 100644
--- a/nact/Makefile.am
+++ b/nact/Makefile.am
@@ -48,6 +48,8 @@ nautilus_actions_config_SOURCES = \
 	nact-profile-editor.h								\
 	nact-editor.c										\
 	nact-editor.h										\
+	nact-action-editor.c								\
+	nact-action-editor.h								\
 	$(NULL)
 
 nautilus_actions_config_LDADD = \
diff --git a/nact/nact-action-editor.c b/nact/nact-action-editor.c
new file mode 100644
index 0000000..61bc434
--- /dev/null
+++ b/nact/nact-action-editor.c
@@ -0,0 +1,406 @@
+/*
+ * Nautilus Actions
+ *
+ * Copyright (C) 2005 The GNOME Foundation
+ * Copyright (C) 2006, 2007, 2008 Frederic Ruaudel and others (see AUTHORS)
+ * Copyright (C) 2009 Pierre Wieser and others (see AUTHORS)
+ *
+ * This Program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this Library; see the file COPYING.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors:
+ *   Frederic Ruaudel <grumz grumz net>
+ *   Rodrigo Moya <rodrigo gnome-db org>
+ *   Pierre Wieser <pwieser trychlos org>
+ *   ... and many others (see AUTHORS)
+ */
+
+#include <string.h>
+#include <glib/gi18n.h>
+#include <gtk/gtkdialog.h>
+#include <gtk/gtkentry.h>
+#include <gtk/gtktogglebutton.h>
+#include <glade/glade-xml.h>
+#include <libnautilus-actions/nautilus-actions-config-gconf-writer.h>
+#include "nact-editor.h"
+#include "nact-action-editor.h"
+#include "nact-profile-editor.h"
+#include "nact-utils.h"
+#include "nact-prefs.h"
+#include "nact.h"
+
+enum {
+	ICON_STOCK_COLUMN = 0,
+	ICON_LABEL_COLUMN,
+	ICON_N_COLUMN
+};
+
+/* gui callback functions */
+void action_legend_button_toggled_cb (GtkToggleButton *button, gpointer user_data);
+void action_field_changed_cb (GObject *object, gpointer user_data);
+void action_icon_browse_button_clicked_cb (GtkButton *button, gpointer user_data);
+void action_path_browse_button_clicked_cb (GtkButton *button, gpointer user_data);
+void action_legend_button_toggled_cb (GtkToggleButton *button, gpointer user_data);
+void action_add_scheme_clicked (GtkWidget* widget, gpointer user_data);
+void action_remove_scheme_clicked (GtkWidget* widget, gpointer user_data);
+
+static void     preview_icon_changed_cb (GtkEntry* icon_entry, gpointer user_data);
+static gboolean open_action_editor( NautilusActionsConfigAction *action, const gchar* profile_name, gboolean is_new );
+static void     update_example_label (void);
+
+void
+action_legend_button_toggled_cb (GtkToggleButton *button, gpointer user_data)
+{
+	if (gtk_toggle_button_get_active (button))
+	{
+		nact_show_legend_dialog( GLADE_EDIT_ACTION_DIALOG_WIDGET );
+	}
+	else
+	{
+		nact_hide_legend_dialog( GLADE_EDIT_ACTION_DIALOG_WIDGET );
+	}
+}
+
+static void
+preview_icon_changed_cb (GtkEntry* icon_entry, gpointer user_data)
+{
+	nact_preview_icon_changed_cb( icon_entry, user_data, GLADE_EDIT_ACTION_DIALOG_WIDGET );
+}
+
+static void
+update_example_label (void)
+{
+	nact_update_example_label( GLADE_EDIT_ACTION_DIALOG_WIDGET );
+}
+
+void
+action_icon_browse_button_clicked_cb (GtkButton *button, gpointer user_data)
+{
+	nact_icon_browse_button_clicked_cb( button, user_data, GLADE_EDIT_ACTION_DIALOG_WIDGET );
+}
+
+void
+action_field_changed_cb (GObject *object, gpointer user_data)
+{
+	GtkWidget* editor = nact_get_glade_widget_from( GLADE_EDIT_ACTION_DIALOG_WIDGET, GLADE_EDIT_ACTION_DIALOG_WIDGET );
+	GtkWidget* command_path = nact_get_glade_widget_from ("CommandPathEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	const gchar *path = gtk_entry_get_text (GTK_ENTRY (command_path));
+	const gchar *label = gtk_entry_get_text( GTK_ENTRY( nact_get_glade_widget_from ("MenuLabelEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET )));
+
+	update_example_label ();
+
+	if (path && strlen (path) > 0 && label && strlen( label ))
+		gtk_dialog_set_response_sensitive (GTK_DIALOG (editor), GTK_RESPONSE_OK, TRUE);
+	else
+		gtk_dialog_set_response_sensitive (GTK_DIALOG (editor), GTK_RESPONSE_OK, FALSE);
+}
+
+void
+action_path_browse_button_clicked_cb (GtkButton *button, gpointer user_data)
+{
+	nact_path_browse_button_clicked_cb( button, user_data, GLADE_EDIT_ACTION_DIALOG_WIDGET );
+}
+
+void
+action_add_scheme_clicked (GtkWidget* widget, gpointer user_data)
+{
+	nact_add_scheme_clicked( widget, user_data, GLADE_EDIT_ACTION_DIALOG_WIDGET );
+}
+
+void
+action_remove_scheme_clicked (GtkWidget* widget, gpointer user_data)
+{
+	nact_remove_scheme_clicked( widget, user_data, GLADE_EDIT_ACTION_DIALOG_WIDGET );
+}
+
+static gboolean
+open_action_editor( NautilusActionsConfigAction *action, const gchar* profile_name, gboolean is_new )
+{
+	static const char *thisfn = "open_action_editor";
+	gboolean ret = FALSE;
+	static gboolean init = FALSE;
+	GtkWidget* editor;
+	GladeXML *gui;
+	NautilusActionsConfigGconfWriter *config;
+	GList* aligned_widgets = NULL;
+	GList* iter;
+	GSList* list;
+	GtkSizeGroup* label_size_group;
+	GtkSizeGroup* button_size_group;
+	GtkWidget *scheme_listview;
+	GtkWidget *menu_label, *menu_tooltip, *menu_icon;
+	GtkWidget *command_path, *command_params, *test_patterns, *match_case, *test_mimetypes;
+	GtkWidget *only_files, *only_folders, *both, *accept_multiple;
+	gint width, height /*, x, y*/;
+	GtkTreeModel* scheme_model;
+	static NactCallbackData *scheme_data = NULL;
+
+	g_debug( "%s: action=%p (%s), profile=%s, is_new=%s, init=%s",
+			thisfn, action, action->label, profile_name, is_new ? "True":"False", init ? "True":"False" );
+	if (!init)
+	{
+		/* load the GUI */
+		gui = nact_get_glade_xml_object (GLADE_EDIT_ACTION_DIALOG_WIDGET);
+		if (!gui) {
+			g_error (_("Could not load interface for Nautilus Actions Config Tool"));
+			return FALSE;
+		}
+		g_debug( "%s: dialog successfully loaded", thisfn );
+
+		glade_xml_signal_autoconnect(gui);
+
+		scheme_data = g_new0( NactCallbackData, 1 );
+		scheme_data->dialog = GLADE_EDIT_ACTION_DIALOG_WIDGET;
+		scheme_data->field_changed_cb = action_field_changed_cb;
+		scheme_data->update_example_label = update_example_label;
+		nact_create_schemes_selection_list ( scheme_data );
+
+		menu_icon = nact_get_glade_widget_from ("MenuIconComboBoxEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+
+		g_assert (menu_icon != NULL);
+
+		g_signal_connect (G_OBJECT (GTK_BIN (menu_icon)->child), "changed",
+							   G_CALLBACK (preview_icon_changed_cb), NULL);
+
+		nact_fill_menu_icon_combo_list_of (GTK_COMBO_BOX_ENTRY (menu_icon));
+
+		/* TODO: replace deprecated gtk_tooltips_set_tip by its equivalent */
+		/*gtk_tooltips_set_tip (gtk_tooltips_new (), GTK_WIDGET (GTK_BIN (menu_icon)->child),
+									 _("Icon of the menu item in the Nautilus popup menu"), "");*/
+
+		aligned_widgets = nact_get_glade_widget_prefix_from ("LabelAlign", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+		label_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+		for (iter = aligned_widgets; iter; iter = iter->next)
+		{
+			gtk_size_group_add_widget (label_size_group, GTK_WIDGET (iter->data));
+		}
+
+		aligned_widgets = nact_get_glade_widget_prefix_from ("CLabelAlign", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+		label_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+		for (iter = aligned_widgets; iter; iter = iter->next)
+		{
+			gtk_size_group_add_widget (label_size_group, GTK_WIDGET (iter->data));
+		}
+		button_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+		gtk_size_group_add_widget (button_size_group,
+											nact_get_glade_widget_from ("IconBrowseButton",
+																		GLADE_EDIT_ACTION_DIALOG_WIDGET));
+		gtk_size_group_add_widget (button_size_group,
+											nact_get_glade_widget_from ("PathBrowseButton",
+																		GLADE_EDIT_ACTION_DIALOG_WIDGET));
+		gtk_size_group_add_widget (button_size_group,
+											nact_get_glade_widget_from ("LegendButton",
+																		GLADE_EDIT_ACTION_DIALOG_WIDGET));
+		/* free memory */
+		g_object_unref (gui);
+		init = TRUE;
+	}
+
+	editor = nact_get_glade_widget_from( GLADE_EDIT_ACTION_DIALOG_WIDGET, GLADE_EDIT_ACTION_DIALOG_WIDGET );
+
+	nautilus_actions_config_action_dump( action );
+
+	NautilusActionsConfigActionProfile *action_profile =
+		nautilus_actions_config_action_get_profile( action, profile_name );
+	g_debug( "%s: action_profile=%p", thisfn, action_profile );
+
+	if (is_new)
+	{
+		gtk_window_set_title (GTK_WINDOW (editor), _("Add a new action"));
+	}
+	else
+	{
+		gchar* title = g_strdup_printf (_("Edit action \"%s\""), action->label );
+		gtk_window_set_title (GTK_WINDOW (editor), title);
+		g_free (title);
+	}
+
+	/* Get the default dialog size */
+	gtk_window_get_default_size (GTK_WINDOW (editor), &width, &height);
+
+	/* FIXME: update preference data for profile editor dialog
+
+	// Override with preferred one, if any
+	nact_prefs_get_edit_dialog_size (&width, &height);
+
+	gtk_window_resize (GTK_WINDOW (editor), width, height);
+
+	if (nact_prefs_get_edit_dialog_position (&x, &y))
+	{
+		gtk_window_move (GTK_WINDOW (editor), x, y);
+	}
+	*/
+
+	menu_label = nact_get_glade_widget_from ("MenuLabelEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_entry_set_text (GTK_ENTRY (menu_label), action->label);
+
+	menu_tooltip = nact_get_glade_widget_from ("MenuTooltipEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_entry_set_text (GTK_ENTRY (menu_tooltip), action->tooltip);
+
+	menu_icon = nact_get_glade_widget_from ("MenuIconComboBoxEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_entry_set_text (GTK_ENTRY (GTK_BIN (menu_icon)->child), action->icon);
+
+	command_path = nact_get_glade_widget_from ("CommandPathEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_entry_set_text (GTK_ENTRY (command_path), action_profile->path);
+
+	command_params = nact_get_glade_widget_from ("CommandParamsEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_entry_set_text (GTK_ENTRY (command_params), action_profile->parameters);
+
+	test_patterns = nact_get_glade_widget_from ("PatternEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	nact_set_action_match_string_list (GTK_ENTRY (test_patterns), action_profile->basenames, "*");
+
+	match_case = nact_get_glade_widget_from ("MatchCaseButton", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (match_case), action_profile->match_case);
+
+	test_mimetypes = nact_get_glade_widget_from ("MimeTypeEntry", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+
+	nact_set_action_match_string_list (GTK_ENTRY (test_mimetypes), action_profile->mimetypes, "*/*");
+
+	only_folders = nact_get_glade_widget_from ("OnlyFoldersButton", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (only_folders), action_profile->is_dir);
+
+	only_files = nact_get_glade_widget_from ("OnlyFilesButton", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (only_files), action_profile->is_file);
+
+	both = nact_get_glade_widget_from ("BothButton", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (both), action_profile->is_file && action_profile->is_dir);
+
+	accept_multiple = nact_get_glade_widget_from ("AcceptMultipleButton", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (accept_multiple), action_profile->accept_multiple_files);
+
+	scheme_listview = nact_get_glade_widget_from ("SchemesTreeView", GLADE_EDIT_ACTION_DIALOG_WIDGET);
+	scheme_model = gtk_tree_view_get_model (GTK_TREE_VIEW (scheme_listview));
+	/*g_assert( GTK_IS_TREE_MODEL( scheme_model ));*/
+	gtk_tree_model_foreach( scheme_model, (GtkTreeModelForeachFunc) nact_reset_schemes_list, NULL);
+	/*g_debug( "after tree model foreach" );*/
+	g_slist_foreach (action_profile->schemes, (GFunc) nact_set_action_schemes, scheme_model);
+
+	/* default is to not enable the OK button */
+	gtk_dialog_set_response_sensitive (GTK_DIALOG (editor), GTK_RESPONSE_OK, FALSE);
+
+	/*update_example_label ();*/
+	action_field_changed_cb( NULL, NULL );
+
+	/* run the dialog */
+	switch (gtk_dialog_run (GTK_DIALOG (editor))) {
+	case GTK_RESPONSE_OK :
+		nautilus_actions_config_action_set_label (action, (gchar*)gtk_entry_get_text (GTK_ENTRY (menu_label)));
+		nautilus_actions_config_action_set_tooltip (action, gtk_entry_get_text (GTK_ENTRY (menu_tooltip)));
+		nautilus_actions_config_action_set_icon (action, gtk_entry_get_text (GTK_ENTRY (GTK_BIN (menu_icon)->child)));
+
+		nautilus_actions_config_action_profile_set_path (action_profile, gtk_entry_get_text (GTK_ENTRY (command_path)));
+		nautilus_actions_config_action_profile_set_parameters (action_profile, gtk_entry_get_text (GTK_ENTRY (command_params)));
+		g_debug( "%s: parameters='%s'", thisfn, action_profile->parameters );
+
+		list = nact_get_action_match_string_list (gtk_entry_get_text (GTK_ENTRY (test_patterns)), "*");
+		nautilus_actions_config_action_profile_set_basenames (action_profile, list);
+		g_slist_foreach (list, (GFunc) g_free, NULL);
+		g_slist_free (list);
+
+		nautilus_actions_config_action_profile_set_match_case (
+			action_profile, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (match_case)));
+
+		list = nact_get_action_match_string_list (gtk_entry_get_text (GTK_ENTRY (test_mimetypes)), "*/*");
+		nautilus_actions_config_action_profile_set_mimetypes (action_profile, list);
+		g_slist_foreach (list, (GFunc) g_free, NULL);
+		g_slist_free (list);
+
+		if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (only_files))) {
+			nautilus_actions_config_action_profile_set_is_file (action_profile, TRUE);
+			nautilus_actions_config_action_profile_set_is_dir (action_profile, FALSE);
+		} else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (only_folders))) {
+			nautilus_actions_config_action_profile_set_is_file (action_profile, FALSE);
+			nautilus_actions_config_action_profile_set_is_dir (action_profile, TRUE);
+		} else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (both))) {
+			nautilus_actions_config_action_profile_set_is_file (action_profile, TRUE);
+			nautilus_actions_config_action_profile_set_is_dir (action_profile, TRUE);
+		}
+
+		nautilus_actions_config_action_profile_set_accept_multiple (
+			action_profile, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (accept_multiple)));
+
+		list = NULL;
+		gtk_tree_model_foreach (scheme_model, (GtkTreeModelForeachFunc)nact_utils_get_action_schemes_list, &list);
+		nautilus_actions_config_action_profile_set_schemes (action_profile, list);
+		g_slist_foreach (list, (GFunc) g_free, NULL);
+		g_slist_free (list);
+
+		config = nautilus_actions_config_gconf_writer_get ();
+		if (is_new)
+		{
+			/*if( nautilus_actions_config_action_add_profile (action, profile_name, action_profile, NULL)){*/
+				/* TODO: If necessary deal with the GError returned */
+				ret = nautilus_actions_config_add_action (NAUTILUS_ACTIONS_CONFIG (config), action, NULL);
+			/*}*/
+		}
+		else
+		{
+			/*nautilus_actions_config_action_replace_profile (action, profile_name, action_profile);*/
+			ret = nautilus_actions_config_update_action (NAUTILUS_ACTIONS_CONFIG (config), action);
+		}
+		g_object_unref (config);
+		break;
+	case GTK_RESPONSE_DELETE_EVENT:
+	case GTK_RESPONSE_CANCEL :
+		ret = FALSE;
+		break;
+	}
+
+	/*
+	// Save preferences
+	list = NULL;
+	gtk_tree_model_foreach (scheme_model, (GtkTreeModelForeachFunc)get_all_schemes_list, &list);
+	nact_prefs_set_schemes_list (list);
+	g_slist_foreach (list, (GFunc) g_free, NULL);
+	g_slist_free (list);
+
+	nact_prefs_set_edit_dialog_size (GTK_WINDOW (editor));
+	nact_prefs_set_edit_dialog_position (GTK_WINDOW (editor));
+	*/
+
+	nact_hide_legend_dialog( GLADE_EDIT_ACTION_DIALOG_WIDGET );
+	gtk_widget_hide (editor);
+
+	return ret;
+}
+
+gboolean
+nact_action_editor_new( void )
+{
+	static const gchar* new_profile_name = NAUTILUS_ACTIONS_DEFAULT_PROFILE_NAME;
+
+	NautilusActionsConfigAction *action = nautilus_actions_config_action_new_default ();
+
+	gboolean ret = open_action_editor( action, new_profile_name, TRUE );
+
+	nautilus_actions_config_action_free (action);
+
+	return( ret );
+}
+
+gboolean
+nact_action_editor_edit( NautilusActionsConfigAction *action )
+{
+	gchar* profile_name = nautilus_actions_config_action_get_first_profile_name( action );
+
+	NautilusActionsConfigAction *action_dup = nautilus_actions_config_action_dup( action );
+
+	gboolean ret = open_action_editor( action_dup, profile_name, FALSE );
+
+	nautilus_actions_config_action_free( action_dup );
+	g_free( profile_name );
+
+	return( ret );
+}
diff --git a/nact/nact-action-editor.h b/nact/nact-action-editor.h
new file mode 100644
index 0000000..cf8e409
--- /dev/null
+++ b/nact/nact-action-editor.h
@@ -0,0 +1,38 @@
+/*
+ * Nautilus Actions
+ *
+ * Copyright (C) 2005 The GNOME Foundation
+ * Copyright (C) 2006, 2007, 2008 Frederic Ruaudel and others (see AUTHORS)
+ * Copyright (C) 2009 Pierre Wieser and others (see AUTHORS)
+ *
+ * This Program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this Library; see the file COPYING.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors:
+ *   Frederic Ruaudel <grumz grumz net>
+ *   Rodrigo Moya <rodrigo gnome-db org>
+ *   Pierre Wieser <pwieser trychlos org>
+ *   ... and many others (see AUTHORS)
+ */
+
+#ifndef __NACT_ACTION_EDITOR_H__
+#define __NACT_ACTION_EDITOR_H__
+
+#include <libnautilus-actions/nautilus-actions-config.h>
+
+gboolean nact_action_editor_new( void );
+gboolean nact_action_editor_edit( NautilusActionsConfigAction *action );
+
+#endif /* __NACT_ACTION_EDITOR_H__ */
diff --git a/nact/nact-editor.c b/nact/nact-editor.c
index cbe4a5e..9202ed8 100644
--- a/nact/nact-editor.c
+++ b/nact/nact-editor.c
@@ -48,7 +48,10 @@ void add_prof_button_clicked_cb (GtkButton *button, gpointer user_data);
 void copy_prof_button_clicked_cb (GtkButton *button, gpointer user_data);
 void edit_prof_button_clicked_cb (GtkButton *button, gpointer user_data);
 
-static void nact_editor_fill_profiles_list (GtkWidget *list, NautilusActionsConfigAction* action);
+static gchar *strip_underscore( const gchar *text );
+static void   preview_icon_changed_cb (GtkEntry* icon_entry, gpointer user_data);
+static void   editor_fill_profiles_list (GtkWidget *list, NautilusActionsConfigAction* action);
+static void   editor_setup_profiles_list (GtkWidget *list, NautilusActionsConfigAction* action);
 
 enum {
 	ICON_STOCK_COLUMN = 0,
@@ -95,10 +98,16 @@ field_changed_cb (GObject *object, gpointer user_data)
 void
 icon_browse_button_clicked_cb (GtkButton *button, gpointer user_data)
 {
+	nact_icon_browse_button_clicked_cb( button, user_data, GLADE_EDIT_DIALOG_WIDGET );
+}
+
+void
+nact_icon_browse_button_clicked_cb( GtkButton *button, gpointer user_data, const gchar* dialog )
+{
 	gchar* last_dir;
 	gchar* filename;
 	GtkWidget* filechooser = nact_get_glade_widget_from ("FileChooserDialog", GLADE_FILECHOOSER_DIALOG_WIDGET);
-	GtkWidget* combo = nact_get_glade_widget_from ("MenuIconComboBoxEntry", GLADE_EDIT_DIALOG_WIDGET);
+	GtkWidget* combo = nact_get_glade_widget_from ("MenuIconComboBoxEntry", dialog );
 	gboolean set_current_location = FALSE;
 
 	filename = (gchar*)gtk_entry_get_text (GTK_ENTRY (GTK_BIN (combo)->child));
@@ -209,9 +218,16 @@ static GtkTreeModel* create_stock_icon_model (void)
 	return GTK_TREE_MODEL (model);
 }
 
-static void preview_icon_changed_cb (GtkEntry* icon_entry, gpointer user_data)
+static void
+preview_icon_changed_cb (GtkEntry* icon_entry, gpointer user_data)
+{
+	nact_preview_icon_changed_cb( icon_entry, user_data, GLADE_EDIT_DIALOG_WIDGET );
+}
+
+void
+nact_preview_icon_changed_cb( GtkEntry* icon_entry, gpointer user_data, const gchar *dialog )
 {
-	GtkWidget* image = nact_get_glade_widget_from ("IconImage", GLADE_EDIT_DIALOG_WIDGET);
+	GtkWidget* image = nact_get_glade_widget_from ("IconImage", dialog);
 	const gchar* icon_name = gtk_entry_get_text (icon_entry);
 	GtkStockItem stock_item;
 	GdkPixbuf* icon = NULL;
@@ -258,7 +274,8 @@ static void preview_icon_changed_cb (GtkEntry* icon_entry, gpointer user_data)
 	}
 }
 
-static void fill_menu_icon_combo_list_of (GtkComboBoxEntry* combo)
+void
+nact_fill_menu_icon_combo_list_of (GtkComboBoxEntry* combo)
 {
 	GtkCellRenderer *cell_renderer_pix;
 	GtkCellRenderer *cell_renderer_text;
@@ -343,7 +360,7 @@ profile_name_edited_cb (GtkCellRendererText *cell,
 }
 
 static void
-nact_editor_fill_profiles_list (GtkWidget *list, NautilusActionsConfigAction* action)
+editor_fill_profiles_list (GtkWidget *list, NautilusActionsConfigAction* action)
 {
 	GSList *profile_names = NULL, *l;
 	GtkListStore *model = GTK_LIST_STORE(gtk_tree_view_get_model (GTK_TREE_VIEW (list)));
@@ -380,11 +397,11 @@ add_prof_button_clicked_cb (GtkButton *button, gpointer user_data)
 	GtkWidget* profile_list = nact_get_glade_widget_from ("ProfilesList", GLADE_EDIT_DIALOG_WIDGET);
 	NautilusActionsConfigAction* action = (NautilusActionsConfigAction*)g_object_get_data (G_OBJECT (profile_list), "action");
 
-	printf ("Action label : %s\n", action->label);
+	/*printf ("Action label : %s\n", action->label);*/
 
 	if (nact_profile_editor_new_profile (action))
 	{
-		nact_editor_fill_profiles_list (nact_get_glade_widget_from ("ProfilesList", GLADE_EDIT_DIALOG_WIDGET), action);
+		editor_fill_profiles_list (nact_get_glade_widget_from ("ProfilesList", GLADE_EDIT_DIALOG_WIDGET), action);
 		field_changed_cb (G_OBJECT (profile_list), NULL);
 	}
 }
@@ -398,7 +415,7 @@ edit_prof_button_clicked_cb (GtkButton *button, gpointer user_data)
 	GtkWidget *nact_profiles_list = nact_get_glade_widget_from ("ProfilesList", GLADE_EDIT_DIALOG_WIDGET);
 	NautilusActionsConfigAction* action = (NautilusActionsConfigAction*)g_object_get_data (G_OBJECT (nact_profiles_list), "action");
 
-	printf ("Action label : %s\n", action->label);
+	/*printf ("Action label : %s\n", action->label);*/
 
 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (nact_profiles_list));
 
@@ -415,7 +432,7 @@ edit_prof_button_clicked_cb (GtkButton *button, gpointer user_data)
 		{
 			if (nact_profile_editor_edit_profile (action, profile_name, action_profile))
 			{
-				nact_editor_fill_profiles_list (nact_profiles_list, action);
+				editor_fill_profiles_list (nact_profiles_list, action);
 				field_changed_cb (G_OBJECT (nact_profiles_list), NULL);
 			}
 		}
@@ -447,7 +464,7 @@ copy_prof_button_clicked_cb (GtkButton *button, gpointer user_data)
 
 		gtk_tree_model_get (model, &iter, PROFILE_LABEL_COLUMN, &profile_name, -1);
 
-		printf ("profile_name : %s\n", profile_name);
+		/*printf ("profile_name : %s\n", profile_name);*/
 
 		action_profile = nautilus_actions_config_action_profile_dup (nautilus_actions_config_action_get_profile (action, profile_name));
 		new_action_profile = nautilus_actions_config_action_profile_dup (action_profile);
@@ -490,7 +507,7 @@ paste_prof_button_clicked_cb (GtkButton *button, gpointer user_data)
 	/* i18n notes: will be displayed in a dialog */
 	const gchar *cantpaste = _( "Can't paste action's profile '%s'!" );
 
-	printf ("profile_name : %s\n", action_profile->desc_name);
+	/*printf ("profile_name : %s\n", action_profile->desc_name);*/
 
 	/* i18n notes: this is the default name of a copied profile */
 	gchar* new_profile_desc_name = g_strdup_printf (_("%s Copy"), action_profile->desc_name);
@@ -505,7 +522,7 @@ paste_prof_button_clicked_cb (GtkButton *button, gpointer user_data)
 	{
 		if (nautilus_actions_config_action_add_profile (action, new_profile_name, new_action_profile, &error))
 		{
-			nact_editor_fill_profiles_list (nact_profiles_list, action);
+			editor_fill_profiles_list (nact_profiles_list, action);
 			field_changed_cb (G_OBJECT (nact_profiles_list), NULL);
 		}
 		else
@@ -546,7 +563,7 @@ delete_prof_button_clicked_cb (GtkButton *button, gpointer user_data)
 
 		if (nautilus_actions_config_action_remove_profile (action, profile_name))
 		{
-			nact_editor_fill_profiles_list (nact_profiles_list, action);
+			editor_fill_profiles_list (nact_profiles_list, action);
 			field_changed_cb (G_OBJECT (nact_profiles_list), NULL);
 		}
 		else
@@ -583,7 +600,8 @@ profile_list_selection_changed_cb (GtkTreeSelection *selection, gpointer user_da
 	}
 }
 
-static void nact_editor_setup_profiles_list (GtkWidget *list, NautilusActionsConfigAction* action)
+static void
+editor_setup_profiles_list (GtkWidget *list, NautilusActionsConfigAction* action)
 {
 	GtkListStore *model;
 	GtkTreeViewColumn *column;
@@ -592,7 +610,7 @@ static void nact_editor_setup_profiles_list (GtkWidget *list, NautilusActionsCon
 	/* create the model */
 	model = gtk_list_store_new (N_PROF_COLUMN, G_TYPE_STRING, G_TYPE_STRING);
 	gtk_tree_view_set_model (GTK_TREE_VIEW (list), GTK_TREE_MODEL (model));
-	nact_editor_fill_profiles_list (list, action);
+	editor_fill_profiles_list (list, action);
 	g_object_unref (model);
 
 	/* create columns on the tree view */
@@ -654,7 +672,7 @@ open_editor (NautilusActionsConfigAction *action, gboolean is_new)
 		g_signal_connect (G_OBJECT (GTK_BIN (menu_icon)->child), "changed",
 							   G_CALLBACK (preview_icon_changed_cb), NULL);
 
-		fill_menu_icon_combo_list_of (GTK_COMBO_BOX_ENTRY (menu_icon));
+		nact_fill_menu_icon_combo_list_of (GTK_COMBO_BOX_ENTRY (menu_icon));
 
 		/* TODO: replace deprecated gtk_tooltips_set_tip by its equivalent */
 		/*gtk_tooltips_set_tip (gtk_tooltips_new (), GTK_WIDGET (GTK_BIN (menu_icon)->child),
@@ -668,7 +686,7 @@ open_editor (NautilusActionsConfigAction *action, gboolean is_new)
 		}
 
 		menu_profiles_list = nact_get_glade_widget_from ("ProfilesList", GLADE_EDIT_DIALOG_WIDGET);
-		nact_editor_setup_profiles_list (menu_profiles_list, action);
+		editor_setup_profiles_list (menu_profiles_list, action);
 
 		/* free memory */
 		g_object_unref (gui);
@@ -710,7 +728,7 @@ open_editor (NautilusActionsConfigAction *action, gboolean is_new)
 	gtk_entry_set_text (GTK_ENTRY (GTK_BIN (menu_icon)->child), action->icon);
 
 	menu_profiles_list = nact_get_glade_widget_from ("ProfilesList", GLADE_EDIT_DIALOG_WIDGET);
-	nact_editor_fill_profiles_list (menu_profiles_list, action);
+	editor_fill_profiles_list (menu_profiles_list, action);
 
 	/* remove any old reference and reference the new action in the list */
 	g_object_steal_data (G_OBJECT (menu_profiles_list), "action");
diff --git a/nact/nact-editor.h b/nact/nact-editor.h
index d8789d0..3359e18 100644
--- a/nact/nact-editor.h
+++ b/nact/nact-editor.h
@@ -30,6 +30,7 @@
 #ifndef __NACT_EDITOR_H__
 #define __NACT_EDITOR_H__
 
+#include <gtk/gtk.h>
 #include <libnautilus-actions/nautilus-actions-config.h>
 
 enum {
@@ -38,7 +39,11 @@ enum {
 	N_PROF_COLUMN
 };
 
-gboolean nact_editor_new_action(void );
+gboolean nact_editor_new_action( void );
 gboolean nact_editor_edit_action( NautilusActionsConfigAction* action );
 
+void     nact_fill_menu_icon_combo_list_of( GtkComboBoxEntry* combo );
+void     nact_preview_icon_changed_cb( GtkEntry* icon_entry, gpointer user_data, const gchar *dialog );
+void     nact_icon_browse_button_clicked_cb( GtkButton *button, gpointer user_data, const gchar* dialog );
+
 #endif /* __NACT_EDITOR_H__ */
diff --git a/nact/nact-profile-editor.c b/nact/nact-profile-editor.c
index 5a17e07..11d701c 100644
--- a/nact/nact-profile-editor.c
+++ b/nact/nact-profile-editor.c
@@ -46,17 +46,26 @@ void legend_button_toggled_cb (GtkToggleButton *button, gpointer user_data);
 void add_scheme_clicked (GtkWidget* widget, gpointer user_data);
 void remove_scheme_clicked (GtkWidget* widget, gpointer user_data);
 
-static void update_example_label (void);
-static void show_legend_dialog( void );
-static void hide_legend_dialog( void );
+static void     update_example_label (void);
+static gboolean cell_edited (GtkTreeModel *model, const gchar *path_string, const gchar *new_text, gint column);
+static void     scheme_desc_edited_cb (GtkCellRendererText *cell, const gchar *path_string, const gchar *new_text, gpointer data);
+static void     scheme_edited_cb (GtkCellRendererText *cell, const gchar *path_string, const gchar *new_text, gpointer data);
+static void     scheme_selection_toggled_cb (GtkCellRendererToggle *cell_renderer, gchar *path_str, gpointer user_data );
 
 static void
 update_example_label (void)
 {
-	GtkWidget* label_widget = nact_get_glade_widget_from ("LabelExample", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
+	nact_update_example_label( GLADE_EDIT_PROFILE_DIALOG_WIDGET );
+}
+
+void
+nact_update_example_label( const gchar *dialog )
+{
+	/*static const char *thisfn = "nact_update_example_label";*/
+	GtkWidget* label_widget = nact_get_glade_widget_from ("LabelExample", dialog );
 	static gboolean init = FALSE;
 	static gchar label_format_string[1024];
-	gchar* tmp = nact_utils_parse_parameter ();
+	gchar* tmp = nact_utils_parse_parameter( dialog );
 	gchar* ex_str;
 
 	if (!init)
@@ -95,10 +104,16 @@ example_changed_cb (GObject *object, gpointer user_data)
 void
 path_browse_button_clicked_cb (GtkButton *button, gpointer user_data)
 {
+	nact_path_browse_button_clicked_cb( button, user_data, GLADE_EDIT_PROFILE_DIALOG_WIDGET );
+}
+
+void
+nact_path_browse_button_clicked_cb (GtkButton *button, gpointer user_data, const gchar *dialog )
+{
 	gchar* last_dir;
 	gchar* filename;
 	GtkWidget* filechooser = nact_get_glade_widget_from ("FileChooserDialog", GLADE_FILECHOOSER_DIALOG_WIDGET);
-	GtkWidget* entry = nact_get_glade_widget_from ("CommandPathEntry", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
+	GtkWidget* entry = nact_get_glade_widget_from ("CommandPathEntry", dialog );
 	gboolean set_current_location = FALSE;
 
 	filename = (gchar*)gtk_entry_get_text (GTK_ENTRY (entry));
@@ -130,10 +145,10 @@ path_browse_button_clicked_cb (GtkButton *button, gpointer user_data)
 	}
 }
 
-static void
-show_legend_dialog ()
+void
+nact_show_legend_dialog( const gchar *dialog )
 {
-	GtkWidget* editor = nact_get_glade_widget_from ("EditActionDialog", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
+	GtkWidget* editor = nact_get_glade_widget_from ("EditActionDialog", dialog );
 	GtkWidget *legend_dialog = nact_get_glade_widget_from ("LegendDialog", GLADE_LEGEND_DIALOG_WIDGET);
 	gtk_window_set_deletable (GTK_WINDOW (legend_dialog), FALSE);
 	gtk_window_set_transient_for (GTK_WINDOW (legend_dialog), GTK_WINDOW (editor));
@@ -141,11 +156,11 @@ show_legend_dialog ()
 	gtk_widget_show (legend_dialog);
 }
 
-static void
-hide_legend_dialog ()
+void
+nact_hide_legend_dialog( const gchar *dialog )
 {
 	GtkWidget *legend_dialog = nact_get_glade_widget_from ("LegendDialog", GLADE_LEGEND_DIALOG_WIDGET);
-	GtkWidget *legend_button = nact_get_glade_widget_from ("LegendButton", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
+	GtkWidget *legend_button = nact_get_glade_widget_from ("LegendButton", dialog );
 	gtk_widget_hide (legend_dialog);
 	/* TODO: Save the current position !! */
 
@@ -160,22 +175,30 @@ legend_button_toggled_cb (GtkToggleButton *button, gpointer user_data)
 {
 	if (gtk_toggle_button_get_active (button))
 	{
-		show_legend_dialog ();
+		nact_show_legend_dialog( GLADE_EDIT_PROFILE_DIALOG_WIDGET );
 	}
 	else
 	{
-		hide_legend_dialog ();
+		nact_hide_legend_dialog( GLADE_EDIT_PROFILE_DIALOG_WIDGET );
 	}
 }
 
-static void scheme_selection_toggled_cb (GtkCellRendererToggle *cell_renderer,
+/*
+ * path_str is the index of the selected row, counted from zero
+ */
+static void
+scheme_selection_toggled_cb (GtkCellRendererToggle *cell_renderer,
 													  gchar *path_str,
 													  gpointer user_data)
 {
+	static const char *thisfn = "scheme_selection_toggled_cb";
 	GtkTreeIter iter;
 	GtkTreePath* path;
 	gboolean toggle_state;
-	GtkTreeModel* model = GTK_TREE_MODEL (user_data);
+	NactCallbackData *scheme_data = ( NactCallbackData * ) user_data;
+	GtkTreeModel* model = gtk_tree_view_get_model( GTK_TREE_VIEW( scheme_data->listview ));
+	g_debug( "%s: cell_renderer=%p, path_str='%s', scheme_data=%p, dialog='%s', model=%p",
+			thisfn, cell_renderer, path_str, user_data, scheme_data->dialog, model );
 
 	path = gtk_tree_path_new_from_string (path_str);
 	gtk_tree_model_get_iter (model, &iter, path);
@@ -184,8 +207,8 @@ static void scheme_selection_toggled_cb (GtkCellRendererToggle *cell_renderer,
 	gtk_list_store_set (GTK_LIST_STORE (model), &iter, SCHEMES_CHECKBOX_COLUMN, !toggle_state, -1);
 
 	/* --> Notice edition change */
-	profile_field_changed_cb (G_OBJECT (cell_renderer), NULL);
-	update_example_label ();
+	scheme_data->field_changed_cb (G_OBJECT (cell_renderer), NULL);
+	scheme_data->update_example_label ();
 
 	gtk_tree_path_free (path);
 }
@@ -221,12 +244,14 @@ scheme_edited_cb (GtkCellRendererText *cell,
              const gchar         *new_text,
              gpointer             data)
 {
-	GtkTreeModel* model = GTK_TREE_MODEL (data);
+	NactCallbackData *scheme_data = ( NactCallbackData * ) data;
+	GtkTreeModel* model = gtk_tree_view_get_model( GTK_TREE_VIEW( scheme_data->listview ));
+
 	if (cell_edited (model, path_string, new_text, SCHEMES_KEYWORD_COLUMN))
 	{
 		/* --> if column was checked, set the action has edited */
-		profile_field_changed_cb (G_OBJECT (cell), NULL);
-		update_example_label ();
+		scheme_data->field_changed_cb (G_OBJECT (cell), NULL);
+		scheme_data->update_example_label ();
 	}
 }
 
@@ -236,14 +261,16 @@ scheme_desc_edited_cb (GtkCellRendererText *cell,
              const gchar         *new_text,
              gpointer             data)
 {
-	GtkTreeModel* model = GTK_TREE_MODEL (data);
+	NactCallbackData *scheme_data = ( NactCallbackData * ) data;
+	GtkTreeModel* model = gtk_tree_view_get_model( GTK_TREE_VIEW( scheme_data->listview ));
 	cell_edited (model, path_string, new_text, SCHEMES_DESC_COLUMN);
 }
 
 static void
 scheme_list_selection_changed_cb (GtkTreeSelection *selection, gpointer user_data)
 {
-	GtkWidget *delete_button = nact_get_glade_widget_from ("RemoveSchemeButton", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
+	NactCallbackData *scheme_data = ( NactCallbackData * ) user_data;
+	GtkWidget *delete_button = nact_get_glade_widget_from( "RemoveSchemeButton", scheme_data->dialog );
 
 	if (gtk_tree_selection_count_selected_rows (selection) > 0) {
 		gtk_widget_set_sensitive (delete_button, TRUE);
@@ -255,7 +282,13 @@ scheme_list_selection_changed_cb (GtkTreeSelection *selection, gpointer user_dat
 void
 add_scheme_clicked (GtkWidget* widget, gpointer user_data)
 {
-	GtkWidget* listview = nact_get_glade_widget_from ("SchemesTreeView", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
+	nact_add_scheme_clicked( widget, user_data, GLADE_EDIT_PROFILE_DIALOG_WIDGET );
+}
+
+void
+nact_add_scheme_clicked (GtkWidget* widget, gpointer user_data, const gchar* dialog )
+{
+	GtkWidget* listview = nact_get_glade_widget_from( "SchemesTreeView", dialog );
 	GtkTreeModel* model = gtk_tree_view_get_model (GTK_TREE_VIEW (listview));
 	GtkTreeIter row;
 
@@ -269,7 +302,13 @@ add_scheme_clicked (GtkWidget* widget, gpointer user_data)
 void
 remove_scheme_clicked (GtkWidget* widget, gpointer user_data)
 {
-	GtkWidget* listview = nact_get_glade_widget_from ("SchemesTreeView", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
+	nact_remove_scheme_clicked( widget, user_data, GLADE_EDIT_PROFILE_DIALOG_WIDGET );
+}
+
+void
+nact_remove_scheme_clicked (GtkWidget* widget, gpointer user_data, const gchar *dialog )
+{
+	GtkWidget* listview = nact_get_glade_widget_from ("SchemesTreeView", dialog);
 	GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (listview));
 	GtkTreeModel* model = gtk_tree_view_get_model (GTK_TREE_VIEW (listview));
 	GList* selected_values_path = NULL;
@@ -300,9 +339,13 @@ remove_scheme_clicked (GtkWidget* widget, gpointer user_data)
 	g_list_free (selected_values_path);
 }
 
-static void create_schemes_selection_list (void)
+void
+nact_create_schemes_selection_list( NactCallbackData *callback_data )
 {
-	GtkWidget* listview = nact_get_glade_widget_from ("SchemesTreeView", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
+	static const char *thisfn = "nact_create_schemes_selection_list";
+	g_debug( "%s: callback_data=%p", thisfn, callback_data );
+
+	GtkWidget* listview = nact_get_glade_widget_from ("SchemesTreeView", callback_data->dialog );
 	GSList* iter;
 	GSList* schemes_list = nact_prefs_get_schemes_list ();
 	GtkListStore* model;
@@ -313,6 +356,8 @@ static void create_schemes_selection_list (void)
 
 	model = gtk_list_store_new (SCHEMES_N_COLUMN, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING);
 
+	callback_data->listview = listview;
+
 	for (iter = schemes_list; iter; iter = iter->next)
 	{
 		gchar** tokens = g_strsplit ((gchar*)iter->data, "|", 2);
@@ -334,8 +379,7 @@ static void create_schemes_selection_list (void)
 	toggled_cell = gtk_cell_renderer_toggle_new ();
 
 	g_signal_connect (G_OBJECT (toggled_cell), "toggled",
-			  G_CALLBACK (scheme_selection_toggled_cb),
-			  gtk_tree_view_get_model (GTK_TREE_VIEW (listview)));
+			G_CALLBACK (scheme_selection_toggled_cb), callback_data );
 
 	column = gtk_tree_view_column_new_with_attributes ("",
 							   toggled_cell,
@@ -346,8 +390,7 @@ static void create_schemes_selection_list (void)
 	g_object_set (G_OBJECT (text_cell), "editable", TRUE, NULL);
 
 	g_signal_connect (G_OBJECT (text_cell), "edited",
-							G_CALLBACK (scheme_edited_cb),
-							gtk_tree_view_get_model (GTK_TREE_VIEW (listview)));
+			G_CALLBACK (scheme_edited_cb), callback_data );
 
 	column = gtk_tree_view_column_new_with_attributes (_("Scheme"),
 							   text_cell,
@@ -358,8 +401,7 @@ static void create_schemes_selection_list (void)
 	g_object_set (G_OBJECT (text_cell), "editable", TRUE, NULL);
 
 	g_signal_connect (G_OBJECT (text_cell), "edited",
-							G_CALLBACK (scheme_desc_edited_cb),
-							gtk_tree_view_get_model (GTK_TREE_VIEW (listview)));
+			G_CALLBACK (scheme_desc_edited_cb), callback_data );
 
 	column = gtk_tree_view_column_new_with_attributes (_("Description"),
 							   text_cell,
@@ -367,10 +409,11 @@ static void create_schemes_selection_list (void)
 	gtk_tree_view_append_column (GTK_TREE_VIEW (listview), column);
 
 	g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (listview))), "changed",
-			  G_CALLBACK (scheme_list_selection_changed_cb), NULL);
+			  G_CALLBACK (scheme_list_selection_changed_cb), callback_data );
 }
 
-static gboolean reset_schemes_list (GtkTreeModel* scheme_model, GtkTreePath *path,
+gboolean
+nact_reset_schemes_list (GtkTreeModel* scheme_model, GtkTreePath *path,
 											GtkTreeIter* iter, gpointer data)
 {
 	gtk_list_store_set (GTK_LIST_STORE (scheme_model), iter, SCHEMES_CHECKBOX_COLUMN, FALSE, -1);
@@ -399,7 +442,8 @@ static gboolean reset_schemes_list (GtkTreeModel* scheme_model, GtkTreePath *pat
 	return FALSE; // Don't stop looping
 }*/
 
-static void set_action_schemes (gchar* action_scheme, GtkTreeModel* scheme_model)
+void
+nact_set_action_schemes (gchar* action_scheme, GtkTreeModel* scheme_model)
 {
 	GtkTreeIter iter;
 	gboolean iter_ok = FALSE;
@@ -432,7 +476,8 @@ static void set_action_schemes (gchar* action_scheme, GtkTreeModel* scheme_model
 	}
 }
 
-static void set_action_match_string_list (GtkEntry* entry, GSList* basenames, const gchar* default_string)
+void
+nact_set_action_match_string_list (GtkEntry* entry, GSList* basenames, const gchar* default_string)
 {
 	GSList* iter;
 	gchar* entry_text;
@@ -460,7 +505,8 @@ static void set_action_match_string_list (GtkEntry* entry, GSList* basenames, co
 	gtk_entry_set_text (entry, entry_text);
 }
 
-static GSList* get_action_match_string_list (const gchar* patterns, const gchar* default_string)
+GSList*
+nact_get_action_match_string_list (const gchar* patterns, const gchar* default_string)
 {
 	gchar** tokens;
 	gchar** iter;
@@ -510,6 +556,7 @@ open_profile_editor (NautilusActionsConfigAction *action, gchar* profile_name, N
 	GtkWidget *only_files, *only_folders, *both, *accept_multiple;
 	gint width, height /*, x, y*/;
 	GtkTreeModel* scheme_model;
+	static NactCallbackData *scheme_data = NULL;
 
 	if (!init)
 	{
@@ -520,7 +567,11 @@ open_profile_editor (NautilusActionsConfigAction *action, gchar* profile_name, N
 			return FALSE;
 		}
 
-		create_schemes_selection_list ();
+		scheme_data = g_new0( NactCallbackData, 1 );
+		scheme_data->dialog = GLADE_EDIT_PROFILE_DIALOG_WIDGET;
+		scheme_data->field_changed_cb = profile_field_changed_cb;
+		scheme_data->update_example_label = update_example_label;
+		nact_create_schemes_selection_list ( scheme_data );
 
 		glade_xml_signal_autoconnect(gui);
 
@@ -539,7 +590,7 @@ open_profile_editor (NautilusActionsConfigAction *action, gchar* profile_name, N
 		}
 		button_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
 		gtk_size_group_add_widget (button_size_group,
-											nact_get_glade_widget_from ("BrowseButton",
+											nact_get_glade_widget_from ("PathBrowseButton",
 																		GLADE_EDIT_PROFILE_DIALOG_WIDGET));
 		gtk_size_group_add_widget (button_size_group,
 											nact_get_glade_widget_from ("LegendButton",
@@ -579,25 +630,25 @@ open_profile_editor (NautilusActionsConfigAction *action, gchar* profile_name, N
 	*/
 
 	command_path = nact_get_glade_widget_from ("CommandPathEntry", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
-	printf ("path : %s\n", action_profile->path);
+	/*printf ("path : %s\n", action_profile->path);*/
 	gtk_entry_set_text (GTK_ENTRY (command_path), action_profile->path);
-	g_print ("toto42\n");
+	/*g_print ("toto42\n");*/
 
 	command_params = nact_get_glade_widget_from ("CommandParamsEntry", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
-	g_print ("toto43\n");
-	printf ("params : %s\n", action_profile->parameters);
+	/*g_print ("toto43\n");
+	printf ("params : %s\n", action_profile->parameters);*/
 	gtk_entry_set_text (GTK_ENTRY (command_params), action_profile->parameters);
-	g_print ("toto44\n");
+	/*g_print ("toto44\n");*/
 
 	test_patterns = nact_get_glade_widget_from ("PatternEntry", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
-	set_action_match_string_list (GTK_ENTRY (test_patterns), action_profile->basenames, "*");
+	nact_set_action_match_string_list (GTK_ENTRY (test_patterns), action_profile->basenames, "*");
 
 	match_case = nact_get_glade_widget_from ("MatchCaseButton", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (match_case), action_profile->match_case);
 
 	test_mimetypes = nact_get_glade_widget_from ("MimeTypeEntry", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
 
-	set_action_match_string_list (GTK_ENTRY (test_mimetypes), action_profile->mimetypes, "*/*");
+	nact_set_action_match_string_list (GTK_ENTRY (test_mimetypes), action_profile->mimetypes, "*/*");
 
 	only_folders = nact_get_glade_widget_from ("OnlyFoldersButton", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (only_folders), action_profile->is_dir);
@@ -613,8 +664,8 @@ open_profile_editor (NautilusActionsConfigAction *action, gchar* profile_name, N
 
 	scheme_listview = nact_get_glade_widget_from ("SchemesTreeView", GLADE_EDIT_PROFILE_DIALOG_WIDGET);
 	scheme_model = gtk_tree_view_get_model (GTK_TREE_VIEW (scheme_listview));
-	gtk_tree_model_foreach (scheme_model, (GtkTreeModelForeachFunc)reset_schemes_list, NULL);
-	g_slist_foreach (action_profile->schemes, (GFunc)set_action_schemes, scheme_model);
+	gtk_tree_model_foreach (scheme_model, (GtkTreeModelForeachFunc) nact_reset_schemes_list, NULL);
+	g_slist_foreach (action_profile->schemes, (GFunc) nact_set_action_schemes, scheme_model);
 
 	update_example_label ();
 
@@ -625,7 +676,7 @@ open_profile_editor (NautilusActionsConfigAction *action, gchar* profile_name, N
 		nautilus_actions_config_action_profile_set_path (action_profile, gtk_entry_get_text (GTK_ENTRY (command_path)));
 		nautilus_actions_config_action_profile_set_parameters (action_profile, gtk_entry_get_text (GTK_ENTRY (command_params)));
 
-		list = get_action_match_string_list (gtk_entry_get_text (GTK_ENTRY (test_patterns)), "*");
+		list = nact_get_action_match_string_list (gtk_entry_get_text (GTK_ENTRY (test_patterns)), "*");
 		nautilus_actions_config_action_profile_set_basenames (action_profile, list);
 		g_slist_foreach (list, (GFunc) g_free, NULL);
 		g_slist_free (list);
@@ -633,7 +684,7 @@ open_profile_editor (NautilusActionsConfigAction *action, gchar* profile_name, N
 		nautilus_actions_config_action_profile_set_match_case (
 			action_profile, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (match_case)));
 
-		list = get_action_match_string_list (gtk_entry_get_text (GTK_ENTRY (test_mimetypes)), "*/*");
+		list = nact_get_action_match_string_list (gtk_entry_get_text (GTK_ENTRY (test_mimetypes)), "*/*");
 		nautilus_actions_config_action_profile_set_mimetypes (action_profile, list);
 		g_slist_foreach (list, (GFunc) g_free, NULL);
 		g_slist_free (list);
@@ -691,7 +742,7 @@ open_profile_editor (NautilusActionsConfigAction *action, gchar* profile_name, N
 	nact_prefs_set_edit_dialog_position (GTK_WINDOW (editor));
 	*/
 
-	hide_legend_dialog ();
+	nact_hide_legend_dialog( GLADE_EDIT_PROFILE_DIALOG_WIDGET );
 	gtk_widget_hide (editor);
 
 	return ret;
@@ -707,7 +758,7 @@ nact_profile_editor_new_profile (NautilusActionsConfigAction* action)
 	NautilusActionsConfigActionProfile *action_profile = nautilus_actions_config_action_profile_new_default ();
 	nautilus_actions_config_action_profile_set_desc_name (action_profile, new_profile_desc_name);
 
-	printf ("Profile Name : %s (%s)\n", new_profile_desc_name, new_profile_name);
+	/*printf ("Profile Name : %s (%s)\n", new_profile_desc_name, new_profile_name);*/
 	val = open_profile_editor (action, new_profile_name, action_profile, TRUE);
 	g_free (new_profile_name);
 	g_free (new_profile_desc_name);
diff --git a/nact/nact-profile-editor.h b/nact/nact-profile-editor.h
index 47788d2..d3b7de1 100644
--- a/nact/nact-profile-editor.h
+++ b/nact/nact-profile-editor.h
@@ -30,10 +30,33 @@
 #ifndef __NACT_PROFILE_EDITOR_H__
 #define __NACT_PROFILE_EDITOR_H__
 
+#include <glib.h>
+#include <gtk/gtk.h>
 #include <libnautilus-actions/nautilus-actions-config.h>
 #include <libnautilus-actions/nautilus-actions-config-gconf-writer.h>
 
 gboolean nact_profile_editor_new_profile (NautilusActionsConfigAction* action);
 gboolean nact_profile_editor_edit_profile (NautilusActionsConfigAction *action, gchar* profile_name, NautilusActionsConfigActionProfile* action_profile);
 
+/* a structure to be passed as user data to schemes callbacks */
+typedef struct {
+	gchar  *dialog;
+	void ( *field_changed_cb )( GObject *object, gpointer user_data );
+	void ( *update_example_label )( void );
+	GtkWidget *listview;
+}
+	NactCallbackData;
+
+void     nact_add_scheme_clicked( GtkWidget* widget, gpointer user_data, const gchar *dialog );
+void     nact_create_schemes_selection_list( NactCallbackData *scheme_data );
+GSList * nact_get_action_match_string_list (const gchar* patterns, const gchar* default_string);
+void     nact_hide_legend_dialog( const gchar *dialog );
+void     nact_path_browse_button_clicked_cb( GtkButton *button, gpointer user_data, const gchar *dialog );
+void     nact_remove_scheme_clicked( GtkWidget* widget, gpointer user_data, const gchar *dialog );
+gboolean nact_reset_schemes_list (GtkTreeModel* scheme_model, GtkTreePath *path, GtkTreeIter* iter, gpointer data);
+void     nact_set_action_match_string_list (GtkEntry* entry, GSList* basenames, const gchar* default_string);
+void     nact_set_action_schemes (gchar* action_scheme, GtkTreeModel* scheme_model);
+void     nact_show_legend_dialog( const gchar *dialog );
+void     nact_update_example_label( const gchar *dialog );
+
 #endif /* __NACT_PROFILE_EDITOR_H__ */
diff --git a/nact/nact-utils.c b/nact/nact-utils.c
index bc52c25..294f5f3 100644
--- a/nact/nact-utils.c
+++ b/nact/nact-utils.c
@@ -121,6 +121,7 @@ void nautilus_actions_display_error (const gchar *primary_msg, const gchar* seco
 gboolean nact_utils_get_action_schemes_list (GtkTreeModel* scheme_model, GtkTreePath *path,
 													  GtkTreeIter* iter, gpointer data)
 {
+	static const char *thisfn = "nact_utils_get_action_schemes_list";
 	GSList** list = data;
 	gboolean toggle_state;
 	gchar* scheme;
@@ -130,6 +131,7 @@ gboolean nact_utils_get_action_schemes_list (GtkTreeModel* scheme_model, GtkTree
 
 	if (toggle_state)
 	{
+		g_debug( "%s: adding '%s' scheme", thisfn, scheme );
 		(*list) = g_slist_append ((*list), scheme);
 	}
 	else
@@ -169,7 +171,8 @@ static gchar* nact_utils_joinv (const gchar* start, const gchar* separator, gcha
 	return g_string_free (tmp_string, FALSE);
 }
 
-gchar* nact_utils_parse_parameter (void)
+gchar *
+nact_utils_parse_parameter( const gchar *dialog )
 {
 	/*
 	 * Valid parameters :
@@ -203,8 +206,7 @@ gchar* nact_utils_parse_parameter (void)
 	gchar* ex_scheme;
 	gchar* ex_host;
 
-	const gchar* param_template = gtk_entry_get_text (GTK_ENTRY (nact_get_glade_widget_from ("CommandParamsEntry",
-																										GLADE_EDIT_PROFILE_DIALOG_WIDGET)));
+	const gchar* param_template = gtk_entry_get_text (GTK_ENTRY (nact_get_glade_widget_from ("CommandParamsEntry", dialog )));
 	gchar* iter = g_strdup (param_template);
 	gchar* old_iter = iter;
 	gchar* tmp;
@@ -212,26 +214,20 @@ gchar* nact_utils_parse_parameter (void)
 	gchar* start;
 	GSList* scheme_list = NULL;
 
-	const gchar* command = gtk_entry_get_text (GTK_ENTRY (nact_get_glade_widget_from ("CommandPathEntry",
-																								GLADE_EDIT_PROFILE_DIALOG_WIDGET)));
+	const gchar* command = gtk_entry_get_text (GTK_ENTRY (nact_get_glade_widget_from ("CommandPathEntry", dialog )));
 
 	g_string_append_printf (tmp_string, "%s ", command);
 
-	gboolean is_file = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (nact_get_glade_widget_from ("OnlyFilesButton",
-																												GLADE_EDIT_PROFILE_DIALOG_WIDGET)));
-	gboolean is_dir = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (nact_get_glade_widget_from ("OnlyFoldersButton",
-																												GLADE_EDIT_PROFILE_DIALOG_WIDGET)));
-	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (nact_get_glade_widget_from ("BothButton",
-																							GLADE_EDIT_PROFILE_DIALOG_WIDGET))))
+	gboolean is_file = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (nact_get_glade_widget_from ("OnlyFilesButton", dialog )));
+	gboolean is_dir = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (nact_get_glade_widget_from ("OnlyFoldersButton", dialog )));
+	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (nact_get_glade_widget_from ("BothButton", dialog ))))
 	{
 		is_file = TRUE;
 		is_dir = TRUE;
 	}
-	gboolean accept_multiple = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (nact_get_glade_widget_from ("AcceptMultipleButton",
-																															GLADE_EDIT_PROFILE_DIALOG_WIDGET)));
+	gboolean accept_multiple = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (nact_get_glade_widget_from ("AcceptMultipleButton", dialog )));
 
-	GtkTreeModel* scheme_model = gtk_tree_view_get_model (GTK_TREE_VIEW (nact_get_glade_widget_from ("SchemesTreeView",
-																													GLADE_EDIT_PROFILE_DIALOG_WIDGET)));
+	GtkTreeModel* scheme_model = gtk_tree_view_get_model (GTK_TREE_VIEW (nact_get_glade_widget_from ("SchemesTreeView", dialog )));
 	gtk_tree_model_foreach (scheme_model, (GtkTreeModelForeachFunc)nact_utils_get_action_schemes_list, &scheme_list);
 
 	separator = g_strdup_printf (" %s/", ex_path);
diff --git a/nact/nact-utils.h b/nact/nact-utils.h
index d0b0765..d6c3837 100644
--- a/nact/nact-utils.h
+++ b/nact/nact-utils.h
@@ -35,6 +35,7 @@
 
 #define GLADE_MAIN_WIDGET "ActionsDialog"
 #define GLADE_EDIT_DIALOG_WIDGET "EditActionDialog"
+#define GLADE_EDIT_ACTION_DIALOG_WIDGET "EditActionDialogExt"
 #define GLADE_EDIT_PROFILE_DIALOG_WIDGET "EditProfileDialog"
 #define GLADE_LEGEND_DIALOG_WIDGET "LegendDialog"
 #define GLADE_FILECHOOSER_DIALOG_WIDGET "FileChooserDialog"
@@ -50,16 +51,15 @@ enum {
 	SCHEMES_N_COLUMN
 };
 
-GladeXML* nact_get_glade_xml_object (const gchar* root_widget);
-GtkWidget* nact_get_glade_widget_from (const gchar* widget_name, const gchar* root_widget);
-GtkWidget* nact_get_glade_widget (const gchar* widget_name);
-GList* nact_get_glade_widget_prefix_from (const gchar* widget_name, const gchar* root_widget);
-GList* nact_get_glade_widget_prefix (const gchar* widget_name);
-void nact_destroy_glade_objects (void);
-void nautilus_actions_display_error (const gchar *primary_msg, const gchar *secondary_msg);
-gboolean nact_utils_get_action_schemes_list (GtkTreeModel* scheme_model, GtkTreePath *path,
+GladeXML   *nact_get_glade_xml_object (const gchar* root_widget);
+GtkWidget  *nact_get_glade_widget_from (const gchar* widget_name, const gchar* root_widget);
+GtkWidget  *nact_get_glade_widget (const gchar* widget_name);
+GList      *nact_get_glade_widget_prefix_from (const gchar* widget_name, const gchar* root_widget);
+GList      *nact_get_glade_widget_prefix (const gchar* widget_name);
+void        nact_destroy_glade_objects (void);
+void        nautilus_actions_display_error (const gchar *primary_msg, const gchar *secondary_msg);
+gboolean    nact_utils_get_action_schemes_list (GtkTreeModel* scheme_model, GtkTreePath *path,
 													  GtkTreeIter* iter, gpointer data);
-gchar* nact_utils_parse_parameter (void);
-
+gchar      *nact_utils_parse_parameter( const gchar *dialog );
 
 #endif /* __NACT_UTILS_H__ */
diff --git a/nact/nact.c b/nact/nact.c
index 0740dde..66c5397 100644
--- a/nact/nact.c
+++ b/nact/nact.c
@@ -43,21 +43,30 @@
 #include "nact-editor.h"
 #include "nact-import-export.h"
 #include "nact-prefs.h"
+#include "nact-action-editor.h"
 
 /* gui callback functions */
-void dialog_response_cb (GtkDialog *dialog, gint response_id, gpointer user_data);
-void add_button_clicked_cb (GtkButton *button, gpointer user_data);
-void delete_button_clicked_cb (GtkButton *button, gpointer user_data);
-void duplicate_button_clicked_cb (GtkButton *button, gpointer user_data);
-void edit_button_clicked_cb (GtkButton *button, gpointer user_data);
-void im_export_button_clicked_cb (GtkButton *button, gpointer user_data);
-
-static gint actions_list_sort_by_label (gconstpointer a1, gconstpointer a2);
-static void list_selection_changed_cb (GtkTreeSelection *selection, gpointer user_data);
-static void nact_fill_actions_list (GtkWidget *list);
+void     dialog_response_cb (GtkDialog *dialog, gint response_id, gpointer user_data);
+void     add_button_clicked_cb (GtkButton *button, gpointer user_data);
+void     delete_button_clicked_cb (GtkButton *button, gpointer user_data);
+void     duplicate_button_clicked_cb (GtkButton *button, gpointer user_data);
+void     edit_button_clicked_cb (GtkButton *button, gpointer user_data);
+void     im_export_button_clicked_cb (GtkButton *button, gpointer user_data);
+
+static gint  actions_list_sort_by_label (gconstpointer a1, gconstpointer a2);
+static guint get_profiles_count( const NautilusActionsConfigAction *action );
+static void  list_selection_changed_cb (GtkTreeSelection *selection, gpointer user_data);
+static void  fill_actions_list (GtkWidget *list);
+static void  setup_actions_list (GtkWidget *list);
 
 static NautilusActionsConfigGconfWriter *config = NULL;
 
+static guint
+get_profiles_count( const NautilusActionsConfigAction *action )
+{
+	return( nautilus_actions_config_action_get_profiles_count( action ));
+}
+
 static gint
 actions_list_sort_by_label (gconstpointer a1, gconstpointer a2)
 {
@@ -68,7 +77,7 @@ actions_list_sort_by_label (gconstpointer a1, gconstpointer a2)
 }
 
 static void
-nact_fill_actions_list (GtkWidget *list)
+fill_actions_list (GtkWidget *list)
 {
 	GSList *actions, *l;
 	GtkListStore *model = GTK_LIST_STORE(gtk_tree_view_get_model (GTK_TREE_VIEW (list)));
@@ -112,13 +121,31 @@ nact_fill_actions_list (GtkWidget *list)
 	nautilus_actions_config_free_actions_list (actions);
 }
 
+/*
+ * creating a new action
+ * pwi 2009-05-19
+ * I don't want the profiles feature spread wide while I'm not convinced
+ * that it is useful and actually used.
+ * so the new action is silently created with a default profile name
+ */
 void
 add_button_clicked_cb (GtkButton *button, gpointer user_data)
 {
-	if (nact_editor_new_action ())
-		nact_fill_actions_list (nact_get_glade_widget ("ActionsList"));
+	if( nact_action_editor_new())
+		fill_actions_list( nact_get_glade_widget( "ActionsList" ));
 }
 
+/*
+ * editing an existing action
+ * pwi 2009-05-19
+ * I don't want the profiles feature spread wide while I'm not convinced
+ * that it is useful and actually used.
+ * so :
+ * - if there is only one profile, the user will be directed to a dialog
+ *   box which includes all needed fields, but without any profile notion
+ * - if there are more than one profile, one can assume that the user has
+ *   found a use to the profiles, and let him edit them
+ */
 void
 edit_button_clicked_cb (GtkButton *button, gpointer user_data)
 {
@@ -138,9 +165,15 @@ edit_button_clicked_cb (GtkButton *button, gpointer user_data)
 		gtk_tree_model_get (model, &iter, UUID_COLUMN, &uuid, -1);
 
 		action = nautilus_actions_config_get_action (NAUTILUS_ACTIONS_CONFIG (config), uuid);
-		if (action) {
-			if (nact_editor_edit_action (action))
-				nact_fill_actions_list (nact_actions_list);
+		if( action ){
+			guint count = get_profiles_count( action );
+			if( count > 1 ){
+				if (nact_editor_edit_action (action))
+					fill_actions_list (nact_actions_list);
+			} else {
+				if( nact_action_editor_edit( action ))
+					fill_actions_list( nact_actions_list );
+			}
 		}
 
 		g_free (uuid);
@@ -175,7 +208,7 @@ duplicate_button_clicked_cb (GtkButton *button, gpointer user_data)
 		{
 			if (nautilus_actions_config_add_action (NAUTILUS_ACTIONS_CONFIG (config), new_action, &error))
 			{
-				nact_fill_actions_list (nact_actions_list);
+				fill_actions_list (nact_actions_list);
 			}
 			else
 			{
@@ -207,7 +240,7 @@ delete_button_clicked_cb (GtkButton *button, gpointer user_data)
 
 		gtk_tree_model_get (model, &iter, UUID_COLUMN, &uuid, -1);
 		nautilus_actions_config_remove_action (NAUTILUS_ACTIONS_CONFIG (config), uuid);
-		nact_fill_actions_list (nact_actions_list);
+		fill_actions_list (nact_actions_list);
 
 		g_free (uuid);
 	}
@@ -221,7 +254,7 @@ im_export_button_clicked_cb (GtkButton *button, gpointer user_data)
 	if (nact_import_export_actions ())
 	{
 		nact_actions_list = nact_get_glade_widget ("ActionsList");
-		nact_fill_actions_list (nact_actions_list);
+		fill_actions_list (nact_actions_list);
 	}
 }
 
@@ -282,7 +315,8 @@ list_selection_changed_cb (GtkTreeSelection *selection, gpointer user_data)
 	}
 }
 
-static void nact_setup_actions_list (GtkWidget *list)
+static void
+setup_actions_list (GtkWidget *list)
 {
 	GtkListStore *model;
 	GtkTreeViewColumn *column;
@@ -290,7 +324,7 @@ static void nact_setup_actions_list (GtkWidget *list)
 	/* create the model */
 	model = gtk_list_store_new (N_COLUMN, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
 	gtk_tree_view_set_model (GTK_TREE_VIEW (list), GTK_TREE_MODEL (model));
-	nact_fill_actions_list (list);
+	fill_actions_list( list );
 	g_object_unref (model);
 
 	/* create columns on the tree view */
@@ -329,7 +363,7 @@ init_dialog (void)
 	nact_dialog = nact_get_glade_widget ("ActionsDialog");
 
 	nact_actions_list = nact_get_glade_widget ("ActionsList");
-	nact_setup_actions_list (nact_actions_list);
+	setup_actions_list (nact_actions_list);
 
 	/* Get the default dialog size */
 	gtk_window_get_default_size (GTK_WINDOW (nact_dialog), &width, &height);
diff --git a/nact/nautilus-actions-config.glade b/nact/nautilus-actions-config.glade
index fa40c25..357f2aa 100644
--- a/nact/nautilus-actions-config.glade
+++ b/nact/nautilus-actions-config.glade
@@ -493,7 +493,7 @@
 		      </child>
 
 		      <child>
-			<widget class="GtkButton" id="BrowseButton">
+			<widget class="GtkButton" id="PathBrowseButton">
 			  <property name="visible">True</property>
 			  <property name="tooltip" translatable="yes">Click to choose a command from the file chooser dialog.</property>
 			  <property name="can_focus">True</property>
@@ -1316,6 +1316,7 @@
 </widget>
 
 <widget class="GtkFileChooserDialog" id="FileChooserDialog">
+  <property name="border_width">5</property>
   <property name="visible">True</property>
   <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
   <property name="local_only">True</property>
@@ -1868,7 +1869,1235 @@
   </child>
 </widget>
 
+<widget class="GtkDialog" id="EditActionDialogExt">
+  <property name="width_request">460</property>
+  <property name="height_request">410</property>
+  <property name="title" translatable="yes">Nautilus Action Editor</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_CENTER_ALWAYS</property>
+  <property name="modal">True</property>
+  <property name="default_width">400</property>
+  <property name="default_height">430</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+  <property name="urgency_hint">False</property>
+  <property name="has_separator">True</property>
+
+  <child internal-child="vbox">
+    <widget class="GtkVBox" id="dialog-vbox4">
+      <property name="width_request">500</property>
+      <property name="height_request">430</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child internal-child="action_area">
+	<widget class="GtkHButtonBox" id="dialog-action_area4">
+	  <property name="visible">True</property>
+	  <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+	  <child>
+	    <widget class="GtkButton" id="cancelbutton1">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-cancel</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-6</property>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkButton" id="okbutton1">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-ok</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-5</property>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">True</property>
+	  <property name="pack_type">GTK_PACK_END</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkNotebook" id="notebook2">
+	  <property name="border_width">6</property>
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="show_tabs">True</property>
+	  <property name="show_border">True</property>
+	  <property name="tab_pos">GTK_POS_TOP</property>
+	  <property name="scrollable">False</property>
+	  <property name="enable_popup">False</property>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox399">
+	      <property name="border_width">10</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">12</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label159">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Nautilus Menu Item&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkTable" id="table3">
+		  <property name="border_width">10</property>
+		  <property name="visible">True</property>
+		  <property name="n_rows">3</property>
+		  <property name="n_columns">2</property>
+		  <property name="homogeneous">False</property>
+		  <property name="row_spacing">6</property>
+		  <property name="column_spacing">12</property>
+
+		  <child>
+		    <widget class="GtkEntry" id="MenuTooltipEntry">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Tooltip of the menu item that will appear in the Nautilus statusbar.</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char">*</property>
+		      <property name="activates_default">False</property>
+		    </widget>
+		    <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="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox63">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkImage" id="IconImage">
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkComboBoxEntry" id="MenuIconComboBoxEntry">
+			  <property name="visible">True</property>
+			  <property name="items"></property>
+			  <property name="add_tearoffs">False</property>
+			  <property name="has_frame">True</property>
+			  <property name="focus_on_click">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkButton" id="IconBrowseButton">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Click to choose a custom icon from a file instead of a predefined icon from the drop-down list.</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">_Browse</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <signal name="clicked" handler="action_icon_browse_button_clicked_cb" last_modification_time="Tue, 19 May 2009 21:40:37 GMT"/>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <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">fill</property>
+		      <property name="y_options">fill</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="LabelAlign3">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Icon:</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">fill</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="LabelAlign2">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Tooltip:</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">1</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">fill</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="LabelAlign1">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Label:</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">fill</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkEntry" id="MenuLabelEntry">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Label of the menu item in the Nautilus popup menu.</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char">*</property>
+		      <property name="activates_default">False</property>
+		      <signal name="changed" handler="action_field_changed_cb" last_modification_time="Tue, 19 May 2009 21:37:18 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">1</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="label40">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Action&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox396">
+		  <property name="border_width">10</property>
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox32">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkLabel" id="LabelAlign4">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Path:</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkEntry" id="CommandPathEntry">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">The command that will be launched by selecting the action in Nautilus popup menu.</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text"></property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char">*</property>
+			  <property name="activates_default">False</property>
+			  <property name="width_chars">10</property>
+			  <signal name="changed" handler="action_field_changed_cb" last_modification_time="Tue, 19 May 2009 21:37:58 GMT"/>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkButton" id="PathBrowseButton">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Click to choose a command from the file chooser dialog.</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">_Browse</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <signal name="clicked" handler="action_path_browse_button_clicked_cb" last_modification_time="Tue, 19 May 2009 21:40:50 GMT"/>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox33">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkLabel" id="LabelAlign5">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Parameters:</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkEntry" id="CommandParamsEntry">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Parameters that will be sent to the program. Click on the 'Legend' button to see the different replacement tokens.</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text"></property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char">*</property>
+			  <property name="activates_default">False</property>
+			  <property name="width_chars">10</property>
+			  <signal name="changed" handler="action_field_changed_cb" last_modification_time="Wed, 20 May 2009 20:04:04 GMT"/>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkToggleButton" id="LegendButton">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Click to toggle the display of the list of special tokens you can use in the parameter field.</property>
+			  <property name="can_focus">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <signal name="toggled" handler="action_legend_button_toggled_cb" last_modification_time="Wed, 20 May 2009 22:13:56 GMT"/>
+
+			  <child>
+			    <widget class="GtkAlignment" id="alignment16">
+			      <property name="visible">True</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xscale">0</property>
+			      <property name="yscale">0</property>
+			      <property name="top_padding">0</property>
+			      <property name="bottom_padding">0</property>
+			      <property name="left_padding">0</property>
+			      <property name="right_padding">0</property>
+
+			      <child>
+				<widget class="GtkHBox" id="hbox62">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
+
+				  <child>
+				    <widget class="GtkImage" id="image25">
+				      <property name="visible">True</property>
+				      <property name="stock">gtk-help</property>
+				      <property name="icon_size">4</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkLabel" id="label158">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">_Legend</property>
+				      <property name="use_underline">True</property>
+				      <property name="use_markup">False</property>
+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap">False</property>
+				      <property name="selectable">False</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				      <property name="width_chars">-1</property>
+				      <property name="single_line_mode">False</property>
+				      <property name="angle">0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+				</widget>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox46">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkLabel" id="LabelAlign6">
+			  <property name="visible">True</property>
+			  <property name="label">  </property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="LabelExample">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">&lt;i&gt;&lt;b&gt;&lt;span size=&quot;small&quot;&gt;e.g., %s&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">True</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">True</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label134">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Action</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox394">
+	      <property name="border_width">10</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">12</property>
+
+	      <child>
+		<widget class="GtkLabel" id="aaaLabelAlign7">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Appears if file matches&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox398">
+		  <property name="border_width">10</property>
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox52">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkLabel" id="CLabelAlign1">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Filenames:</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkEntry" id="PatternEntry">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">A string with wildcards (? or *) that will be used to match the filenames. You can set several filename patterns by separating them with a semi-colon (;).</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text">*</property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char">*</property>
+			  <property name="activates_default">False</property>
+			  <signal name="changed" handler="action_field_changed_cb" last_modification_time="Tue, 19 May 2009 21:38:28 GMT"/>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox54">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkLabel" id="label146">
+			  <property name="visible">True</property>
+			  <property name="label">    </property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkCheckButton" id="MatchCaseButton">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">If selected, the filename patterns will be matched case sensitive (eg, *.jpg will not match photo.JPG)</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">Match case</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			  <signal name="toggled" handler="action_field_changed_cb" last_modification_time="Tue, 19 May 2009 21:38:42 GMT"/>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox53">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkLabel" id="CLabelAlign2">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Mimetypes:</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkEntry" id="MimeTypeEntry">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">A string with wildcards (? or *) that will be used to match the mimetypes of files. You can set several mimetype patterns by separating them with a semi-colon (;).</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text">*/*</property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char">*</property>
+			  <property name="activates_default">False</property>
+			  <signal name="changed" handler="action_field_changed_cb" last_modification_time="Tue, 19 May 2009 21:38:52 GMT"/>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="label45">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Appears if selection contains&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox21">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">True</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkRadioButton" id="OnlyFilesButton">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">Only files</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		      <signal name="toggled" handler="action_field_changed_cb" last_modification_time="Tue, 19 May 2009 21:41:30 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkRadioButton" id="OnlyFoldersButton">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">Only folders</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		      <property name="group">OnlyFilesButton</property>
+		      <signal name="toggled" handler="action_field_changed_cb" last_modification_time="Tue, 19 May 2009 21:41:41 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkRadioButton" id="BothButton">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">Both</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		      <property name="group">OnlyFilesButton</property>
+		      <signal name="toggled" handler="action_field_changed_cb" last_modification_time="Tue, 19 May 2009 21:41:50 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkCheckButton" id="AcceptMultipleButton">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="label" translatable="yes">Appears if selection has multiple files or folders</property>
+		  <property name="use_underline">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
+		  <property name="focus_on_click">True</property>
+		  <property name="active">False</property>
+		  <property name="inconsistent">False</property>
+		  <property name="draw_indicator">True</property>
+		  <signal name="toggled" handler="action_field_changed_cb" last_modification_time="Tue, 19 May 2009 21:39:05 GMT"/>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label135">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Conditions</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox340">
+	      <property name="border_width">12</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label46">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Appears if scheme is in this list&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox38">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkScrolledWindow" id="scrolledwindow4">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		      <property name="shadow_type">GTK_SHADOW_IN</property>
+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		      <child>
+			<widget class="GtkTreeView" id="SchemesTreeView">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Select the kind of files where you want your action to appear. If you don't know what to choose, try selecting just 'file' which is the most common choice. You can add a new scheme by clicking on the '+' button.</property>
+			  <property name="can_focus">True</property>
+			  <property name="headers_visible">False</property>
+			  <property name="rules_hint">True</property>
+			  <property name="reorderable">False</property>
+			  <property name="enable_search">True</property>
+			  <property name="fixed_height_mode">False</property>
+			  <property name="hover_selection">False</property>
+			  <property name="hover_expand">False</property>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox345">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkButton" id="button7">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Click to add a new scheme.</property>
+			  <property name="can_focus">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <signal name="clicked" handler="action_add_scheme_clicked" last_modification_time="Tue, 19 May 2009 21:39:22 GMT"/>
+
+			  <child>
+			    <widget class="GtkImage" id="image16">
+			      <property name="visible">True</property>
+			      <property name="stock">gtk-add</property>
+			      <property name="icon_size">4</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkButton" id="RemoveSchemeButton">
+			  <property name="visible">True</property>
+			  <property name="sensitive">False</property>
+			  <property name="tooltip" translatable="yes">Click to remove the selected scheme.</property>
+			  <property name="can_focus">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <signal name="clicked" handler="action_remove_scheme_clicked" last_modification_time="Tue, 19 May 2009 21:39:33 GMT"/>
+
+			  <child>
+			    <widget class="GtkImage" id="image17">
+			      <property name="visible">True</property>
+			      <property name="stock">gtk-remove</property>
+			      <property name="icon_size">4</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label142">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Advanced Conditions</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">6</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
 <widget class="GtkFileChooserDialog" id="FolderChooserDialog">
+  <property name="border_width">5</property>
   <property name="visible">True</property>
   <property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
   <property name="local_only">True</property>
@@ -2519,6 +3748,7 @@ place secondary text here</property>
 </widget>
 
 <widget class="GtkAboutDialog" id="AboutDialog">
+  <property name="border_width">5</property>
   <property name="destroy_with_parent">False</property>
   <property name="name">NACT</property>
   <property name="copyright" translatable="yes">(C) 2005-2007 Frederic Ruaudel &lt;grumz grumz net&gt;
diff --git a/po/ChangeLog b/po/ChangeLog
index 1e2915a..3ce3ea8 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,10 +1,14 @@
+2009-05-25 Pierre Wieser <pwieser trychlos org>
+
+	* POTFILES.in: Add nact-action-editor.c source file.
+
 2009-04-13 Mario Blättermann <mariobl svn gnome org>
 
-	* de.po: Updated German translation
+	* de.po: Updated German translation.
 
 2009-03-19 Amanpreet Singh Alam <aman src gnome org>
 
-	* pa.po: Updating Punjabi Translation
+	* pa.po: Updating Punjabi translation.
 
 2009-03-16  Inaki Larranaga Murgoitio  <dooteo euskalgnu org>
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index e04856e..3cd597c 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -3,6 +3,7 @@ nact/nautilus-actions-config.glade
 nact/nact.c
 nact/nact-utils.c
 nact/nact-editor.c
+nact/nact-action-editor.c
 nact/nact-import-export.c
 nact/nact-prefs.c
 nact/nact-profile-editor.c



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