gnome-commander r1612 - in branches/gcmd-1-3: . doc/C src
- From: epiotr svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-commander r1612 - in branches/gcmd-1-3: . doc/C src
- Date: Tue, 4 Mar 2008 17:57:40 +0000 (GMT)
Author: epiotr
Date: Tue Mar 4 17:57:39 2008
New Revision: 1612
URL: http://svn.gnome.org/viewvc/gnome-commander?rev=1612&view=rev
Log:
Multi-Rename-Tool - new $x and $X placeholders for random hexadecimal numbers
Modified:
branches/gcmd-1-3/ChangeLog
branches/gcmd-1-3/doc/C/gnome-commander.xml
branches/gcmd-1-3/src/gnome-cmd-advrename-dialog.cc
branches/gcmd-1-3/src/gnome-cmd-advrename-lexer.ll
Modified: branches/gcmd-1-3/doc/C/gnome-commander.xml
==============================================================================
--- branches/gcmd-1-3/doc/C/gnome-commander.xml (original)
+++ branches/gcmd-1-3/doc/C/gnome-commander.xml Tue Mar 4 17:57:39 2008
@@ -828,6 +828,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>
Modified: branches/gcmd-1-3/src/gnome-cmd-advrename-dialog.cc
==============================================================================
--- branches/gcmd-1-3/src/gnome-cmd-advrename-dialog.cc (original)
+++ branches/gcmd-1-3/src/gnome-cmd-advrename-dialog.cc Tue Mar 4 17:57:39 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: branches/gcmd-1-3/src/gnome-cmd-advrename-lexer.ll
==============================================================================
--- branches/gcmd-1-3/src/gnome-cmd-advrename-lexer.ll (original)
+++ branches/gcmd-1-3/src/gnome-cmd-advrename-lexer.ll Tue Mar 4 17:57:39 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]