diff options
author | louis <louis.braun@gmx.de> | 2014-10-10 15:32:38 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2014-10-10 15:32:38 +0200 |
commit | 7fbcc9d3306260fda407111f46b46097f3fa7eca (patch) | |
tree | 649d9760e8d35f5330894971263d0df07bc27561 | |
parent | ebe8ac563b1a393ce4b2e90d3d4ec64fd14a6f2b (diff) | |
download | vdr-plugin-skindesigner-7fbcc9d3306260fda407111f46b46097f3fa7eca.tar.gz vdr-plugin-skindesigner-7fbcc9d3306260fda407111f46b46097f3fa7eca.tar.bz2 |
support for global variables type 'double'
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | dtd/globals.dtd | 2 | ||||
-rw-r--r-- | libtemplate/globals.h | 1 | ||||
-rw-r--r-- | libtemplate/parameter.c | 11 | ||||
-rw-r--r-- | libtemplate/xmlparser.c | 3 | ||||
-rw-r--r-- | skins/metrixhd/themes/default/globals.xml | 1 |
6 files changed, 18 insertions, 1 deletions
@@ -16,3 +16,4 @@ Version 0.0.2 - added {durationhours} and {durationminutes} tokens in several view elements - added discusage icons to menu header view element so that it discusage can be displayed in every menu view - added numeric day, month and year tokens in different view elements +- support for global variables type "double" diff --git a/dtd/globals.dtd b/dtd/globals.dtd index 570fa15..e6246d6 100644 --- a/dtd/globals.dtd +++ b/dtd/globals.dtd @@ -13,7 +13,7 @@ <!ELEMENT var (#PCDATA)>
<!ATTLIST var
name NMTOKEN #REQUIRED
- type (int|string) #REQUIRED>
+ type (int|double|string) #REQUIRED>
<!ELEMENT token (trans)+>
<!ATTLIST token
diff --git a/libtemplate/globals.h b/libtemplate/globals.h index f7a959e..eda9ec9 100644 --- a/libtemplate/globals.h +++ b/libtemplate/globals.h @@ -27,6 +27,7 @@ public: virtual ~cGlobals(void) {}; map <string, tColor> colors; map <string, int> intVars; + map <string, double> doubleVars; map <string, string> stringVars; map <string, string> fonts; map <string, map< string, string > > translations; diff --git a/libtemplate/parameter.c b/libtemplate/parameter.c index e7dd30a..c646f06 100644 --- a/libtemplate/parameter.c +++ b/libtemplate/parameter.c @@ -156,6 +156,17 @@ bool cNumericParameter::CheckExpression(int &val, string &parsedVal) { parsedValue = parsedValue.replace(foundToken, token.size(), st.str()); } } + for (map<string, double>::iterator globDouble = globals->doubleVars.begin(); globDouble != globals->doubleVars.end(); globDouble++) { + stringstream sToken; + sToken << "{" << globDouble->first << "}"; + string token = sToken.str(); + size_t foundToken = parsedValue.find(token); + if (foundToken != string::npos) { + stringstream st; + st << globDouble->second; + parsedValue = parsedValue.replace(foundToken, token.size(), st.str()); + } + } } if (IsNumber(parsedValue)) { diff --git a/libtemplate/xmlparser.c b/libtemplate/xmlparser.c index 8c21ed9..0e2c132 100644 --- a/libtemplate/xmlparser.c +++ b/libtemplate/xmlparser.c @@ -291,6 +291,9 @@ void cXmlParser::InsertVariable(string name, string type, string value) { if (!type.compare("int")) { int val = atoi(value.c_str()); globals->intVars.insert(pair<string, int>(name, val)); + } else if (!type.compare("double")) { + double val = atof(value.c_str()); + globals->doubleVars.insert(pair<string, double>(name, val)); } else if (!type.compare("string")) { globals->stringVars.insert(pair<string, string>(name, value)); } diff --git a/skins/metrixhd/themes/default/globals.xml b/skins/metrixhd/themes/default/globals.xml index 6732249..11c3e1f 100644 --- a/skins/metrixhd/themes/default/globals.xml +++ b/skins/metrixhd/themes/default/globals.xml @@ -28,6 +28,7 @@ <var type="int" name="border">5</var> <var type="int" name="fadeTime">0</var> <var type="string" name="stringglobal">hützligrütz</var> + <var type="double" name="pi">3.14</var> </variables> <!-- translations used in the skin |