[nautilus-actions] Define 'Ask user' new import mode
- From: Pierre Wieser <pwieser src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [nautilus-actions] Define 'Ask user' new import mode
- Date: Thu, 15 Oct 2009 20:49:26 +0000 (UTC)
commit d93ad5cba5822048606d9ba2cdcc31eaed38b035
Author: pierre <pierre vfedora10 virtuals pwi>
Date: Thu Oct 15 14:58:19 2009 +0200
Define 'Ask user' new import mode
ChangeLog | 27 ++
data/nautilus-actions.schemas.in | 17 ++-
po/POTFILES.in | 1 +
src/common/na-iprefs.c | 17 +-
src/common/na-iprefs.h | 3 +-
src/nact/Makefile.am | 2 +
src/nact/nact-assistant-import-ask.c | 405 ++++++++++++++++++++++++++++++
src/nact/nact-assistant-import-ask.h | 81 ++++++
src/nact/nact-assistant-import.c | 42 +++-
src/nact/nact-main-window.c | 69 +++---
src/nact/nact-main-window.h | 2 +-
src/nact/nact-preferences-editor.c | 22 +-
src/nact/nautilus-actions-config-tool.ui | 227 ++++++++++++++++-
13 files changed, 838 insertions(+), 77 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index bc7abd9..1b57afb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2009-10-15 Pierre Wieser <pwieser trychlos org>
+
+ New 'Ask user' import mode.
+
+ * data/nautilus-actions.schemas.in:
+ Define new 'import-ask-user' preference schema.
+ Add 'Ask user' new value for 'import-mode' preference.
+
+ * po/POTFILES.in:
+ * src/nact/Makefile.am:
+ Add 'src/nact/nact-assistant-import-ask.c' new file.
+
+ * src/common/na-iprefs.c:
+ * src/common/na-iprefs.h:
+ * src/nact/nact-assistant-import.c:
+ * src/nact/nact-preferences-editor.c:
+ Define IPREFS_IMPORT_ASK new import mode.
+
+ * src/nact/nact-main-window.c
+ (nact_main_window_action_exists): Renamed as
+ nact_main_window_get_item.
+
+ * src/nact/nautilus-actions-config-tool.ui:
+ * src/nact/nact-assistant-import-ask.c:
+ * src/nact/nact-assistant-import-ask.h:
+ New AssistantImportAsk dialog box.
+
2009-10-14 Pierre Wieser <pwieser trychlos org>
* configure.ac:
diff --git a/data/nautilus-actions.schemas.in b/data/nautilus-actions.schemas.in
index 5eb5ba4..b72fe04 100644
--- a/data/nautilus-actions.schemas.in
+++ b/data/nautilus-actions.schemas.in
@@ -275,7 +275,7 @@ All schemes used by Nautilus can be used here.</long>
</schema>
<schema>
- <key>/schemas/apps/nautilus-actions/preferences/import-assistant</key>
+ <key>/schemas/apps/nautilus-actions/preferences/import-ask-user</key>
<owner>nautilus-actions</owner>
<type>list</type>
<list_type>int</list_type>
@@ -287,6 +287,18 @@ All schemes used by Nautilus can be used here.</long>
</schema>
<schema>
+ <key>/schemas/apps/nautilus-actions/preferences/import-assistant</key>
+ <owner>nautilus-actions</owner>
+ <type>list</type>
+ <list_type>int</list_type>
+ <locale name="C">
+ <short>Position and size of the interaction dialog at import time</short>
+ <long>Position and size of the interaction dialog at import time ; default is set by the window manager</long>
+ </locale>
+ <default>[]</default>
+ </schema>
+
+ <schema>
<key>/schemas/apps/nautilus-actions/preferences/import-folder-uri</key>
<owner>nautilus-actions</owner>
<type>string</type>
@@ -306,7 +318,8 @@ All schemes used by Nautilus can be used here.</long>
<long>Last import mode choosen in the Import assistant. Possible values are :
- "NoImport": do not import an action whose UUID already exists,
- "Renumber": allocate a new UUID if the imported UUID already exists,
-- "Override": override the existing action with the imported one.</long>
+- "Override": override the existing action with the imported one,
+- "Ask": ask the user each time.</long>
</locale>
<default>/tmp</default>
</schema>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ccf8346..1f3e416 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -9,6 +9,7 @@ src/nact/nact-application.c
src/nact/nact-assistant-export.c
src/nact/nact-assistant-export.ui
src/nact/nact-assistant-import.c
+src/nact/nact-assistant-import-ask.c
src/nact/nact.desktop.in
src/nact/nact-iactions-list.c
src/nact/nact-iaction-tab.c
diff --git a/src/common/na-iprefs.c b/src/common/na-iprefs.c
index e585af3..b7b3e6e 100644
--- a/src/common/na-iprefs.c
+++ b/src/common/na-iprefs.c
@@ -40,8 +40,9 @@
static GConfEnumStringPair import_mode_table[] = {
{ IPREFS_IMPORT_NO_IMPORT, "NoImport" },
- { IPREFS_IMPORT_RENUMBER , "Renumber" },
- { IPREFS_IMPORT_OVERRIDE , "Override" },
+ { IPREFS_IMPORT_RENUMBER, "Renumber" },
+ { IPREFS_IMPORT_OVERRIDE, "Override" },
+ { IPREFS_IMPORT_ASK, "Ask" },
{ 0, NULL }
};
@@ -68,11 +69,13 @@ na_iprefs_migrate_key( NAIPrefs *instance, const gchar *old_key, const gchar *ne
g_debug( "%s: instance=%p, old_key=%s, new_key=%s", thisfn, ( void * ) instance, old_key, new_key );
g_return_if_fail( NA_IS_IPREFS( instance ));
- value = get_value( na_iprefs_get_gconf_client( instance ), NA_GCONF_PREFS_PATH, old_key );
-
- if( value ){
- set_value( na_iprefs_get_gconf_client( instance ), NA_GCONF_PREFS_PATH, new_key, value );
- gconf_value_free( value );
+ value = get_value( na_iprefs_get_gconf_client( instance ), NA_GCONF_PREFS_PATH, new_key );
+ if( !value ){
+ value = get_value( na_iprefs_get_gconf_client( instance ), NA_GCONF_PREFS_PATH, old_key );
+ if( value ){
+ set_value( na_iprefs_get_gconf_client( instance ), NA_GCONF_PREFS_PATH, new_key, value );
+ gconf_value_free( value );
+ }
}
/* do not remove entries which may be always used by another,
diff --git a/src/common/na-iprefs.h b/src/common/na-iprefs.h
index 72e53f1..4ae7031 100644
--- a/src/common/na-iprefs.h
+++ b/src/common/na-iprefs.h
@@ -54,7 +54,8 @@ G_BEGIN_DECLS
enum {
IPREFS_IMPORT_NO_IMPORT = 1,
IPREFS_IMPORT_RENUMBER,
- IPREFS_IMPORT_OVERRIDE
+ IPREFS_IMPORT_OVERRIDE,
+ IPREFS_IMPORT_ASK
};
#define IPREFS_RELABEL_MENUS "iprefs-relabel-menus"
diff --git a/src/nact/Makefile.am b/src/nact/Makefile.am
index 841a1c6..e5194a8 100644
--- a/src/nact/Makefile.am
+++ b/src/nact/Makefile.am
@@ -66,6 +66,8 @@ nautilus_actions_config_tool_SOURCES = \
nact-assistant-export.h \
nact-assistant-import.c \
nact-assistant-import.h \
+ nact-assistant-import-ask.c \
+ nact-assistant-import-ask.h \
nact-clipboard.c \
nact-clipboard.h \
nact-iactions-list.c \
diff --git a/src/nact/nact-assistant-import-ask.c b/src/nact/nact-assistant-import-ask.c
new file mode 100644
index 0000000..1023293
--- /dev/null
+++ b/src/nact/nact-assistant-import-ask.c
@@ -0,0 +1,405 @@
+/*
+ * Nautilus Actions
+ * A Nautilus extension which offers configurable context menu actions.
+ *
+ * Copyright (C) 2005 The GNOME Foundation
+ * Copyright (C) 2006, 2007, 2008 Frederic Ruaudel and others (see AUTHORS)
+ * Copyright (C) 2009 Pierre Wieser and others (see AUTHORS)
+ *
+ * This Program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this Library; see the file COPYING. If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors:
+ * Frederic Ruaudel <grumz grumz net>
+ * Rodrigo Moya <rodrigo gnome-db org>
+ * Pierre Wieser <pwieser trychlos org>
+ * ... and many others (see AUTHORS)
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib/gi18n.h>
+
+#include <common/na-iprefs.h>
+#include <common/na-object-api.h>
+
+#include "nact-application.h"
+#include "nact-assistant-import-ask.h"
+
+/* private class data
+ */
+struct NactAssistantImportAskClassPrivate {
+ void *empty; /* so that gcc -pedantic is happy */
+};
+
+/* private instance data
+ */
+struct NactAssistantImportAskPrivate {
+ gboolean dispose_has_run;
+ NactMainWindow *parent;
+ const gchar *uri;
+ NAObjectAction *action;
+ NAObjectItem *exist;
+ gint mode;
+};
+
+static BaseDialogClass *st_parent_class = NULL;
+
+static GType register_type( void );
+static void class_init( NactAssistantImportAskClass *klass );
+static void instance_init( GTypeInstance *instance, gpointer klass );
+static void instance_dispose( GObject *dialog );
+static void instance_finalize( GObject *dialog );
+
+static NactAssistantImportAsk *assistant_import_ask_new( NactApplication *application );
+
+static gchar *base_get_iprefs_window_id( BaseWindow *window );
+static gchar *base_get_dialog_name( BaseWindow *window );
+static void on_base_initial_load_dialog( NactAssistantImportAsk *editor, gpointer user_data );
+static void on_base_runtime_init_dialog( NactAssistantImportAsk *editor, gpointer user_data );
+static void on_base_all_widgets_showed( NactAssistantImportAsk *editor, gpointer user_data );
+static void on_cancel_clicked( GtkButton *button, NactAssistantImportAsk *editor );
+static void on_ok_clicked( GtkButton *button, NactAssistantImportAsk *editor );
+static void get_mode( NactAssistantImportAsk *editor );
+static gboolean base_dialog_response( GtkDialog *dialog, gint code, BaseWindow *window );
+
+GType
+nact_assistant_import_ask_get_type( void )
+{
+ static GType dialog_type = 0;
+
+ if( !dialog_type ){
+ dialog_type = register_type();
+ }
+
+ return( dialog_type );
+}
+
+static GType
+register_type( void )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_register_type";
+ GType type;
+
+ static GTypeInfo info = {
+ sizeof( NactAssistantImportAskClass ),
+ ( GBaseInitFunc ) NULL,
+ ( GBaseFinalizeFunc ) NULL,
+ ( GClassInitFunc ) class_init,
+ NULL,
+ NULL,
+ sizeof( NactAssistantImportAsk ),
+ 0,
+ ( GInstanceInitFunc ) instance_init
+ };
+
+ g_debug( "%s", thisfn );
+
+ type = g_type_register_static( BASE_DIALOG_TYPE, "NactAssistantImportAsk", &info, 0 );
+
+ return( type );
+}
+
+static void
+class_init( NactAssistantImportAskClass *klass )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_class_init";
+ GObjectClass *object_class;
+ BaseWindowClass *base_class;
+
+ g_debug( "%s: klass=%p", thisfn, ( void * ) klass );
+
+ st_parent_class = g_type_class_peek_parent( klass );
+
+ object_class = G_OBJECT_CLASS( klass );
+ object_class->dispose = instance_dispose;
+ object_class->finalize = instance_finalize;
+
+ klass->private = g_new0( NactAssistantImportAskClassPrivate, 1 );
+
+ base_class = BASE_WINDOW_CLASS( klass );
+ base_class->dialog_response = base_dialog_response;
+ base_class->get_toplevel_name = base_get_dialog_name;
+ base_class->get_iprefs_window_id = base_get_iprefs_window_id;
+}
+
+static void
+instance_init( GTypeInstance *instance, gpointer klass )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_instance_init";
+ NactAssistantImportAsk *self;
+
+ g_debug( "%s: instance=%p, klass=%p", thisfn, ( void * ) instance, ( void * ) klass );
+ g_return_if_fail( NACT_IS_ASSISTANT_IMPORT_ASK( instance ));
+ self = NACT_ASSISTANT_IMPORT_ASK( instance );
+
+ self->private = g_new0( NactAssistantImportAskPrivate, 1 );
+
+ base_window_signal_connect(
+ BASE_WINDOW( instance ),
+ G_OBJECT( instance ),
+ BASE_WINDOW_SIGNAL_INITIAL_LOAD,
+ G_CALLBACK( on_base_initial_load_dialog ));
+
+ base_window_signal_connect(
+ BASE_WINDOW( instance ),
+ G_OBJECT( instance ),
+ BASE_WINDOW_SIGNAL_RUNTIME_INIT,
+ G_CALLBACK( on_base_runtime_init_dialog ));
+
+ base_window_signal_connect(
+ BASE_WINDOW( instance ),
+ G_OBJECT( instance ),
+ BASE_WINDOW_SIGNAL_ALL_WIDGETS_SHOWED,
+ G_CALLBACK( on_base_all_widgets_showed));
+
+ self->private->dispose_has_run = FALSE;
+}
+
+static void
+instance_dispose( GObject *dialog )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_instance_dispose";
+ NactAssistantImportAsk *self;
+
+ g_debug( "%s: dialog=%p", thisfn, ( void * ) dialog );
+ g_return_if_fail( NACT_IS_ASSISTANT_IMPORT_ASK( dialog ));
+ self = NACT_ASSISTANT_IMPORT_ASK( dialog );
+
+ if( !self->private->dispose_has_run ){
+
+ self->private->dispose_has_run = TRUE;
+
+ /* chain up to the parent class */
+ if( G_OBJECT_CLASS( st_parent_class )->dispose ){
+ G_OBJECT_CLASS( st_parent_class )->dispose( dialog );
+ }
+ }
+}
+
+static void
+instance_finalize( GObject *dialog )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_instance_finalize";
+ NactAssistantImportAsk *self;
+
+ g_debug( "%s: dialog=%p", thisfn, ( void * ) dialog );
+ g_return_if_fail( NACT_IS_ASSISTANT_IMPORT_ASK( dialog ));
+ self = NACT_ASSISTANT_IMPORT_ASK( dialog );
+
+ g_free( self->private );
+
+ /* chain call to parent class */
+ if( G_OBJECT_CLASS( st_parent_class )->finalize ){
+ G_OBJECT_CLASS( st_parent_class )->finalize( dialog );
+ }
+}
+
+/*
+ * Returns a newly allocated NactAssistantImportAsk object.
+ */
+static NactAssistantImportAsk *
+assistant_import_ask_new( NactApplication *application )
+{
+ return( g_object_new( NACT_ASSISTANT_IMPORT_ASK_TYPE, BASE_WINDOW_PROP_APPLICATION, application, NULL ));
+}
+
+/**
+ * nact_assistant_import_ask_run:
+ * @parent: the BaseWindow parent of this dialog
+ * (usually the NactMainWindow).
+ *
+ * Initializes and runs the dialog.
+ *
+ * Returns: the mode choosen by the user ; it defaults to NO_IMPORT.
+ */
+gint
+nact_assistant_import_ask_user( NactMainWindow *parent, const gchar *uri, NAObjectAction *action, NAObjectItem *exist )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_run";
+ NactApplication *application;
+ NactAssistantImportAsk *editor;
+ gint mode;
+
+ g_debug( "%s: parent=%p", thisfn, ( void * ) parent );
+ g_return_val_if_fail( BASE_IS_WINDOW( parent ), IPREFS_IMPORT_NO_IMPORT );
+
+ application = NACT_APPLICATION( base_window_get_application( BASE_WINDOW( parent )));
+ g_assert( NACT_IS_APPLICATION( application ));
+
+ editor = assistant_import_ask_new( application );
+ editor->private->parent = parent;
+ editor->private->uri = uri;
+ editor->private->action = action;
+ editor->private->exist = exist;
+ editor->private->mode = IPREFS_IMPORT_NO_IMPORT;
+
+ base_window_run( BASE_WINDOW( editor ));
+ mode = editor->private->mode;
+ g_object_unref( editor );
+
+ return( mode );
+}
+
+static gchar *
+base_get_iprefs_window_id( BaseWindow *window )
+{
+ return( g_strdup( "import-ask-user" ));
+}
+
+static gchar *
+base_get_dialog_name( BaseWindow *window )
+{
+ return( g_strdup( "AssistantImportAsk" ));
+}
+
+static void
+on_base_initial_load_dialog( NactAssistantImportAsk *editor, gpointer user_data )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_on_initial_load_dialog";
+ /*GtkWindow *toplevel;
+ GtkWindow *parent_toplevel;*/
+
+ g_debug( "%s: editor=%p, user_data=%p", thisfn, ( void * ) editor, ( void * ) user_data );
+ g_return_if_fail( NACT_IS_ASSISTANT_IMPORT_ASK( editor ));
+}
+
+static void
+on_base_runtime_init_dialog( NactAssistantImportAsk *editor, gpointer user_data )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_on_runtime_init_dialog";
+ gchar *action_label, *exist_label;
+ gchar *label;
+ GtkWidget *widget;
+ GtkWidget *button;
+
+ g_debug( "%s: editor=%p, user_data=%p", thisfn, ( void * ) editor, ( void * ) user_data );
+ g_return_if_fail( NACT_IS_ASSISTANT_IMPORT_ASK( editor ));
+
+ action_label = na_object_get_label( editor->private->action );
+ exist_label = na_object_get_label( editor->private->exist );
+
+ /* i18n: The action <action_label> imported from <file> has the same id than <existing_label> */
+ label = g_strdup_printf(
+ _( "The action \"%s\" imported from \"%s\" has the same identifiant than the already existing \"%s\"." ),
+ action_label, editor->private->uri, exist_label );
+
+ widget = base_window_get_widget( BASE_WINDOW( editor ), "ImportAskLabel" );
+ gtk_label_set_text( GTK_LABEL( widget ), label );
+ g_free( label );
+
+ switch( editor->private->mode ){
+ case IPREFS_IMPORT_RENUMBER:
+ button = base_window_get_widget( BASE_WINDOW( editor ), "AskRenumberButton" );
+ break;
+
+ case IPREFS_IMPORT_OVERRIDE:
+ button = base_window_get_widget( BASE_WINDOW( editor ), "AskOverrideButton" );
+ break;
+
+ case IPREFS_IMPORT_NO_IMPORT:
+ default:
+ button = base_window_get_widget( BASE_WINDOW( editor ), "AskNoImportButton" );
+ break;
+ }
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( button ), TRUE );
+
+ base_window_signal_connect_by_name(
+ BASE_WINDOW( editor ),
+ "CancelButton1",
+ "clicked",
+ G_CALLBACK( on_cancel_clicked ));
+
+ base_window_signal_connect_by_name(
+ BASE_WINDOW( editor ),
+ "OKButton1",
+ "clicked",
+ G_CALLBACK( on_ok_clicked ));
+}
+
+static void
+on_base_all_widgets_showed( NactAssistantImportAsk *editor, gpointer user_data )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_on_all_widgets_showed";
+
+ g_debug( "%s: editor=%p, user_data=%p", thisfn, ( void * ) editor, ( void * ) user_data );
+ g_return_if_fail( NACT_IS_ASSISTANT_IMPORT_ASK( editor ));
+}
+
+static void
+on_cancel_clicked( GtkButton *button, NactAssistantImportAsk *editor )
+{
+ GtkWindow *toplevel = base_window_get_toplevel( BASE_WINDOW( editor ));
+
+ gtk_dialog_response( GTK_DIALOG( toplevel ), GTK_RESPONSE_CLOSE );
+}
+
+static void
+on_ok_clicked( GtkButton *button, NactAssistantImportAsk *editor )
+{
+ GtkWindow *toplevel = base_window_get_toplevel( BASE_WINDOW( editor ));
+
+ gtk_dialog_response( GTK_DIALOG( toplevel ), GTK_RESPONSE_OK );
+}
+
+static void
+get_mode( NactAssistantImportAsk *editor )
+{
+ gint import_mode;
+ GtkWidget *button;
+
+ import_mode = IPREFS_IMPORT_NO_IMPORT;
+ button = base_window_get_widget( BASE_WINDOW( editor ), "AskRenumberButton" );
+ if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( button ))){
+ import_mode = IPREFS_IMPORT_RENUMBER;
+ } else {
+ button = base_window_get_widget( BASE_WINDOW( editor ), "AskOverrideButton" );
+ if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( button ))){
+ import_mode = IPREFS_IMPORT_OVERRIDE;
+ }
+ }
+
+ editor->private->mode = import_mode;
+}
+
+static gboolean
+base_dialog_response( GtkDialog *dialog, gint code, BaseWindow *window )
+{
+ static const gchar *thisfn = "nact_assistant_import_ask_on_dialog_response";
+ NactAssistantImportAsk *editor;
+
+ g_debug( "%s: dialog=%p, code=%d, window=%p", thisfn, ( void * ) dialog, code, ( void * ) window );
+ g_assert( NACT_IS_ASSISTANT_IMPORT_ASK( window ));
+ editor = NACT_ASSISTANT_IMPORT_ASK( window );
+
+ switch( code ){
+ case GTK_RESPONSE_NONE:
+ case GTK_RESPONSE_DELETE_EVENT:
+ case GTK_RESPONSE_CLOSE:
+ case GTK_RESPONSE_CANCEL:
+
+ return( TRUE );
+ break;
+
+ case GTK_RESPONSE_OK:
+ get_mode( editor );
+ return( TRUE );
+ break;
+ }
+
+ return( FALSE );
+}
diff --git a/src/nact/nact-assistant-import-ask.h b/src/nact/nact-assistant-import-ask.h
new file mode 100644
index 0000000..70d3152
--- /dev/null
+++ b/src/nact/nact-assistant-import-ask.h
@@ -0,0 +1,81 @@
+/*
+ * Nautilus Actions
+ * A Nautilus extension which offers configurable context menu actions.
+ *
+ * Copyright (C) 2005 The GNOME Foundation
+ * Copyright (C) 2006, 2007, 2008 Frederic Ruaudel and others (see AUTHORS)
+ * Copyright (C) 2009 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_ASSISTANT_IMPORT_ASK_H__
+#define __NACT_ASSISTANT_IMPORT_ASK_H__
+
+/**
+ * SECTION: nact_assistant_import_ask
+ * @short_description: #NactAssistantImportAsk class definition.
+ * @include: nact/nact-assistant-import-ask.h
+ *
+ * This class is derived from BaseDialog.
+ * It is ran each time an imported action as the same UUID as an
+ * existing one, and the user want to be ask to known what to do
+ * with it.
+ */
+
+#include <runtime/na-object-action-class.h>
+
+#include "base-dialog.h"
+#include "nact-main-window.h"
+
+G_BEGIN_DECLS
+
+#define NACT_ASSISTANT_IMPORT_ASK_TYPE ( nact_assistant_import_ask_get_type())
+#define NACT_ASSISTANT_IMPORT_ASK( object ) ( G_TYPE_CHECK_INSTANCE_CAST( object, NACT_ASSISTANT_IMPORT_ASK_TYPE, NactAssistantImportAsk ))
+#define NACT_ASSISTANT_IMPORT_ASK_CLASS( klass ) ( G_TYPE_CHECK_CLASS_CAST( klass, NACT_ASSISTANT_IMPORT_ASK_TYPE, NactAssistantImportAskClass ))
+#define NACT_IS_ASSISTANT_IMPORT_ASK( object ) ( G_TYPE_CHECK_INSTANCE_TYPE( object, NACT_ASSISTANT_IMPORT_ASK_TYPE ))
+#define NACT_IS_ASSISTANT_IMPORT_ASK_CLASS( klass ) ( G_TYPE_CHECK_CLASS_TYPE(( klass ), NACT_ASSISTANT_IMPORT_ASK_TYPE ))
+#define NACT_ASSISTANT_IMPORT_ASK_GET_CLASS( object ) ( G_TYPE_INSTANCE_GET_CLASS(( object ), NACT_ASSISTANT_IMPORT_ASK_TYPE, NactAssistantImportAskClass ))
+
+typedef struct NactAssistantImportAskPrivate NactAssistantImportAskPrivate;
+
+typedef struct {
+ BaseDialog parent;
+ NactAssistantImportAskPrivate *private;
+}
+ NactAssistantImportAsk;
+
+typedef struct NactAssistantImportAskClassPrivate NactAssistantImportAskClassPrivate;
+
+typedef struct {
+ BaseDialogClass parent;
+ NactAssistantImportAskClassPrivate *private;
+}
+ NactAssistantImportAskClass;
+
+GType nact_assistant_import_ask_get_type( void );
+
+gint nact_assistant_import_ask_user( NactMainWindow *window, const gchar *uri, NAObjectAction *new_action, NAObjectItem *current );
+
+G_END_DECLS
+
+#endif /* __NACT_ASSISTANT_IMPORT_ASK_H__ */
diff --git a/src/nact/nact-assistant-import.c b/src/nact/nact-assistant-import.c
index ce056b5..b9ef08a 100644
--- a/src/nact/nact-assistant-import.c
+++ b/src/nact/nact-assistant-import.c
@@ -476,17 +476,22 @@ set_import_mode( NactAssistantImport *window, gint mode )
GtkToggleButton *button;
switch( mode ){
- case RENUMBER_MODE:
+ case IPREFS_IMPORT_ASK:
+ button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "AskButton" ));
+ gtk_toggle_button_set_active( button, TRUE );
+ break;
+
+ case IPREFS_IMPORT_RENUMBER:
button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "RenumberButton" ));
gtk_toggle_button_set_active( button, TRUE );
break;
- case OVERRIDE_MODE:
+ case IPREFS_IMPORT_OVERRIDE:
button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "OverrideButton" ));
gtk_toggle_button_set_active( button, TRUE );
break;
- case NO_IMPORT_MODE:
+ case IPREFS_IMPORT_NO_IMPORT:
default:
button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "NoImportButton" ));
gtk_toggle_button_set_active( button, TRUE );
@@ -561,19 +566,23 @@ get_import_mode( NactAssistantImport *window )
GtkToggleButton *no_import_button;
GtkToggleButton *renumber_button;
GtkToggleButton *override_button;
+ GtkToggleButton *ask_button;
gint mode;
no_import_button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "NoImportButton" ));
renumber_button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "RenumberButton" ));
override_button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "OverrideButton" ));
+ ask_button = GTK_TOGGLE_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "AskButton" ));
if( gtk_toggle_button_get_active( no_import_button )){
- mode = NO_IMPORT_MODE;
+ mode = IPREFS_IMPORT_NO_IMPORT;
} else if( gtk_toggle_button_get_active( renumber_button )){
- mode = RENUMBER_MODE;
+ mode = IPREFS_IMPORT_RENUMBER;
+ } else if( gtk_toggle_button_get_active( override_button )){
+ mode = IPREFS_IMPORT_OVERRIDE;
} else {
- g_return_val_if_fail( gtk_toggle_button_get_active( override_button ), 0 );
- mode = OVERRIDE_MODE;
+ g_return_val_if_fail( gtk_toggle_button_get_active( ask_button ), 0 );
+ mode = IPREFS_IMPORT_ASK;
}
return( mode );
@@ -592,21 +601,26 @@ add_import_mode( NactAssistantImport *window, const gchar *text )
result = NULL;
switch( mode ){
- case NO_IMPORT_MODE:
+ case IPREFS_IMPORT_NO_IMPORT:
label1 = g_strdup( gtk_button_get_label( GTK_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "NoImportButton" ))));
label2 = g_strdup( gtk_label_get_text( GTK_LABEL( base_window_get_widget( BASE_WINDOW( window ), "NoImportLabel"))));
break;
- case RENUMBER_MODE:
+ case IPREFS_IMPORT_RENUMBER:
label1 = g_strdup( gtk_button_get_label( GTK_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "RenumberButton" ))));
label2 = g_strdup( gtk_label_get_text( GTK_LABEL( base_window_get_widget( BASE_WINDOW( window ), "RenumberLabel"))));
break;
- case OVERRIDE_MODE:
+ case IPREFS_IMPORT_OVERRIDE:
label1 = g_strdup( gtk_button_get_label( GTK_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "OverrideButton" ))));
label2 = g_strdup( gtk_label_get_text( GTK_LABEL( base_window_get_widget( BASE_WINDOW( window ), "OverrideLabel"))));
break;
+ case IPREFS_IMPORT_ASK:
+ label1 = g_strdup( gtk_button_get_label( GTK_BUTTON( base_window_get_widget( BASE_WINDOW( window ), "AskButton" ))));
+ label2 = g_strdup( gtk_label_get_text( GTK_LABEL( base_window_get_widget( BASE_WINDOW( window ), "AskLabel"))));
+ break;
+
default:
break;
}
@@ -659,9 +673,11 @@ assistant_apply( BaseAssistant *wnd, GtkAssistant *assistant )
window->private->results = g_slist_prepend( window->private->results, str );
- items = g_list_prepend( NULL, action );
- nact_iactions_list_insert_items( NACT_IACTIONS_LIST( mainwnd ), items, NULL );
- na_object_free_items_list( items );
+ if( action ){
+ items = g_list_prepend( NULL, action );
+ nact_iactions_list_insert_items( NACT_IACTIONS_LIST( mainwnd ), items, NULL );
+ na_object_free_items_list( items );
+ }
}
na_utils_free_string_list( uris );
diff --git a/src/nact/nact-main-window.c b/src/nact/nact-main-window.c
index 5a7313d..99ab361 100644
--- a/src/nact/nact-main-window.c
+++ b/src/nact/nact-main-window.c
@@ -641,43 +641,60 @@ nact_main_window_new( BaseApplication *application )
}
/**
- * nact_main_window_action_exists:
+ * nact_main_window_get_clipboard:
+ * @window: this #NactMainWindow instance.
+ *
+ * Returns: the #nactClipboard convenience object.
+ */
+NactClipboard *
+nact_main_window_get_clipboard( const NactMainWindow *window )
+{
+ NactClipboard *clipboard = NULL;
+
+ g_return_val_if_fail( NACT_IS_MAIN_WINDOW( window ), NULL );
+
+ if( !window->private->dispose_has_run ){
+ clipboard = window->private->clipboard;
+ }
+
+ return( clipboard );
+}
+
+/**
+ * nact_main_window_get_item:
* @window: this #NactMainWindow instance.
* @uuid: the uuid to check for existancy.
*
- * Returns: %TRUE if the specified action already exists in the system,
- * %FALSE else.
+ * Returns: a pointer to the #NAObjectItem if it exists in the current
+ * tree, or %NULL else.
*
* Do not check in NAPivot: actions which are not displayed in the user
* interface are not considered as existing.
+ *
+ * Also note that the returned object may be an action, but also a menu.
*/
-gboolean
-nact_main_window_action_exists( const NactMainWindow *window, const gchar *uuid )
+NAObjectItem *
+nact_main_window_get_item( const NactMainWindow *window, const gchar *uuid )
{
- gboolean exists = FALSE;
+ NAObjectItem *exists;
NactApplication *application;
NAPivot *pivot;
- NAObject *action;
g_return_val_if_fail( NACT_IS_MAIN_WINDOW( window ), FALSE );
+ exists = NULL;
+
if( !window->private->dispose_has_run ){
/* leave here this dead code, in case I change of opinion later */
- if( FALSE ){
+ if( 0 ){
application = NACT_APPLICATION( base_window_get_application( BASE_WINDOW( window )));
pivot = nact_application_get_pivot( application );
- action = na_pivot_get_item( pivot, uuid );
- if( action ){
- exists = TRUE;
- }
+ exists = NA_OBJECT_ITEM( na_pivot_get_item( pivot, uuid ));
}
if( !exists ){
- action = nact_iactions_list_get_item( NACT_IACTIONS_LIST( window ), uuid );
- if( action ){
- exists = TRUE;
- }
+ exists = NA_OBJECT_ITEM( nact_iactions_list_get_item( NACT_IACTIONS_LIST( window ), uuid ));
}
}
@@ -685,26 +702,6 @@ nact_main_window_action_exists( const NactMainWindow *window, const gchar *uuid
}
/**
- * nact_main_window_get_clipboard:
- * @window: this #NactMainWindow instance.
- *
- * Returns: the #nactClipboard convenience object.
- */
-NactClipboard *
-nact_main_window_get_clipboard( const NactMainWindow *window )
-{
- NactClipboard *clipboard = NULL;
-
- g_return_val_if_fail( NACT_IS_MAIN_WINDOW( window ), NULL );
-
- if( !window->private->dispose_has_run ){
- clipboard = window->private->clipboard;
- }
-
- return( clipboard );
-}
-
-/**
* nact_main_window_has_modified_items:
* @window: this #NactMainWindow instance.
*
diff --git a/src/nact/nact-main-window.h b/src/nact/nact-main-window.h
index b24b996..687e9e0 100644
--- a/src/nact/nact-main-window.h
+++ b/src/nact/nact-main-window.h
@@ -76,8 +76,8 @@ GType nact_main_window_get_type( void );
NactMainWindow *nact_main_window_new( BaseApplication *application );
-gboolean nact_main_window_action_exists( const NactMainWindow *window, const gchar *uuid );
NactClipboard *nact_main_window_get_clipboard( const NactMainWindow *window );
+NAObjectItem *nact_main_window_get_item( const NactMainWindow *window, const gchar *uuid );
gboolean nact_main_window_has_modified_items( const NactMainWindow *window );
void nact_main_window_move_to_deleted( NactMainWindow *window, GList *items );
void nact_main_window_reload( NactMainWindow *window );
diff --git a/src/nact/nact-preferences-editor.c b/src/nact/nact-preferences-editor.c
index 0ae4c81..5a0dc9e 100644
--- a/src/nact/nact-preferences-editor.c
+++ b/src/nact/nact-preferences-editor.c
@@ -324,8 +324,8 @@ on_base_runtime_init_dialog( NactPreferencesEditor *editor, gpointer user_data )
*/
import_mode = na_iprefs_get_import_mode( NA_IPREFS( pivot ));
switch( import_mode ){
- case IPREFS_IMPORT_NO_IMPORT:
- button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsNoImportButton" );
+ case IPREFS_IMPORT_ASK:
+ button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsAskButton" );
break;
case IPREFS_IMPORT_RENUMBER:
@@ -333,9 +333,13 @@ on_base_runtime_init_dialog( NactPreferencesEditor *editor, gpointer user_data )
break;
case IPREFS_IMPORT_OVERRIDE:
- default:
button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsOverrideButton" );
break;
+
+ case IPREFS_IMPORT_NO_IMPORT:
+ default:
+ button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsNoImportButton" );
+ break;
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( button ), TRUE );
@@ -433,17 +437,17 @@ save_preferences( NactPreferencesEditor *editor )
/* third tab: tools preferences
*/
import_mode = IPREFS_IMPORT_NO_IMPORT;
- button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsNoImportButton" );
+ button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsRenumberButton" );
if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( button ))){
- import_mode = IPREFS_IMPORT_NO_IMPORT;
+ import_mode = IPREFS_IMPORT_RENUMBER;
} else {
- button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsRenumberButton" );
+ button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsOverrideButton" );
if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( button ))){
- import_mode = IPREFS_IMPORT_RENUMBER;
+ import_mode = IPREFS_IMPORT_OVERRIDE;
} else {
- button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsOverrideButton" );
+ button = base_window_get_widget( BASE_WINDOW( editor ), "PrefsAskButton" );
if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( button ))){
- import_mode = IPREFS_IMPORT_OVERRIDE;
+ import_mode = IPREFS_IMPORT_ASK;
}
}
}
diff --git a/src/nact/nautilus-actions-config-tool.ui b/src/nact/nautilus-actions-config-tool.ui
index 8f74027..4170d52 100644
--- a/src/nact/nautilus-actions-config-tool.ui
+++ b/src/nact/nautilus-actions-config-tool.ui
@@ -1017,9 +1017,9 @@ Defining several profiles lets you have several commands, each applying with a d
<object class="GtkFileChooserWidget" id="ImportFileChooser">
<property name="visible">True</property>
<property name="preview_widget_active">False</property>
- <property name="local_only">False</property>
- <property name="use_preview_label">False</property>
<property name="select_multiple">True</property>
+ <property name="use_preview_label">False</property>
+ <property name="local_only">False</property>
</object>
<packing>
<property name="position">0</property>
@@ -1165,7 +1165,7 @@ The existing action will not be modified.</property>
<property name="xalign">0</property>
<property name="xpad">16</property>
<property name="label" translatable="yes">The action found in the selected file will silently override the current action which has the same identifiant.
-Be warned: you will not be prompted another time. This mode may be dangerous.</property>
+Be warned: this mode may be dangerous. You will not be prompted another time.</property>
<property name="wrap">True</property>
</object>
<packing>
@@ -1183,6 +1183,49 @@ Be warned: you will not be prompted another time. This mode may be dangerous.</p
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkVBox" id="vbox36">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="AskButton">
+ <property name="label" translatable="yes">Ask me</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">NoImportButton</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox8">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="AskLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">16</property>
+ <property name="label" translatable="yes">You will be asked each time an imported UUID already exists.</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="padding">4</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="position">1</property>
@@ -1947,7 +1990,7 @@ If there is no root submenu, a 'Nautilus Actions' one is created.</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">The imported action will silently override the current action which has the same identifiant.
-Be warned: you will not be prompted another time. This mode may be dangerous. </property>
+Be warned: this mode may be dangerous. You will not be prompted another time.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
<property name="group">PrefsNoImportButton</property>
@@ -1956,6 +1999,20 @@ Be warned: you will not be prompted another time. This mode may be dangerous. </
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkRadioButton" id="PrefsAskButton">
+ <property name="label" translatable="yes">_Ask me.</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">PrefsNoImportButton</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
</child>
</object>
@@ -2046,18 +2103,172 @@ Be warned: you will not be prompted another time. This mode may be dangerous. </
<action-widget response="0">OKButton</action-widget>
</action-widgets>
</object>
+ <object class="GtkDialog" id="AssistantImportAsk">
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Already existing action</property>
+ <property name="modal">True</property>
+ <property name="type_hint">normal</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkVBox" id="vbox37">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkVBox" id="vbox39">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="ImportAskLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">6</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label47">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">6</property>
+ <property name="label" translatable="yes">What should I do with this ?</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox38">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="AskNoImportButton">
+ <property name="label" translatable="yes">Do _not import the action</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Existing action will remain unchanged.</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="AskRenumberButton">
+ <property name="label" translatable="yes">Import the action, _renumbering it</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Existing action will remain unchanged.</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">AskNoImportButton</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="AskOverrideButton">
+ <property name="label" translatable="yes">_Override the existing action</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">The imported action will override the existing one.
+Be warned: this mode may be dangerous. You will not be prompted another time.</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">AskNoImportButton</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="CancelButton1">
+ <property name="label" translatable="yes">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="OKButton1">
+ <property name="label" translatable="yes">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">CancelButton1</action-widget>
+ <action-widget response="0">OKButton1</action-widget>
+ </action-widgets>
+ </object>
<object class="GtkSizeGroup" id="CommandLabelSizeGroup">
<widgets>
- <widget name="CommandExamplePreLabel"/>
- <widget name="CommandParametersLabel"/>
- <widget name="CommandPathLabel"/>
<widget name="ProfileLabelLabel"/>
+ <widget name="CommandPathLabel"/>
+ <widget name="CommandParametersLabel"/>
+ <widget name="CommandExamplePreLabel"/>
</widgets>
</object>
<object class="GtkSizeGroup" id="CommandButtonSizeGroup">
<widgets>
- <widget name="CommandLegendButton"/>
<widget name="CommandPathButton"/>
+ <widget name="CommandLegendButton"/>
</widgets>
</object>
</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]