From 9ac4b446106f733dc1c4be69d97acbcc4c44d9ad Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Wed, 9 Jun 2010 16:15:01 +0000 Subject: SKIN BREAK: %pb, %bl and %pv (bar types) changed so the image is the last param instead of the first. skin updater, skins and manual all updated. NEW PARSER: add an 'N' param type which will accept any number of strings, will cause very big problems if this isnt the last param for a tag. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26727 a1c6a512-1295-4272-9138-f99709370657 --- utils/skinupdater/skinupdater.c | 18 +++++++++++++++++- utils/themeeditor/skin_parser.c | 6 ++++-- utils/themeeditor/tag_table.c | 8 ++++---- utils/themeeditor/tag_table.h | 1 + 4 files changed, 26 insertions(+), 7 deletions(-) (limited to 'utils') diff --git a/utils/skinupdater/skinupdater.c b/utils/skinupdater/skinupdater.c index 0bb305fb5e..fe7edbb81b 100644 --- a/utils/skinupdater/skinupdater.c +++ b/utils/skinupdater/skinupdater.c @@ -130,10 +130,26 @@ int parse_tag(FILE* out, const char* start, bool in_conditional) { if (*start == '|') { + int i=0; + char filename[128]; len++; start++; PUTCH(out, '('); + /* |file|x|y|width|height| -> (x,y,width,height,file) */ + while (start[i] != '|') + { + filename[i] = start[i]; + i++; + } + filename[i] = '\0'; + len +=i+1; + start += i+1; /* TODO: need to verify that we are actually using the long form... */ - len += dump_arg(out, start, 5, true); + len += dump_arg(out, start, 4, false); + if (i>0) + { + fprintf(out, ",%s", filename); + } + PUTCH(out, ')'); } } else if (MATCH("d") || MATCH("D") || MATCH("mv") || MATCH("pS") || MATCH("pE") || MATCH("t") || MATCH("Tl")) diff --git a/utils/themeeditor/skin_parser.c b/utils/themeeditor/skin_parser.c index 707fffd87a..401181cc3d 100644 --- a/utils/themeeditor/skin_parser.c +++ b/utils/themeeditor/skin_parser.c @@ -543,7 +543,8 @@ int skin_parse_tag(struct skin_element* element, char** document) element->params[i].type = NUMERIC; element->params[i].data.numeric = scan_int(&cursor); } - else if(tolower(*tag_args) == 's' || tolower(*tag_args) == 'f') + else if(tolower(*tag_args) == 'n' || + tolower(*tag_args) == 's' || tolower(*tag_args) == 'f') { /* Scanning a string argument */ element->params[i].type = STRING; @@ -576,7 +577,8 @@ int skin_parse_tag(struct skin_element* element, char** document) cursor++; } - tag_args++; + if (*tag_args != 'N') + tag_args++; /* Checking for the optional bar */ if(*tag_args == '|') diff --git a/utils/themeeditor/tag_table.c b/utils/themeeditor/tag_table.c index bf35c9bf71..d03f2444dd 100644 --- a/utils/themeeditor/tag_table.c +++ b/utils/themeeditor/tag_table.c @@ -22,7 +22,7 @@ #include "tag_table.h" #include - +#define BAR_PARAMS "*|IIIIN" /* The tag definition table */ struct tag_info legal_tags[] = { @@ -33,7 +33,7 @@ struct tag_info legal_tags[] = { SKIN_TOKEN_ALIGN_RIGHT_RTL, "aR", "" }, { SKIN_TOKEN_ALIGN_LANGDIRECTION, "ax", "" }, - { SKIN_TOKEN_BATTERY_PERCENT, "bl" , "*fIIII" }, + { SKIN_TOKEN_BATTERY_PERCENT, "bl" , BAR_PARAMS }, { SKIN_TOKEN_BATTERY_VOLTS, "bv", "" }, { SKIN_TOKEN_BATTERY_TIME, "bt", "" }, { SKIN_TOKEN_BATTERY_SLEEPTIME, "bs", "" }, @@ -124,8 +124,8 @@ struct tag_info legal_tags[] = { SKIN_TOKEN_PEAKMETER, "pm", "" }, { SKIN_TOKEN_PLAYER_PROGRESSBAR, "pf", "" }, - { SKIN_TOKEN_PROGRESSBAR, "pb" , "*fIIII" }, - { SKIN_TOKEN_VOLUME, "pv" , "*fIIII" }, + { SKIN_TOKEN_PROGRESSBAR, "pb" , BAR_PARAMS }, + { SKIN_TOKEN_VOLUME, "pv" , BAR_PARAMS }, { SKIN_TOKEN_TRACK_ELAPSED_PERCENT, "px", "" }, { SKIN_TOKEN_TRACK_TIME_ELAPSED, "pc", "" }, diff --git a/utils/themeeditor/tag_table.h b/utils/themeeditor/tag_table.h index 760c9f5f61..ec9a1021ab 100644 --- a/utils/themeeditor/tag_table.h +++ b/utils/themeeditor/tag_table.h @@ -263,6 +263,7 @@ enum skin_token_type { * F - Required file name * f - Nullable file name * C - Required skin code + * N - any amount of strings.. must be the last param in the list * Any nullable parameter may be replaced in the WPS file * with a '-'. To specify that parameters may be left off * altogether, place a '|' in the parameter string. For -- cgit v1.2.3