[nautilus-actions] Implement %m and %M parameters for mimetypes



commit 36cb5f9d902b1204e81d50f88458f48711b09bc0
Author: pierre <pierre vfedora10 virtuals pwi>
Date:   Thu Aug 5 11:28:51 2010 +0200

    Implement %m and %M parameters for mimetypes
    
    Also review the example generation to not duplicate the parsing of the parameters.

 ChangeLog                                |   15 +++
 po/POTFILES.in                           |    1 +
 src/core/na-tokens.c                     |  147 +++++++++++++++++++++--------
 src/core/na-tokens.h                     |   29 +++++-
 src/nact/nact-icommand-tab.c             |   31 ++++++-
 src/nact/nautilus-actions-config-tool.ui |  152 ++++++++++++++++++++----------
 6 files changed, 283 insertions(+), 92 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 46c3d9d..9afff67 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2010-08-05 Pierre Wieser <pwieser trychlos org>
+
+	* po/POTFILES.in: Add src/core/na-tokens.c file.
+
+	* src/core/na-tokens.c:
+	* src/core/na-tokens.h (na_tokens_new_for_example): New function.
+
+	* src/core/na-tokens.c (parse_singular):
+	Implement %m and %M parameters for mimetypes.
+
+	* src/nact/nact-icommand-tab.c (parse_parameters):
+	Use a fake NATokens object to print an example of the command.
+
+	* src/nact/nautilus-actions-config-tool.ui: Fix some labels.
+
 2010-08-04 Pierre Wieser <pwieser trychlos org>
 
 	* src/core/na-tokens.c (is_singular_exec):
diff --git a/po/POTFILES.in b/po/POTFILES.in
index aeaa66f..741e449 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -13,6 +13,7 @@ src/core/na-object-item-factory.c
 src/core/na-object-menu.c
 src/core/na-object-profile.c
 src/core/na-object-profile-factory.c
+src/core/na-tokens.c
 src/io-desktop/nadp-desktop-provider.c
 src/io-gconf/nagp-gconf-provider.c
 src/io-xml/naxml-reader.c
diff --git a/src/core/na-tokens.c b/src/core/na-tokens.c
index 1add1c8..bb4c9a8 100644
--- a/src/core/na-tokens.c
+++ b/src/core/na-tokens.c
@@ -32,6 +32,7 @@
 #include <config.h>
 #endif
 
+#include <glib/gi18n.h>
 #include <string.h>
 
 #include <api/na-core-utils.h>
@@ -66,6 +67,8 @@ struct NATokensPrivate {
 	gchar   *basenames_woext_str;
 	GSList  *exts;
 	gchar   *exts_str;
+	GSList  *mimetypes;
+	gchar   *mimetypes_str;
 
 	gchar   *hostname;
 	gchar   *username;
@@ -75,15 +78,16 @@ struct NATokensPrivate {
 
 static GObjectClass *st_parent_class = NULL;
 
-static GType    register_type( void );
-static void     class_init( NATokensClass *klass );
-static void     instance_init( GTypeInstance *instance, gpointer klass );
-static void     instance_dispose( GObject *object );
-static void     instance_finalize( GObject *object );
+static GType     register_type( void );
+static void      class_init( NATokensClass *klass );
+static void      instance_init( GTypeInstance *instance, gpointer klass );
+static void      instance_dispose( GObject *object );
+static void      instance_finalize( GObject *object );
 
-static void     execute_action_command( const gchar *command, const NAObjectProfile *profile );
-static gboolean is_singular_exec( const NATokens *tokens, const gchar *exec );
-static gchar   *parse_singular( const NATokens *tokens, const gchar *input, guint i, gboolean utf8 );
+static NATokens *build_string_lists( NATokens *tokens );
+static void      execute_action_command( const gchar *command, const NAObjectProfile *profile );
+static gboolean  is_singular_exec( const NATokens *tokens, const gchar *exec );
+static gchar    *parse_singular( const NATokens *tokens, const gchar *input, guint i, gboolean utf8 );
 
 GType
 na_tokens_get_type( void )
@@ -165,6 +169,8 @@ instance_init( GTypeInstance *instance, gpointer klass )
 	self->private->basenames_woext_str = NULL;
 	self->private->exts = NULL;
 	self->private->exts_str = NULL;
+	self->private->mimetypes = NULL;
+	self->private->mimetypes_str = NULL;
 
 	self->private->hostname = NULL;
 	self->private->username = NULL;
@@ -210,6 +216,8 @@ instance_finalize( GObject *object )
 	g_free( self->private->username );
 	g_free( self->private->hostname );
 
+	g_free( self->private->mimetypes_str );
+	na_core_utils_slist_free( self->private->mimetypes );
 	g_free( self->private->exts_str );
 	na_core_utils_slist_free( self->private->exts );
 	g_free( self->private->basenames_woext_str );
@@ -232,6 +240,67 @@ instance_finalize( GObject *object )
 }
 
 /**
+ * na_tokens_new_for_example:
+ *
+ * Returns: a new #NATokens object initialized with fake values for two
+ * regular files, in order to be used as an example of an expanded command
+ * line.
+ */
+NATokens *
+na_tokens_new_for_example( void )
+{
+	NATokens *tokens;
+	const gchar *ex_uri1 = _( "file:///path/to/file1.mid" );
+	const gchar *ex_uri2 = _( "file:///path/to/file2.jpeg" );
+	const gchar *ex_mimetype1 = _( "audio/x-midi" );
+	const gchar *ex_mimetype2 = _( "image/jpeg" );
+	const guint  ex_port = 8080;
+	const gchar *ex_host = _( "test.example.net" );
+	const gchar *ex_user = _( "user" );
+	NAGnomeVFSURI *vfs;
+	gchar *dirname, *bname, *bname_woext, *ext;
+	GSList *is;
+	gboolean first;
+
+	tokens = g_object_new( NA_TOKENS_TYPE, NULL );
+	first = TRUE;
+	tokens->private->count = 2;
+
+	tokens->private->uris = g_slist_append( tokens->private->uris, g_strdup( ex_uri1 ));
+	tokens->private->uris = g_slist_append( tokens->private->uris, g_strdup( ex_uri2 ));
+
+	for( is = tokens->private->uris ; is ; is = is->next ){
+		vfs = g_new0( NAGnomeVFSURI, 1 );
+		na_gnome_vfs_uri_parse( vfs, is->data );
+
+		tokens->private->filenames = g_slist_append( tokens->private->filenames, g_strdup( vfs->path ));
+		dirname = g_path_get_dirname( vfs->path );
+		tokens->private->basedirs = g_slist_append( tokens->private->basedirs, dirname );
+		bname = g_path_get_basename( vfs->path );
+		tokens->private->basenames = g_slist_append( tokens->private->basenames, bname );
+		na_core_utils_dir_split_ext( bname, &bname_woext, &ext );
+		tokens->private->basenames_woext = g_slist_append( tokens->private->basenames_woext, bname_woext );
+		tokens->private->exts = g_slist_append( tokens->private->exts, ext );
+
+		if( first ){
+			tokens->private->scheme = g_strdup( vfs->scheme );
+			first = FALSE;
+		}
+
+		na_gnome_vfs_uri_free( vfs );
+	}
+
+	tokens->private->mimetypes = g_slist_append( tokens->private->mimetypes, g_strdup( ex_mimetype1 ));
+	tokens->private->mimetypes = g_slist_append( tokens->private->mimetypes, g_strdup( ex_mimetype2 ));
+
+	tokens->private->hostname = g_strdup( ex_host );
+	tokens->private->username = g_strdup( ex_user );
+	tokens->private->port = ex_port;
+
+	return( build_string_lists( tokens ));
+}
+
+/**
  * na_tokens_new_from_selection:
  * @selection: a #GList list of #NASelectedInfo objects.
  *
@@ -243,7 +312,7 @@ na_tokens_new_from_selection( GList *selection )
 	static const gchar *thisfn = "na_tokens_new_from_selection";
 	NATokens *tokens;
 	GList *it;
-	gchar *uri, *filename, *basedir, *basename, *bname_woext, *ext;
+	gchar *uri, *filename, *basedir, *basename, *bname_woext, *ext, *mimetype;
 	GFile *location;
 	gboolean first;
 	NAGnomeVFSURI *vfs;
@@ -257,6 +326,7 @@ na_tokens_new_from_selection( GList *selection )
 
 	for( it = selection ; it ; it = it->next ){
 		location = na_selected_info_get_location( NA_SELECTED_INFO( it->data ));
+		mimetype = na_selected_info_get_mime_type( NA_SELECTED_INFO( it->data ));
 
 		uri = na_selected_info_get_uri( NA_SELECTED_INFO( it->data ));
 		filename = g_file_get_path( location );
@@ -283,18 +353,12 @@ na_tokens_new_from_selection( GList *selection )
 		tokens->private->basenames = g_slist_prepend( tokens->private->basenames, basename );
 		tokens->private->basenames_woext = g_slist_prepend( tokens->private->basenames_woext, bname_woext );
 		tokens->private->exts = g_slist_prepend( tokens->private->exts, ext );
+		tokens->private->mimetypes = g_slist_prepend( tokens->private->mimetypes, mimetype );
 
 		g_object_unref( location );
 	}
 
-	tokens->private->uris_str = na_core_utils_slist_join_at_end( tokens->private->uris, " " );
-	tokens->private->filenames_str = na_core_utils_slist_join_at_end( tokens->private->filenames, " " );
-	tokens->private->basedirs_str = na_core_utils_slist_join_at_end( tokens->private->basedirs, " " );
-	tokens->private->basenames_str = na_core_utils_slist_join_at_end( tokens->private->basenames, " " );
-	tokens->private->basenames_woext_str = na_core_utils_slist_join_at_end( tokens->private->basenames_woext, " " );
-	tokens->private->exts_str = na_core_utils_slist_join_at_end( tokens->private->exts, " " );
-
-	return( tokens );
+	return( build_string_lists( tokens ));
 }
 
 /**
@@ -305,27 +369,6 @@ na_tokens_new_from_selection( GList *selection )
  *
  * Expands the parameters in the given string.
  *
- * Valid parameters are :
- *
- * %b: (first) basename
- * %B: space-separated list of basenames
- * %c: count of selected items
- * %d: (first) base directory
- * %D: space-separated list of base directory of each selected items
- * %f: (first) file name
- * %F: space-separated list of selected file names
- * %h: hostname of the (first) URI
- * %n: username of the (first) URI
- * %p: port number of the (first) URI
- * %s: scheme of the (first) URI
- * %u: (first) URI
- * %U: space-separated list of selected URIs
- * %w: (first) basename without the extension
- * %W: space-separated list of basenames without their extension
- * %x: (first) extension
- * %X: space-separated list of extensions
- * %%: the « % » character
- *
  * Returns: a copy of @input string with tokens expanded, as a newly
  * allocated string which should be g_free() by the caller.
  */
@@ -374,6 +417,20 @@ na_tokens_execute_action( const NATokens *tokens, const NAObjectProfile *profile
 	g_free( exec );
 }
 
+static NATokens *
+build_string_lists( NATokens *tokens )
+{
+	tokens->private->uris_str = na_core_utils_slist_join_at_end( tokens->private->uris, " " );
+	tokens->private->filenames_str = na_core_utils_slist_join_at_end( tokens->private->filenames, " " );
+	tokens->private->basedirs_str = na_core_utils_slist_join_at_end( tokens->private->basedirs, " " );
+	tokens->private->basenames_str = na_core_utils_slist_join_at_end( tokens->private->basenames, " " );
+	tokens->private->basenames_woext_str = na_core_utils_slist_join_at_end( tokens->private->basenames_woext, " " );
+	tokens->private->exts_str = na_core_utils_slist_join_at_end( tokens->private->exts, " " );
+	tokens->private->mimetypes_str = na_core_utils_slist_join_at_end( tokens->private->mimetypes, " " );
+
+	return( tokens );
+}
+
 static void
 execute_action_command( const gchar *command, const NAObjectProfile *profile )
 {
@@ -543,6 +600,20 @@ parse_singular( const NATokens *tokens, const gchar *input, guint i, gboolean ut
 				}
 				break;
 
+			case 'm':
+				if( tokens->private->mimetypes ){
+					tmp = g_shell_quote( g_slist_nth_data( tokens->private->mimetypes, i ));
+					output = g_string_append( output, tmp );
+					g_free( tmp );
+				}
+				break;
+
+			case 'M':
+				if( tokens->private->mimetypes ){
+					output = g_string_append( output, tokens->private->mimetypes_str );
+				}
+				break;
+
 			case 'n':
 				if( tokens->private->username ){
 					tmp = g_shell_quote( tokens->private->username );
diff --git a/src/core/na-tokens.h b/src/core/na-tokens.h
index 802799f..d8116c4 100644
--- a/src/core/na-tokens.h
+++ b/src/core/na-tokens.h
@@ -48,10 +48,32 @@
  * plugin, attaching the result to each item in the context menu.
  *
  * Adding a parameter requires updating of :
- * - src/core/na-tokens.c::na_tokens_is_singular_exec()
- * - src/core/na-tokens.c::na_tokens_parse_parameters()
- * - nautilus-actions/nact/nact-icommand-tab.c:parse_parameters()
+ * - src/core/na-tokens.c::is_singular_exec()
+ * - src/core/na-tokens.c::parse_singular()
  * - src/nact/nautilus-actions-config-tool.ui:LegendDialog
+ *
+ * Valid parameters are :
+ *
+ * %b: (first) basename
+ * %B: space-separated list of basenames
+ * %c: count of selected items
+ * %d: (first) base directory
+ * %D: space-separated list of base directory of each selected items
+ * %f: (first) file name
+ * %F: space-separated list of selected file names
+ * %h: hostname of the (first) URI
+ * %m: (first) mimetype
+ * %M: space-separated list of mimetypes
+ * %n: username of the (first) URI
+ * %p: port number of the (first) URI
+ * %s: scheme of the (first) URI
+ * %u: (first) URI
+ * %U: space-separated list of selected URIs
+ * %w: (first) basename without the extension
+ * %W: space-separated list of basenames without their extension
+ * %x: (first) extension
+ * %X: space-separated list of extensions
+ * %%: the « % » character
  */
 
 #include <api/na-object-profile.h>
@@ -83,6 +105,7 @@ typedef struct {
 
 GType     na_tokens_get_type( void );
 
+NATokens *na_tokens_new_for_example   ( void );
 NATokens *na_tokens_new_from_selection( GList *selection );
 
 gchar    *na_tokens_parse_parameters( const NATokens *tokens, const gchar *string, gboolean utf8 );
diff --git a/src/nact/nact-icommand-tab.c b/src/nact/nact-icommand-tab.c
index c23cf5c..0322dd2 100644
--- a/src/nact/nact-icommand-tab.c
+++ b/src/nact/nact-icommand-tab.c
@@ -40,6 +40,7 @@
 
 #include <core/na-iprefs.h>
 #include <core/na-factory-object.h>
+#include <core/na-tokens.h>
 
 #include "base-window.h"
 #include "base-iprefs.h"
@@ -71,9 +72,10 @@ struct NactICommandTabInterfacePrivate {
 #define ICOMMAND_TAB_LEGEND_VISIBLE			"nact-icommand-tab-legend-dialog-visible"
 #define ICOMMAND_TAB_STATUSBAR_CONTEXT		"nact-icommand-tab-statusbar-context"
 
-static gboolean st_initialized = FALSE;
-static gboolean st_finalized = FALSE;
-static gboolean st_on_selection_change = FALSE;
+static gboolean  st_initialized = FALSE;
+static gboolean  st_finalized = FALSE;
+static gboolean  st_on_selection_change = FALSE;
+static NATokens *st_tokens = NULL;
 
 static GType      register_type( void );
 static void       interface_base_init( NactICommandTabInterface *klass );
@@ -287,6 +289,13 @@ nact_icommand_tab_runtime_init_toplevel( NactICommandTab *instance )
 				G_OBJECT( instance ),
 				IACTIONS_LIST_SIGNAL_COLUMN_EDITED,
 				G_CALLBACK( on_iactions_list_column_edited ));
+
+		/* allocate a static fake NATokens object which will be user to build
+		 * the example label - this object will be unreffed on dispose
+		 */
+		if( !st_tokens ){
+			st_tokens = na_tokens_new_for_example();
+		}
 	}
 }
 
@@ -321,6 +330,10 @@ nact_icommand_tab_dispose( NactICommandTab *instance )
 		g_debug( "%s: instance=%p", thisfn, ( void * ) instance );
 
 		legend_dialog_hide( instance );
+
+		if( st_tokens ){
+			g_object_unref( st_tokens );
+		}
 	}
 }
 
@@ -657,6 +670,7 @@ on_wdir_changed( GtkEntry *entry, NactICommandTab *instance )
 static gchar *
 parse_parameters( NactICommandTab *instance )
 {
+#if 0
 	GString *tmp_string = g_string_new( "" );
 	NAObjectItem *item;
 	NAObjectProfile *profile;
@@ -837,6 +851,17 @@ parse_parameters( NactICommandTab *instance )
 	g_free( iter );
 
 	return( g_string_free( tmp_string, FALSE ));
+#endif
+
+	const gchar *command = gtk_entry_get_text( GTK_ENTRY( get_path_entry( instance )));
+	const gchar *param_template = gtk_entry_get_text( GTK_ENTRY( get_parameters_entry( instance )));
+	gchar *exec, *returned;
+
+	exec = g_strdup_printf( "%s %s", command, param_template );
+	returned = na_tokens_parse_parameters( st_tokens, exec, FALSE );
+	g_free( exec );
+
+	return( returned );
 }
 
 static void
diff --git a/src/nact/nautilus-actions-config-tool.ui b/src/nact/nautilus-actions-config-tool.ui
index 0dfb147..89896bd 100644
--- a/src/nact/nautilus-actions-config-tool.ui
+++ b/src/nact/nautilus-actions-config-tool.ui
@@ -2503,7 +2503,7 @@ If the command is not found, or does not display the correct result, your item w
                                     </child>
                                     <child>
                                       <object class="GtkCheckButton" id="ActionReadonlyButton">
-                                        <property name="label" translatable="yes">Read-only</property>
+                                        <property name="label" translatable="yes">Read-only item</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
                                         <property name="receives_default">False</property>
@@ -2746,6 +2746,12 @@ If the command is not found, or does not display the correct result, your item w
       <placeholder/>
     </child>
     <child>
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
       <object class="GtkLabel" id="label3">
         <property name="visible">True</property>
         <property name="label" translatable="yes">This assistant will guide you through the process of importing items, actions or menus.</property>
@@ -2762,9 +2768,9 @@ If the command is not found, or does not display the correct result, your item w
           <object class="GtkFileChooserWidget" id="ImportFileChooser">
             <property name="visible">True</property>
             <property name="select_multiple">True</property>
-            <property name="preview_widget_active">False</property>
             <property name="local_only">False</property>
             <property name="use_preview_label">False</property>
+            <property name="preview_widget_active">False</property>
           </object>
           <packing>
             <property name="position">0</property>
@@ -3110,7 +3116,7 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
         <child>
           <object class="GtkTable" id="table5">
             <property name="visible">True</property>
-            <property name="n_rows">18</property>
+            <property name="n_rows">20</property>
             <property name="n_columns">2</property>
             <property name="column_spacing">2</property>
             <property name="row_spacing">6</property>
@@ -3191,8 +3197,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">9</property>
-                <property name="bottom_attach">10</property>
+                <property name="top_attach">11</property>
+                <property name="bottom_attach">12</property>
                 <property name="x_options">GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
@@ -3205,8 +3211,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">10</property>
-                <property name="bottom_attach">11</property>
+                <property name="top_attach">12</property>
+                <property name="bottom_attach">13</property>
                 <property name="x_options">GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
@@ -3219,8 +3225,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">11</property>
-                <property name="bottom_attach">12</property>
+                <property name="top_attach">13</property>
+                <property name="bottom_attach">14</property>
                 <property name="x_options">GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
@@ -3233,8 +3239,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">12</property>
-                <property name="bottom_attach">13</property>
+                <property name="top_attach">14</property>
+                <property name="bottom_attach">15</property>
                 <property name="x_options">GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
@@ -3247,8 +3253,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">17</property>
-                <property name="bottom_attach">18</property>
+                <property name="top_attach">19</property>
+                <property name="bottom_attach">20</property>
                 <property name="x_options">GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
@@ -3315,7 +3321,7 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
                 <property name="yalign">0</property>
-                <property name="label" translatable="yes">space-separated list of the base directory of the selected file(s)/folder(s).</property>
+                <property name="label" translatable="yes">space-separated list of the base directories of the selected file(s)/folder(s).</property>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -3335,8 +3341,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">9</property>
-                <property name="bottom_attach">10</property>
+                <property name="top_attach">11</property>
+                <property name="bottom_attach">12</property>
                 <property name="x_options">GTK_FILL</property>
               </packing>
             </child>
@@ -3345,13 +3351,13 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
                 <property name="yalign">0</property>
-                <property name="label" translatable="yes">scheme of the (first) URI.</property>
+                <property name="label" translatable="yes">scheme of the (first) selected URI.</property>
               </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">10</property>
-                <property name="bottom_attach">11</property>
+                <property name="top_attach">12</property>
+                <property name="bottom_attach">13</property>
                 <property name="x_options">GTK_FILL</property>
               </packing>
             </child>
@@ -3365,8 +3371,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">11</property>
-                <property name="bottom_attach">12</property>
+                <property name="top_attach">13</property>
+                <property name="bottom_attach">14</property>
                 <property name="x_options">GTK_FILL</property>
               </packing>
             </child>
@@ -3375,13 +3381,13 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
                 <property name="yalign">0</property>
-                <property name="label" translatable="yes">space-separated list of selected URIs.</property>
+                <property name="label" translatable="yes">space-separated list of the URIs of the selected file(s)/folder(s).</property>
               </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">12</property>
-                <property name="bottom_attach">13</property>
+                <property name="top_attach">14</property>
+                <property name="bottom_attach">15</property>
                 <property name="x_options">GTK_FILL</property>
               </packing>
             </child>
@@ -3395,8 +3401,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">17</property>
-                <property name="bottom_attach">18</property>
+                <property name="top_attach">19</property>
+                <property name="bottom_attach">20</property>
                 <property name="x_options">GTK_FILL</property>
               </packing>
             </child>
@@ -3441,7 +3447,7 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
               <object class="GtkLabel" id="label63">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes">space-separated list of the selected filename(s).</property>
+                <property name="label" translatable="yes">space-separated list of the filenames of the selected file(s)/folder(s).</property>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -3483,8 +3489,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">8</property>
-                <property name="bottom_attach">9</property>
+                <property name="top_attach">10</property>
+                <property name="bottom_attach">11</property>
               </packing>
             </child>
             <child>
@@ -3496,8 +3502,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">8</property>
-                <property name="bottom_attach">9</property>
+                <property name="top_attach">10</property>
+                <property name="bottom_attach">11</property>
               </packing>
             </child>
             <child>
@@ -3509,8 +3515,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">13</property>
-                <property name="bottom_attach">14</property>
+                <property name="top_attach">15</property>
+                <property name="bottom_attach">16</property>
               </packing>
             </child>
             <child>
@@ -3522,8 +3528,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">14</property>
-                <property name="bottom_attach">15</property>
+                <property name="top_attach">16</property>
+                <property name="bottom_attach">17</property>
               </packing>
             </child>
             <child>
@@ -3535,21 +3541,21 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">15</property>
-                <property name="bottom_attach">16</property>
+                <property name="top_attach">17</property>
+                <property name="bottom_attach">18</property>
               </packing>
             </child>
             <child>
               <object class="GtkLabel" id="label79">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes">space-separated list of the extension of the selected file(s)/folder(s).</property>
+                <property name="label" translatable="yes">space-separated list of the extensions of the selected file(s)/folder(s).</property>
               </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">16</property>
-                <property name="bottom_attach">17</property>
+                <property name="top_attach">18</property>
+                <property name="bottom_attach">19</property>
               </packing>
             </child>
             <child>
@@ -3560,8 +3566,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">13</property>
-                <property name="bottom_attach">14</property>
+                <property name="top_attach">15</property>
+                <property name="bottom_attach">16</property>
               </packing>
             </child>
             <child>
@@ -3572,8 +3578,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">14</property>
-                <property name="bottom_attach">15</property>
+                <property name="top_attach">16</property>
+                <property name="bottom_attach">17</property>
               </packing>
             </child>
             <child>
@@ -3584,8 +3590,8 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">15</property>
-                <property name="bottom_attach">16</property>
+                <property name="top_attach">17</property>
+                <property name="bottom_attach">18</property>
               </packing>
             </child>
             <child>
@@ -3596,8 +3602,58 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
                 <property name="use_markup">True</property>
               </object>
               <packing>
-                <property name="top_attach">16</property>
-                <property name="bottom_attach">17</property>
+                <property name="top_attach">18</property>
+                <property name="bottom_attach">19</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label83">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">&lt;b&gt;%m&lt;/b&gt; :</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="top_attach">8</property>
+                <property name="bottom_attach">9</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label85">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">&lt;b&gt;%M&lt;/b&gt; :</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="top_attach">9</property>
+                <property name="bottom_attach">10</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label84">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">(first) mimetype.</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">8</property>
+                <property name="bottom_attach">9</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label86">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">space-separated list of the mimetypes of the selected file(s)/folder(s).</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">9</property>
+                <property name="bottom_attach">10</property>
               </packing>
             </child>
           </object>



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