gnome-commander r1611 - in trunk: . doc doc/C src
- From: epiotr svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-commander r1611 - in trunk: . doc doc/C src
- Date: Tue, 4 Mar 2008 17:56:57 +0000 (GMT)
Author: epiotr
Date: Tue Mar 4 17:56:57 2008
New Revision: 1611
URL: http://svn.gnome.org/viewvc/gnome-commander?rev=1611&view=rev
Log:
Multi-Rename-Tool - new $x and $X placeholders for random hexadecimal numbers
Modified:
trunk/ChangeLog
trunk/NEWS
trunk/doc/C/gnome-commander.xml
trunk/doc/ChangeLog
trunk/src/gnome-cmd-advrename-dialog.cc
trunk/src/gnome-cmd-advrename-lexer.ll
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Tue Mar 4 17:56:57 2008
@@ -6,6 +6,7 @@
* Fixed problem #... (...)
New features:
+ * Multi-Rename-Tool - new $x and $X placeholders for random hexadecimal numbers
* Updated help docs
* New or updated translations: eu
* New key bindings:
Modified: trunk/doc/C/gnome-commander.xml
==============================================================================
--- trunk/doc/C/gnome-commander.xml (original)
+++ trunk/doc/C/gnome-commander.xml Tue Mar 4 17:56:57 2008
@@ -982,6 +982,22 @@
<entry><para>File counter with specified digit number (precision)</para></entry>
</row>
<row valign="top">
+ <entry><para>$x</para></entry>
+ <entry><para>Hexadecimal random number (8 lowercase digits)</para></entry>
+ </row>
+ <row valign="top">
+ <entry><para>$x(precision)</para></entry>
+ <entry><para>Hexadecimal random number with specified lowercase digit number (precision)</para></entry>
+ </row>
+ <row valign="top">
+ <entry><para>$x</para></entry>
+ <entry><para>Hexadecimal random number (8 uppercase digits)</para></entry>
+ </row>
+ <row valign="top">
+ <entry><para>$x(precision)</para></entry>
+ <entry><para>Hexadecimal random number with specified uppercase digit number (precision)</para></entry>
+ </row>
+ <row valign="top">
<entry><para>$T(metatag)</para></entry>
<entry><para>Metadata tag</para></entry>
</row>
@@ -5799,7 +5815,7 @@
<para>
<itemizedlist>
<listitem>
- <para>...</para>
+ <para>Multi-Rename-Tool - new $x and $X placeholders for random hexadecimal numbers</para>
</listitem>
<listitem>
<para>Updated help docs</para>
Modified: trunk/src/gnome-cmd-advrename-dialog.cc
==============================================================================
--- trunk/src/gnome-cmd-advrename-dialog.cc (original)
+++ trunk/src/gnome-cmd-advrename-dialog.cc Tue Mar 4 17:56:57 2008
@@ -100,6 +100,8 @@
"$e",
"$c",
"$c(2)",
+ "$x(8)",
+ "$X(8)",
"%x",
"%Y-%m-%d",
"%y-%m-%d",
@@ -157,27 +159,29 @@
{_("/File extension"), NULL, (GtkItemFactoryCallback) insert_text_tag, 4}};
GtkItemFactoryEntry counter_items[] = {{_("/Counter"), NULL, (GtkItemFactoryCallback) insert_text_tag, 5},
- {_("/Counter (precision)"), NULL, (GtkItemFactoryCallback) insert_text_tag, 6}};
-
- GtkItemFactoryEntry date_items[] = {{_("/Date/<locale>"), NULL, (GtkItemFactoryCallback) insert_text_tag, 7},
- {_("/Date/yyyy-mm-dd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 8},
- {_("/Date/yy-mm-dd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 9},
- {_("/Date/yy.mm.dd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 10},
- {_("/Date/yymmdd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 11},
- {_("/Date/dd.mm.yy"), NULL, (GtkItemFactoryCallback) insert_text_tag, 12},
- {_("/Date/mm-dd-yy"), NULL, (GtkItemFactoryCallback) insert_text_tag, 13},
- {_("/Date/yyyy"), NULL, (GtkItemFactoryCallback) insert_text_tag, 14},
- {_("/Date/yy"), NULL, (GtkItemFactoryCallback) insert_text_tag, 15},
- {_("/Date/mm"), NULL, (GtkItemFactoryCallback) insert_text_tag, 16},
- {_("/Date/mmm"), NULL, (GtkItemFactoryCallback) insert_text_tag, 17},
- {_("/Date/dd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 18},
- {_("/Time/<locale>"), NULL, (GtkItemFactoryCallback) insert_text_tag, 19},
- {_("/Time/HH.MM.SS"), NULL, (GtkItemFactoryCallback) insert_text_tag, 20},
- {_("/Time/HH-MM-SS"), NULL, (GtkItemFactoryCallback) insert_text_tag, 21},
- {_("/Time/HHMMSS"), NULL, (GtkItemFactoryCallback) insert_text_tag, 22},
- {_("/Time/HH"), NULL, (GtkItemFactoryCallback) insert_text_tag, 23},
- {_("/Time/MM"), NULL, (GtkItemFactoryCallback) insert_text_tag, 24},
- {_("/Time/SS"), NULL, (GtkItemFactoryCallback) insert_text_tag, 25}};
+ {_("/Counter (precision)"), NULL, (GtkItemFactoryCallback) insert_text_tag, 6},
+ {_("/Hexadecimal random number (precision)"), NULL, (GtkItemFactoryCallback) insert_text_tag, 7},
+ {_("/Hexadecimal random number (precision)"), NULL, (GtkItemFactoryCallback) insert_text_tag, 8}};
+
+ GtkItemFactoryEntry date_items[] = {{_("/Date/<locale>"), NULL, (GtkItemFactoryCallback) insert_text_tag, 9},
+ {_("/Date/yyyy-mm-dd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 10},
+ {_("/Date/yy-mm-dd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 11},
+ {_("/Date/yy.mm.dd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 12},
+ {_("/Date/yymmdd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 13},
+ {_("/Date/dd.mm.yy"), NULL, (GtkItemFactoryCallback) insert_text_tag, 14},
+ {_("/Date/mm-dd-yy"), NULL, (GtkItemFactoryCallback) insert_text_tag, 15},
+ {_("/Date/yyyy"), NULL, (GtkItemFactoryCallback) insert_text_tag, 16},
+ {_("/Date/yy"), NULL, (GtkItemFactoryCallback) insert_text_tag, 17},
+ {_("/Date/mm"), NULL, (GtkItemFactoryCallback) insert_text_tag, 18},
+ {_("/Date/mmm"), NULL, (GtkItemFactoryCallback) insert_text_tag, 19},
+ {_("/Date/dd"), NULL, (GtkItemFactoryCallback) insert_text_tag, 20},
+ {_("/Time/<locale>"), NULL, (GtkItemFactoryCallback) insert_text_tag, 21},
+ {_("/Time/HH.MM.SS"), NULL, (GtkItemFactoryCallback) insert_text_tag, 22},
+ {_("/Time/HH-MM-SS"), NULL, (GtkItemFactoryCallback) insert_text_tag, 23},
+ {_("/Time/HHMMSS"), NULL, (GtkItemFactoryCallback) insert_text_tag, 24},
+ {_("/Time/HH"), NULL, (GtkItemFactoryCallback) insert_text_tag, 25},
+ {_("/Time/MM"), NULL, (GtkItemFactoryCallback) insert_text_tag, 26},
+ {_("/Time/SS"), NULL, (GtkItemFactoryCallback) insert_text_tag, 27}};
static GnomeCmdTag metatags[] = {
TAG_FILE_NAME, TAG_FILE_PATH,
Modified: trunk/src/gnome-cmd-advrename-lexer.ll
==============================================================================
--- trunk/src/gnome-cmd-advrename-lexer.ll (original)
+++ trunk/src/gnome-cmd-advrename-lexer.ll Tue Mar 4 17:56:57 2008
@@ -51,9 +51,10 @@
}
-#define MAX_PRECISION 16
+#define MAX_PRECISION 16
+#define MAX_XRANDOM_PRECISION 8u
-enum {TEXT=1,NAME,EXTENSION,FULL_NAME,COUNTER,PARENT_DIR,GRANDPARENT_DIR,METATAG};
+enum {TEXT=1,NAME,EXTENSION,FULL_NAME,COUNTER,XRANDOM,XXRANDOM,PARENT_DIR,GRANDPARENT_DIR,METATAG};
typedef struct
{
@@ -76,6 +77,10 @@
int step; // default: default_counter_step (1)
int prec; // default: default_counter_prec (-1)
} counter;
+ struct
+ {
+ guint x_prec; // default: MAX_XRANDOM_PRECISION (8)
+ } random;
};
} CHUNK;
@@ -173,6 +178,23 @@
fname_template.push_back(p);
}
+\$[xX]\({uint}\) {
+ CHUNK *p = g_new0 (CHUNK,1);
+
+ guint precision = MAX_XRANDOM_PRECISION;
+
+ sscanf(yytext+3,"%u",&precision);
+
+ switch (yytext[1])
+ {
+ case 'x' : p->type = XRANDOM; break;
+ case 'X' : p->type = XXRANDOM; break;
+ }
+ p->random.x_prec = min (precision, MAX_XRANDOM_PRECISION);
+
+ fname_template.push_back(p);
+ }
+
\$T\({tag_name}(\.[a-zA-Z][a-zA-Z0-9]+)+(,[^,)]+)*\) {
gchar **a = g_strsplit_set(yytext+3,",()",0);
@@ -195,7 +217,7 @@
fname_template.push_back(p);
}
-\$[cegnNp]\([^\)]*\)? ECHO; // don't substitute broken $x tokens like $x(-1), $x(abc) or $x(abc
+\$[cxXegnNp]\([^\)]*\)? ECHO; // don't substitute broken $x tokens like $x(-1), $x(abc) or $x(abc
\$[egnNp] {
CHUNK *p = g_new0 (CHUNK,1);
@@ -228,6 +250,19 @@
fname_template.push_back(p);
}
+\$[xX] {
+ CHUNK *p = g_new0 (CHUNK,1);
+
+ switch (yytext[1])
+ {
+ case 'x' : p->type = XRANDOM; break;
+ case 'X' : p->type = XXRANDOM; break;
+ }
+ p->random.x_prec = MAX_XRANDOM_PRECISION;
+
+ fname_template.push_back(p);
+ }
+
\$\$ {
CHUNK *p = g_new0 (CHUNK,1);
@@ -434,6 +469,19 @@
}
break;
+ case XRANDOM:
+ case XXRANDOM:
+ {
+ static char custom_counter_fmt[8];
+ static char random_value[MAX_XRANDOM_PRECISION+1];
+
+ sprintf (custom_counter_fmt, "%%0%u%c", (*i)->random.x_prec, (*i)->type==XRANDOM ? 'x' : 'X');
+ snprintf (random_value, MAX_XRANDOM_PRECISION+1, custom_counter_fmt, (*i)->random.x_prec<MAX_XRANDOM_PRECISION ? g_random_int_range (0,1 << 4*(*i)->random.x_prec)
+ : g_random_int ());
+ fmt += random_value;
+ }
+ break;
+
case METATAG: // currently ranges are NOT supported for $T() tokens !!!
// const gchar *tag_value = gcmd_tags_get_value (finfo,(*i)->tag.tag);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]