introduced globals.xml in skinpath, theme.xml in theme path

This commit is contained in:
louis 2015-01-24 10:47:47 +01:00
parent 5733a49940
commit a74cb93163
23 changed files with 400 additions and 471 deletions

View File

@ -175,3 +175,6 @@ Version 0.1.6
- fixed bug that onpause view potentially starts during setting cutting
marks
- made all globals variables private
- introduced globals.xml in skinpath, theme.xml in theme path. theme.xml
adds its vakues and potentially overrides valués from globals.xml

View File

@ -146,17 +146,9 @@ bool cSkinDesigner::SetCustomToken(string option) {
return true;
if (isNumber(val)) {
map<string, int>::iterator hit = globals->customIntTokens.find(key);
if (hit != globals->customIntTokens.end()) {
globals->customIntTokens.erase(key);
}
globals->customIntTokens.insert(pair<string,int>(key, atoi(val.c_str())));
globals->AddCustomInt(key, atoi(val.c_str()));
} else {
map<string, string>::iterator hit = globals->customStringTokens.find(key);
if (hit != globals->customStringTokens.end()) {
globals->customStringTokens.erase(key);
}
globals->customStringTokens.insert(pair<string,string>(key, val));
globals->AddCustomString(key, val);
}
return true;
}
@ -164,13 +156,7 @@ bool cSkinDesigner::SetCustomToken(string option) {
void cSkinDesigner::ListCustomTokens(void) {
if (!globals)
return;
for (map<string, string>::iterator it = globals->customStringTokens.begin(); it != globals->customStringTokens.end(); it++) {
dsyslog("skindesigner: custom string token \"%s\" = \"%s\"", (it->first).c_str(), (it->second).c_str());
}
for (map<string, int>::iterator it = globals->customIntTokens.begin(); it != globals->customIntTokens.end(); it++) {
dsyslog("skindesigner: custom int token \"%s\" = \"%d\"", (it->first).c_str(), it->second);
}
globals->ListCustomTokens();
}
/*********************************************************************************

View File

@ -1,6 +1,6 @@
<?xml encoding="UTF-8"?>
<!ELEMENT globals (colors,variables,translations,fonts)>
<!ELEMENT globals (colors | variables | translations | fonts)*>
<!ELEMENT colors (color)*>
<!ELEMENT variables (var)*>
<!ELEMENT translations (token)*>

View File

@ -90,6 +90,12 @@ bool isNumber(const string& s) {
return !s.empty() && it == s.end();
}
bool IsToken(const string& token) {
if ((token.find("{") == 0) && (token.find("}") == (token.size()-1)))
return true;
return false;
}
bool FileExists(const string &fullpath) {
struct stat buffer;
return (stat (fullpath.c_str(), &buffer) == 0);

View File

@ -12,6 +12,7 @@ int Minimum(int a, int b, int c, int d, int e, int f);
std::string CutText(string &text, int width, string fontName, int fontSize);
std::string StrToLowerCase(string str);
bool isNumber(const string& s);
bool IsToken(const string& token);
bool FileExists(const string &fullpath);
bool FileExists(const string &path, const string &name, const string &ext);
bool FolderExists(const string &path);

View File

@ -102,8 +102,7 @@ void cSkinSetup::AddToGlobals(cGlobals *globals) {
return;
for (map < string, cSkinSetupParameter* >::iterator p = parameters.begin(); p != parameters.end(); p++) {
cSkinSetupParameter *param = p->second;
globals->intVars.erase(param->name);
globals->intVars.insert(pair<string,int>(param->name, param->value));
globals->AddInt(param->name, param->value);
}
}

View File

@ -1,5 +1,6 @@
#include "globals.h"
#include "xmlparser.h"
#include "../config.h"
#include <locale.h>
cGlobals::cGlobals(void) {
@ -11,15 +12,134 @@ cGlobals::cGlobals(void) {
}
bool cGlobals::ReadFromXML(void) {
//globals.xml is mandatory
string xmlFile = "globals.xml";
cXmlParser parser;
if (!parser.ReadGlobals(this, xmlFile))
if (!parser.ReadGlobals(this, xmlFile, true))
return false;
if (!parser.ParseGlobals())
return false;
//theme.xml is optional
xmlFile = "theme.xml";
if (parser.ReadGlobals(this, xmlFile, false)) {
parser.ParseGlobals();
}
return true;
}
void cGlobals::AddColor(string &name, tColor &col) {
colors.erase(name);
colors.insert(pair<string, tColor>(name, col));
}
bool cGlobals::GetColor(string &name, tColor &col) {
int size = name.size();
if (size < 2)
return false;
string nameCutted = name.substr(1, size-2);
map <string, tColor>::iterator hit = colors.find(nameCutted);
if (hit != colors.end()) {
col = hit->second;
return true;
}
return false;
}
void cGlobals::AddFont(string &name, string &font) {
fonts.erase(name);
fonts.insert(pair<string, string>(name, font));
}
bool cGlobals::GetFont(string name, string &font) {
int size = name.size();
if (size < 2)
return false;
string nameCutted = name.substr(1, size-2);
map<string,string>::iterator hit = fonts.find(nameCutted);
if (hit != fonts.end()) {
font = hit->second;
return true;
}
return false;
}
void cGlobals::AddInt(string &name, int value) {
intVars.erase(name);
intVars.insert(pair<string, int>(name, value));
}
void cGlobals::ReplaceIntVars(string &value) {
for (map<string, int>::iterator it = intVars.begin(); it != intVars.end(); it++) {
stringstream sToken;
sToken << "{" << it->first << "}";
string token = sToken.str();
size_t foundToken = value.find(token);
if (foundToken != string::npos) {
stringstream st;
st << it->second;
value = value.replace(foundToken, token.size(), st.str());
}
}
}
bool cGlobals::GetInt(string name, int &val) {
map < string, int >::iterator hit = intVars.find(name);
if (hit != intVars.end()) {
val = hit->second;
return true;
}
return false;
}
void cGlobals::AddDouble(string &name, string &value) {
doubleVars.erase(name);
if (config.replaceDecPoint) {
if (value.find_first_of('.') != string::npos) {
std::replace( value.begin(), value.end(), '.', config.decPoint);
}
}
double val = atof(value.c_str());
doubleVars.insert(pair<string, double>(name, val));
}
void cGlobals::ReplaceDoubleVars(string &value) {
for (map<string, double>::iterator it = doubleVars.begin(); it != doubleVars.end(); it++) {
stringstream sToken;
sToken << "{" << it->first << "}";
string token = sToken.str();
size_t foundToken = value.find(token);
if (foundToken != string::npos) {
stringstream st;
st << it->second;
string doubleVal = st.str();
value = value.replace(foundToken, token.size(), doubleVal);
}
}
}
void cGlobals::AddString(string &name, string &value) {
stringVars.erase(name);
stringVars.insert(pair<string, string>(name, value));
}
void cGlobals::ReplaceStringVars(string &value) {
for (map<string,string>::iterator it = stringVars.begin(); it != stringVars.end(); it++) {
stringstream sToken;
sToken << "{" << it->first << "}";
string token = sToken.str();
size_t foundToken = value.find(token);
if (foundToken != string::npos) {
value = value.replace(foundToken, token.size(), it->second);
}
}
}
bool cGlobals::AddTranslation(string name, map < string, string > transl) {
translations.erase(name);
translations.insert(pair<string, map < string, string > >(name, transl));
}
bool cGlobals::Translate(string text, string &translation) {
string transStart = "{tr(";
string transEnd = ")}";
@ -63,6 +183,34 @@ string cGlobals::DoTranslate(string token) {
return translation;
}
void cGlobals::AddCustomInt(string &name, int value) {
customIntTokens.erase(name);
customIntTokens.insert(pair<string,int>(name, value));
}
void cGlobals::AddCustomString(string &name, string &value) {
customStringTokens.erase(name);
customStringTokens.insert(pair<string,string>(name, value));
}
bool cGlobals::GetCustomInt(string name, int &val) {
map < string, int >::iterator hit = customIntTokens.find(name);
if (hit != customIntTokens.end()) {
val = hit->second;
return true;
}
return false;
}
void cGlobals::ListCustomTokens(void) {
for (map<string, string>::iterator it = customStringTokens.begin(); it != customStringTokens.end(); it++) {
dsyslog("skindesigner: custom string token \"%s\" = \"%s\"", (it->first).c_str(), (it->second).c_str());
}
for (map<string, int>::iterator it = customIntTokens.begin(); it != customIntTokens.end(); it++) {
dsyslog("skindesigner: custom int token \"%s\" = \"%d\"", (it->first).c_str(), it->second);
}
}
void cGlobals::Debug(void) {
dsyslog("skindesigner: GLOBAL VARIABLES");
for (map <string, tColor>::iterator col = colors.begin(); col != colors.end(); col++) {
@ -80,7 +228,7 @@ void cGlobals::Debug(void) {
for (map <string, string>::iterator font = fonts.begin(); font != fonts.end(); font++) {
dsyslog("skindesigner: Font \"%s\": \"%s\"", (font->first).c_str(), (font->second).c_str());
}
/*
for (map <string, map< string, string > >::iterator trans = translations.begin(); trans != translations.end(); trans++) {
dsyslog("skindesigner: Translation Token %s", (trans->first).c_str());
map< string, string > tokenTrans = trans->second;
@ -88,5 +236,4 @@ void cGlobals::Debug(void) {
dsyslog("skindesigner: language %s, translation %s", (transTok->first).c_str(), (transTok->second).c_str());
}
}
*/
}

View File

@ -22,19 +22,37 @@ class cGlobals {
private:
string language;
string DoTranslate(string token);
public:
cGlobals(void);
virtual ~cGlobals(void) {};
map <string, tColor> colors;
map <string, string> fonts;
map <string, int> intVars;
map <string, double> doubleVars;
map <string, string> stringVars;
map <string, string> fonts;
map <string, map< string, string > > translations;
map <string, string> customStringTokens;
map <string, int> customIntTokens;
public:
cGlobals(void);
virtual ~cGlobals(void) {};
bool ReadFromXML(void);
void AddColor(string &name, tColor &col);
bool GetColor(string &name, tColor &col);
void AddFont(string &name, string &font);
bool GetFont(string name, string &font);
void AddInt(string &name, int value);
void ReplaceIntVars(string &value);
bool GetInt(string name, int &val);
void AddDouble(string &name, string &value);
void ReplaceDoubleVars(string &value);
void AddString(string &name, string &value);
void ReplaceStringVars(string &value);
bool AddTranslation(string name, map < string, string > transl);
bool Translate(string text, string &translation);
void AddCustomInt(string &name, int value);
void AddCustomString(string &name, string &value);
bool GetCustomInt(string name, int &val);
map <string, string> GetCustomStringTokens(void) { return customStringTokens; };
map <string, int> GetCustomIntTokens(void) { return customIntTokens; };
void ListCustomTokens(void);
void Debug(void);
};

View File

@ -146,34 +146,8 @@ bool cNumericParameter::CheckExpression(int &val, string &parsedVal) {
}
if (globals) {
for (map<string, int>::iterator globInt = globals->intVars.begin(); globInt != globals->intVars.end(); globInt++) {
stringstream sToken;
sToken << "{" << globInt->first << "}";
string token = sToken.str();
size_t foundToken = parsedValue.find(token);
if (foundToken != string::npos) {
stringstream st;
st << globInt->second;
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;
string doubleVal = st.str();
if (config.replaceDecPoint) {
if (doubleVal.find_first_of('.') != string::npos) {
std::replace( doubleVal.begin(), doubleVal.end(), '.', config.decPoint);
}
}
parsedValue = parsedValue.replace(foundToken, token.size(), doubleVal);
}
}
globals->ReplaceIntVars(parsedValue);
globals->ReplaceDoubleVars(parsedValue);
}
if (IsNumber(parsedValue)) {
@ -339,15 +313,12 @@ bool cConditionalParameter::Evaluate(map < string, int > *intTokens, map < strin
int cConditionalParameter::EvaluateParameter(string token, map < string, int > *intTokens, map < string, string > *stringTokens) {
//first check globals
map < string, int >::iterator hitGlobals = globals->intVars.find(token);
if (hitGlobals != globals->intVars.end()) {
return hitGlobals->second;
}
int result = 0;
if (globals->GetInt(token, result))
return result;
//then check custom tokens
map < string, int >::iterator hitCustomTokens = globals->customIntTokens.find(token);
if (hitCustomTokens != globals->customIntTokens.end()) {
return hitCustomTokens->second;
}
if (globals->GetCustomInt(token, result))
return result;
//then check tokens
if (intTokens) {
map < string, int >::iterator hit = intTokens->find(token);

View File

@ -777,16 +777,11 @@ bool cTemplateFunction::SetAlign(eParamType type, string value) {
bool cTemplateFunction::SetFont(eParamType type, string value) {
//check if token
if ((value.find("{") == 0) && (value.find("}") == (value.size()-1))) {
value = value.substr(1, value.size()-2);
map<string,string>::iterator hit = globals->fonts.find(value);
if (hit != globals->fonts.end()) {
fontName = hit->second;
} else {
map<string,string>::iterator def = globals->fonts.find("vdrOsd");
if (def == globals->fonts.end())
if (IsToken(value)) {
if (!globals->GetFont(value, fontName)) {
if (!globals->GetFont("{vdrOsd}", fontName)) {
return false;
fontName = def->second;
}
}
} else {
//if no token, directly use input
@ -820,15 +815,10 @@ bool cTemplateFunction::SetImageType(eParamType type, string value) {
bool cTemplateFunction::SetColor(eParamType type, string value) {
if (globals) {
for (map<string, tColor>::iterator col = globals->colors.begin(); col != globals->colors.end(); col++) {
stringstream sColName;
sColName << "{" << col->first << "}";
string colName = sColName.str();
if (!colName.compare(value)) {
tColor colVal = col->second;
colorParameters.insert(pair<eParamType, tColor>(type, colVal));
return true;
}
tColor colVal = 0x00000000;
if (globals->GetColor(value, colVal)) {
colorParameters.insert(pair<eParamType, tColor>(type, colVal));
return true;
}
}
if (value.size() != 8)
@ -844,15 +834,7 @@ bool cTemplateFunction::SetColor(eParamType type, string value) {
bool cTemplateFunction::SetTextTokens(string value) {
textTokens.clear();
//first replace globals
for (map<string,string>::iterator globStr = globals->stringVars.begin(); globStr != globals->stringVars.end(); globStr++) {
stringstream sToken;
sToken << "{" << globStr->first << "}";
string token = sToken.str();
size_t foundToken = value.find(token);
if (foundToken != string::npos) {
value = value.replace(foundToken, token.size(), globStr->second);
}
}
globals->ReplaceStringVars(value);
//now tokenize
bool tokenFound = true;
while (tokenFound) {

View File

@ -105,8 +105,8 @@ public:
int GetNumPixmapsViewElement(eViewElement ve);
int GetNumListViewMenuItems(void);
bool GetScalingWindow(cRect &scalingWindow);
map<string,string> GetCustomStringTokens(void) { return globals->customStringTokens; };
map<string,int> GetCustomIntTokens(void) { return globals->customIntTokens; };
map<string,string> GetCustomStringTokens(void) { return globals->GetCustomStringTokens(); };
map<string,int> GetCustomIntTokens(void) { return globals->GetCustomIntTokens(); };
//Checks for parsing template XML files
bool ValidSubView(const char *subView);
bool ValidViewElement(const char *viewElement);

View File

@ -1,5 +1,6 @@
#include "templateviewlist.h"
#include "../config.h"
#include "../libcore/helpers.h"
cTemplateViewList::cTemplateViewList(void) : cTemplateViewElement() {
listElement = NULL;
@ -87,16 +88,11 @@ int cTemplateViewList::GetAverageFontWidth(void) {
string paramFontSize = fontFunc->GetParameter(ptFontSize);
string fontName = "";
if ((fontNameToken.find("{") == 0) && (fontNameToken.find("}") == (fontNameToken.size()-1))) {
fontNameToken = fontNameToken.substr(1, fontNameToken.size()-2);
map<string,string>::iterator hit = globals->fonts.find(fontNameToken);
if (hit != globals->fonts.end()) {
fontName = hit->second;
} else {
map<string,string>::iterator def = globals->fonts.find("vdrOsd");
if (def == globals->fonts.end())
if (IsToken(fontNameToken)) {
if (!globals->GetFont(fontNameToken, fontName)) {
if (!globals->GetFont("{vdrOsd}", fontName)) {
return defaultAverageFontWidth;
fontName = def->second;
}
}
} else {
//if no token, directly use input
@ -135,16 +131,11 @@ cFont *cTemplateViewList::GetTextAreaFont(void) {
string paramFontSize = fontFunc->GetParameter(ptFontSize);
string fontName = "";
if ((fontNameToken.find("{") == 0) && (fontNameToken.find("}") == (fontNameToken.size()-1))) {
fontNameToken = fontNameToken.substr(1, fontNameToken.size()-2);
map<string,string>::iterator hit = globals->fonts.find(fontNameToken);
if (hit != globals->fonts.end()) {
fontName = hit->second;
} else {
map<string,string>::iterator def = globals->fonts.find("vdrOsd");
if (def == globals->fonts.end())
if (IsToken(fontNameToken)) {
if (!globals->GetFont(fontNameToken, fontName)) {
if (!globals->GetFont("{vdrOsd}", fontName)) {
return NULL;
fontName = def->second;
}
}
} else {
//if no token, directly use input

View File

@ -89,7 +89,7 @@ bool cXmlParser::ReadPluginView(string plugName, int templateNumber, string temp
return true;
}
bool cXmlParser::ReadGlobals(cGlobals *globals, string xmlFile) {
bool cXmlParser::ReadGlobals(cGlobals *globals, string xmlFile, bool mandatory) {
this->globals = globals;
string xmlPath = GetPath(xmlFile);
@ -101,20 +101,30 @@ bool cXmlParser::ReadGlobals(cGlobals *globals, string xmlFile) {
doc = xmlCtxtReadFile(ctxt, xmlPath.c_str(), NULL, XML_PARSE_NOENT | XML_PARSE_DTDVALID);
if (doc == NULL ) {
esyslog("skindesigner: ERROR: Globals %s not parsed successfully.", xmlPath.c_str());
if (doc == NULL) {
if (mandatory) {
esyslog("skindesigner: ERROR: Globals %s not parsed successfully.", xmlPath.c_str());
} else {
dsyslog("skindesigner: Globals %s not parsed successfully.", xmlPath.c_str());
}
return false;
}
root = xmlDocGetRootElement(doc);
if (ctxt->valid == 0) {
esyslog("skindesigner: Failed to validate %s", xmlPath.c_str());
if (mandatory) {
esyslog("skindesigner: ERROR: Failed to validate %s", xmlPath.c_str());
} else {
dsyslog("skindesigner: Failed to validate %s", xmlPath.c_str());
}
return false;
}
if (root == NULL) {
esyslog("skindesigner: ERROR: Globals %s is empty", xmlPath.c_str());
if (mandatory) {
esyslog("skindesigner: ERROR: Globals %s is empty", xmlPath.c_str());
}
return false;
}
@ -234,7 +244,6 @@ bool cXmlParser::ParsePluginView(string plugName, int templateNumber) {
bool cXmlParser::ParseGlobals(void) {
xmlNodePtr node = root->xmlChildrenNode;
while (node != NULL) {
if (node->type != XML_ELEMENT_NODE) {
node = node->next;
@ -304,6 +313,8 @@ string cXmlParser::GetPath(string xmlFile) {
string activeTheme = Setup.OSDTheme;
string path = "";
if (!xmlFile.compare("globals.xml")) {
path = *cString::sprintf("%s%s/%s", *config.skinPath, activeSkin.c_str(), xmlFile.c_str());
} else if (!xmlFile.compare("theme.xml")) {
path = *cString::sprintf("%s%s/themes/%s/%s", *config.skinPath, activeSkin.c_str(), activeTheme.c_str(), xmlFile.c_str());
} else if (!xmlFile.compare("setup.xml")) {
path = *cString::sprintf("%s%s/%s", *config.skinPath, activeSkin.c_str(), xmlFile.c_str());
@ -424,7 +435,7 @@ void cXmlParser::InsertColor(string name, string value) {
str << value;
tColor colVal;
str >> std::hex >> colVal;
globals->colors.insert(pair<string, tColor>(name, colVal));
globals->AddColor(name, colVal);
}
void cXmlParser::ParseGlobalVariables(xmlNodePtr node) {
@ -476,17 +487,11 @@ void cXmlParser::ParseGlobalVariables(xmlNodePtr node) {
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));
globals->AddInt(name, val);
} else if (!type.compare("double")) {
if (config.replaceDecPoint) {
if (value.find_first_of('.') != string::npos) {
std::replace( value.begin(), value.end(), '.', config.decPoint);
}
}
double val = atof(value.c_str());
globals->doubleVars.insert(pair<string, double>(name, val));
globals->AddDouble(name, value);
} else if (!type.compare("string")) {
globals->stringVars.insert(pair<string, string>(name, value));
globals->AddString(name, value);
}
}
@ -523,8 +528,11 @@ void cXmlParser::ParseGlobalFonts(xmlNodePtr node) {
}
if (ok) {
fontValue = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
if (fontName && fontValue)
globals->fonts.insert(pair<string, string>((const char*)fontName, (const char*)fontValue));
if (fontName && fontValue) {
string fN = (const char*)fontName;
string fV = (const char*)fontValue;
globals->AddFont(fN, fV);
}
}
if (fontName)
xmlFree(fontName);
@ -607,7 +615,7 @@ void cXmlParser::ParseTranslations(xmlNodePtr node) {
nodeTrans = nodeTrans->next;
}
if (globals) {
globals->translations.insert(pair<string, map < string, string > >((const char*)tokenName, tokenTranslations));
globals->AddTranslation((const char*)tokenName, tokenTranslations);
} else if (skinSetup) {
skinSetup->SetTranslation((const char*)tokenName, tokenTranslations);
}

View File

@ -50,7 +50,7 @@ public:
virtual ~cXmlParser(void);
bool ReadView(cTemplateView *view, string xmlFile);
bool ReadPluginView(string plugName, int templateNumber, string templateName);
bool ReadGlobals(cGlobals *globals, string xmlFile);
bool ReadGlobals(cGlobals *globals, string xmlFile, bool mandatory);
bool ReadSkinSetup(cSkinSetup *skinSetup, string skin, string xmlFile);
bool ParseView(void);
bool ParsePluginView(string plugName, int templateNumber);

View File

@ -1,20 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
<!DOCTYPE globals SYSTEM "../../dtd/globals.dtd">
<globals>
<!--
define all your needed colors here
-->
<colors>
<color name="clrTransparent">00000000</color>
<color name="clrRed">FFFF0000</color>
<color name="clrGreen">FF5FE200</color>
<color name="clrYellow">FFE2DA00</color>
<color name="clrBlue">FF007FE2</color>
<color name="clrWhite">FFFFFFFF</color>
<color name="clrGray">FF999999</color>
<color name="clrRedTrans">55FF0000</color>
<color name="clrBlackTrans">99000000</color>
</colors>
<!--
these variables can be used everywhere in the templates
@ -274,10 +265,5 @@
if an invalid font is used in a template, vdrOsd is used as default.
-->
<fonts>
<font name="light">Source Sans Pro:Light</font>
<font name="bold">Source Sans Pro:Bold</font>
<font name="semibold">Source Sans Pro:Semibold</font>
<font name="regular">Source Sans Pro:Regular</font>
<font name="digital">DS-Digital:Normal</font>
</fonts>
</globals>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
<globals>
<!--
define all your needed colors here
-->
<colors>
<color name="clrTransparent">00000000</color>
<color name="clrRed">FFFF0000</color>
<color name="clrGreen">FF5FE200</color>
<color name="clrYellow">FFE2DA00</color>
<color name="clrBlue">FF007FE2</color>
<color name="clrWhite">FFFFFFFF</color>
<color name="clrGray">FF999999</color>
<color name="clrRedTrans">55FF0000</color>
<color name="clrBlackTrans">99000000</color>
</colors>
<!--
these variables can be used everywhere in the templates
variabls of type int can also be used as conditions, just
set such a variable to 1 for true and 0 for false
-->
<variables>
</variables>
<!--
The three Fonts FontOSD, FontFix and FontSml configured in VDR
can be used in all template "font" attributes with this tokens:
{vdrOsd}
{vdrFix}
{vdrSml}
If you like to use further fonts, just define them below.
Syntax:
<font name="tokenname">fontname</font>
These fonts can then also be used in all templates in the "font"
attribute.
if an invalid font is used in a template, vdrOsd is used as default.
-->
<fonts>
<font name="light">Source Sans Pro:Light</font>
<font name="bold">Source Sans Pro:Bold</font>
<font name="semibold">Source Sans Pro:Semibold</font>
<font name="regular">Source Sans Pro:Regular</font>
<font name="digital">DS-Digital:Normal</font>
</fonts>
</globals>

View File

@ -1,23 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
<!DOCTYPE globals SYSTEM "../../dtd/globals.dtd">
<globals>
<!--
define all your needed colors here
-->
<colors>
<color name="clrRed">FFFF0000</color>
<color name="clrGreen">FF5FE200</color>
<color name="clrYellow">FFE2DA00</color>
<color name="clrBlue">FF007FE2</color>
<color name="clrTransBlack">C0000000</color>
<color name="clrSemiTransBlack">D0000000</color>
<color name="clrBlueLight">FF1E8BD7</color>
<color name="clrTransBlueLight">C01E8BD7</color>
<color name="clrTransWhite">C0FFFFFF</color>
<color name="clrWhite">FFFFFFFF</color>
<color name="clrDarkGray">FF14141E</color>
<color name="clrTransparent">00000000</color>
</colors>
<!--
these variables can be used everywhere in the templates
@ -25,8 +13,6 @@
set such a variable to 1 for true and 0 for false
-->
<variables>
<var type="string" name="stringglobal">hützligrütz</var>
<var type="double" name="pi">3.14</var>
</variables>
<!--
translations used in the skin
@ -287,7 +273,5 @@
if an invalid font is used in a template, vdrOsd is used as default.
-->
<fonts>
<font name="light">VDROpen Sans Light:Light</font>
<font name="semibold">VDROpen Sans Semibold:Semibold</font>
</fonts>
</globals>

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
<globals>
<!--
define all your needed colors here
-->
<colors>
<color name="clrRed">FFFF0000</color>
<color name="clrGreen">FF5FE200</color>
<color name="clrYellow">FFE2DA00</color>
<color name="clrBlue">FF007FE2</color>
<color name="clrTransBlack">C0000000</color>
<color name="clrSemiTransBlack">D0000000</color>
<color name="clrBlueLight">FF1E8BD7</color>
<color name="clrTransBlueLight">C01E8BD7</color>
<color name="clrTransWhite">C0FFFFFF</color>
<color name="clrWhite">FFFFFFFF</color>
<color name="clrDarkGray">FF14141E</color>
<color name="clrTransparent">00000000</color>
</colors>
<!--
these variables can be used everywhere in the templates
variabls of type int can also be used as conditions, just
set such a variable to 1 for true and 0 for false
-->
<variables>
<var type="string" name="stringglobal">hützligrütz</var>
<var type="double" name="pi">3.14</var>
</variables>
<!--
translations used in the skin
-->
<translations>
</translations>
<!--
The three Fonts FontOSD, FontFix and FontSml configured in VDR
can be used in all template "font" attributes with this tokens:
{vdrOsd}
{vdrFix}
{vdrSml}
If you like to use further fonts, just define them below.
Syntax:
<font name="tokenname">fontname</font>
These fonts can then also be used in all templates in the "font"
attribute.
if an invalid font is used in a template, vdrOsd is used as default.
-->
<fonts>
<font name="light">VDROpen Sans Light:Light</font>
<font name="semibold">VDROpen Sans Semibold:Semibold</font>
</fonts>
</globals>

View File

@ -1,29 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
<!DOCTYPE globals SYSTEM "../../dtd/globals.dtd">
<globals>
<!--
define all your needed colors here
-->
<colors>
<color name="clrRed">FFFF0000</color>
<color name="clrGreen">FF5FE200</color>
<color name="clrYellow">FFE2DA00</color>
<color name="clrBlue">FF007FE2</color>
<color name="clrWhite">FFFFFFFF</color>
<color name="clrTransWhite">99FFFFFF</color>
<color name="clrBlack">FF000000</color>
<color name="clrProgressbar">FF3D0000</color>
<color name="clrBorder">FF2B0000</color>
<color name="clrGray">FF858585</color>
<color name="clrBackground">B0000000</color>
<color name="clrTransBlack">99000000</color>
<color name="clrTransBlackDark">DF000000</color>
<color name="clrTransRed">99FF0000</color>
<color name="clrFontMenuItem">FFFFFFFF</color>
<color name="clrFontMenuItemSelected">FFFFFFFF</color>
<color name="clrFontInactive">FF858585</color>
<color name="clrTransparent">00000000</color>
</colors>
<!--
these variables can be used everywhere in the templates
@ -31,7 +13,6 @@
set such a variable to 1 for true and 0 for false
-->
<variables>
<var type="int" name="fadeTime">300</var>
</variables>
<!--
translations used in the skin

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
<globals>
<colors>
<color name="clrRed">FFFF0000</color>
<color name="clrGreen">FF5FE200</color>
<color name="clrYellow">FFE2DA00</color>
<color name="clrBlue">FF007FE2</color>
<color name="clrWhite">FFFFFFFF</color>
<color name="clrTransWhite">99FFFFFF</color>
<color name="clrBlack">FF000000</color>
<color name="clrProgressbar">FF3D0000</color>
<color name="clrBorder">FF2B0000</color>
<color name="clrGray">FF858585</color>
<color name="clrBackground">B0000000</color>
<color name="clrTransBlack">99000000</color>
<color name="clrTransBlackDark">DF000000</color>
<color name="clrTransRed">99FF0000</color>
<color name="clrFontMenuItem">FFFFFFFF</color>
<color name="clrFontMenuItemSelected">FFFFFFFF</color>
<color name="clrFontInactive">FF858585</color>
<color name="clrTransparent">00000000</color>
</colors>
<variables>
<var type="int" name="fadeTime">300</var>
</variables>
</globals>

View File

@ -1,288 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
<globals>
<!--
define all your needed colors here
-->
<colors>
<color name="clrRed">FFFF0000</color>
<color name="clrGreen">FF5FE200</color>
<color name="clrYellow">FFE2DA00</color>
<color name="clrBlue">FF007FE2</color>
<color name="clrWhite">FFFFFFFF</color>
<color name="clrTransWhite">99FFFFFF</color>
<color name="clrBlack">FF000000</color>
<color name="clrProgressbar">FF8EAB21</color>
<color name="clrBorder">FF4C5C11</color>
<color name="clrGray">FF858585</color>
<color name="clrBackground">B012273F</color>
<color name="clrTransBlack">99000000</color>
<color name="clrTransBlackDark">CC000000</color>
<color name="clrTransRed">99FF0000</color>
<color name="clrFontMenuItem">FFFFFFFF</color>
<color name="clrFontMenuItemSelected">FF363636</color>
<color name="clrFontInactive">FF858585</color>
<color name="clrTransparent">00000000</color>
</colors>
<!--
these variables can be used everywhere in the templates
variabls of type int can also be used as conditions, just
set such a variable to 1 for true and 0 for false
-->
<variables>
<var type="int" name="fadeTime">300</var>
</variables>
<!--
translations used in the skin
-->
<translations>
<token name="tr(free)">
<trans lang="en_EN">free</trans>
<trans lang="de_DE">frei</trans>
</token>
<token name="tr(transponder)">
<trans lang="en_EN">Transponder</trans>
<trans lang="de_DE">Transponder</trans>
</token>
<token name="tr(now)">
<trans lang="en_EN">Now</trans>
<trans lang="de_DE">Jetzt</trans>
</token>
<token name="tr(next)">
<trans lang="en_EN">Next</trans>
<trans lang="de_DE">Nachfolgend</trans>
</token>
<token name="tr(nextschedules)">
<trans lang="en_EN">Next Schedules</trans>
<trans lang="de_DE">Nachfolgende Sendungen</trans>
</token>
<token name="tr(reruns)">
<trans lang="en_EN">Reruns</trans>
<trans lang="de_DE">Wiederholungen</trans>
</token>
<token name="tr(rerunsof)">
<trans lang="en_EN">Reruns of</trans>
<trans lang="de_DE">Wiederholungen von</trans>
</token>
<token name="tr(actors)">
<trans lang="en_EN">Actors</trans>
<trans lang="de_DE">Schauspieler</trans>
</token>
<token name="tr(episode)">
<trans lang="en_EN">Episode</trans>
<trans lang="de_DE">Folge</trans>
</token>
<token name="tr(season)">
<trans lang="en_EN">Season</trans>
<trans lang="de_DE">Staffel</trans>
</token>
<token name="tr(gueststars)">
<trans lang="en_EN">Guest Stars</trans>
<trans lang="de_DE">Gaststars</trans>
</token>
<token name="tr(seriesfirstaired)">
<trans lang="en_EN">Series First Aired</trans>
<trans lang="de_DE">Erstausstrahlung der Serie</trans>
</token>
<token name="tr(episodefirstaired)">
<trans lang="en_EN">Episode First Aired</trans>
<trans lang="de_DE">Erstausstrahlung der Episode</trans>
</token>
<token name="tr(network)">
<trans lang="en_EN">Network</trans>
<trans lang="de_DE">TV Station</trans>
</token>
<token name="tr(genre)">
<trans lang="en_EN">Genre</trans>
<trans lang="de_DE">Genre</trans>
</token>
<token name="tr(status)">
<trans lang="en_EN">Status</trans>
<trans lang="de_DE">Status</trans>
</token>
<token name="tr(rating)">
<trans lang="en_EN">Rating</trans>
<trans lang="de_DE">Bewertung</trans>
</token>
<token name="tr(episoderating)">
<trans lang="en_EN">Episode Rating</trans>
<trans lang="de_DE">Bewertung der Folge</trans>
</token>
<token name="tr(recinfo)">
<trans lang="en_EN">Recording Information</trans>
<trans lang="de_DE">Aufnahme Informationen</trans>
</token>
<token name="tr(seriesgalery)">
<trans lang="en_EN">Series Galery</trans>
<trans lang="de_DE">Serien Galerie</trans>
</token>
<token name="tr(moviegalery)">
<trans lang="en_EN">Movie Galery</trans>
<trans lang="de_DE">Spielfilm Galerie</trans>
</token>
<token name="tr(originaltitle)">
<trans lang="en_EN">Original Title</trans>
<trans lang="de_DE">Originaltitel</trans>
</token>
<token name="tr(budget)">
<trans lang="en_EN">Budget</trans>
<trans lang="de_DE">Budget</trans>
</token>
<token name="tr(revenue)">
<trans lang="en_EN">Revenue</trans>
<trans lang="de_DE">Einnahmen</trans>
</token>
<token name="tr(adult)">
<trans lang="en_EN">Adult</trans>
<trans lang="de_DE">Nur für Erwachsene</trans>
</token>
<token name="tr(releasedate)">
<trans lang="en_EN">Release Date</trans>
<trans lang="de_DE">Erscheinungsdatum</trans>
</token>
<token name="tr(runtime)">
<trans lang="en_EN">Runtime</trans>
<trans lang="de_DE">Laufzeit</trans>
</token>
<token name="tr(popularity)">
<trans lang="en_EN">Popularity</trans>
<trans lang="de_DE">Popularität</trans>
</token>
<token name="tr(voteaverage)">
<trans lang="en_EN">Vote Average</trans>
<trans lang="de_DE">Durchschnittliche Wertung</trans>
</token>
<token name="tr(homepage)">
<trans lang="en_EN">Homepage</trans>
<trans lang="de_DE">Homepage</trans>
</token>
<token name="tr(recsize)">
<trans lang="en_EN">Recording size</trans>
<trans lang="de_DE">Größe der Aufnahme</trans>
</token>
<token name="tr(recsizecutted)">
<trans lang="en_EN">Cutted Recording Size</trans>
<trans lang="de_DE">Größe der geschnittenen Aufnahme</trans>
</token>
<token name="tr(reclength)">
<trans lang="en_EN">Recording Length</trans>
<trans lang="de_DE">Länge der Aufnahme</trans>
</token>
<token name="tr(reclengthcutted)">
<trans lang="en_EN">Cutted Recording Length</trans>
<trans lang="de_DE">Länge der geschnittenen Aufnahme</trans>
</token>
<token name="tr(bitrate)">
<trans lang="en_EN">Bit Rate</trans>
<trans lang="de_DE">Bitrate</trans>
</token>
<token name="tr(format)">
<trans lang="en_EN">Format</trans>
<trans lang="de_DE">Format</trans>
</token>
<token name="tr(searchtimer)">
<trans lang="en_EN">Searchtimer</trans>
<trans lang="de_DE">Suchtimer</trans>
</token>
<token name="tr(volume)">
<trans lang="en_EN">Volume</trans>
<trans lang="de_DE">Lautstärke</trans>
</token>
<token name="tr(pause)">
<trans lang="en_EN">Pause</trans>
<trans lang="de_DE">Pause</trans>
</token>
<token name="tr(apparenttemp)">
<trans lang="en_EN">Felt Temperature</trans>
<trans lang="de_DE">Gefühlte Temperatur</trans>
</token>
<token name="tr(todaymin)">
<trans lang="en_EN">minimum today</trans>
<trans lang="de_DE">heutiges Minimum</trans>
</token>
<token name="tr(todaymax)">
<trans lang="en_EN">maximum today</trans>
<trans lang="de_DE">heutiges Maximum</trans>
</token>
<token name="tr(precipitationprobability)">
<trans lang="en_EN">Precipitation Prob.</trans>
<trans lang="de_DE">Regenwahrsch.</trans>
</token>
<token name="tr(precipitationintensity)">
<trans lang="en_EN">Precipitation Intensity</trans>
<trans lang="de_DE">Regenmenge</trans>
</token>
<token name="tr(humidity)">
<trans lang="en_EN">Humidity</trans>
<trans lang="de_DE">Luftfeuchtigkeit</trans>
</token>
<token name="tr(apparenttemp)">
<trans lang="en_EN">Felt Temperature</trans>
<trans lang="de_DE">Gefühlte Temperatur</trans>
</token>
<token name="tr(windbearing)">
<trans lang="en_EN">Wind Bearing</trans>
<trans lang="de_DE">Windrichtung</trans>
</token>
<token name="tr(windspeed)">
<trans lang="en_EN">Wind Speed</trans>
<trans lang="de_DE">Windgeschwindigkeit</trans>
</token>
<token name="tr(cloudcover)">
<trans lang="en_EN">Cloud Cover</trans>
<trans lang="de_DE">Bewölkung</trans>
</token>
<token name="tr(pressure)">
<trans lang="en_EN">Pressure</trans>
<trans lang="de_DE">Luftdruck</trans>
</token>
<token name="tr(ozone)">
<trans lang="en_EN">Ozone</trans>
<trans lang="de_DE">Ozon</trans>
</token>
<token name="tr(visibility)">
<trans lang="en_EN">visibility</trans>
<trans lang="de_DE">Sicht</trans>
</token>
<token name="tr(conditions)">
<trans lang="en_EN">Weather Conditions</trans>
<trans lang="de_DE">Wetterlage</trans>
</token>
<token name="tr(from)">
<trans lang="en_EN">from</trans>
<trans lang="de_DE">aus</trans>
</token>
<token name="tr(felt)">
<trans lang="en_EN">felt</trans>
<trans lang="de_DE">gefühlt</trans>
</token>
<token name="tr(min)">
<trans lang="en_EN">min</trans>
<trans lang="de_DE">min</trans>
</token>
<token name="tr(max)">
<trans lang="en_EN">max</trans>
<trans lang="de_DE">max</trans>
</token>
<token name="tr(for)">
<trans lang="en_EN">for</trans>
<trans lang="de_DE">für</trans>
</token>
</translations>
<!--
The three Fonts FontOSD, FontFix and FontSml configured in VDR
can be used in all template "font" attributes with this tokens:
{vdrOsd}
{vdrFix}
{vdrSml}
If you like to use further fonts, just define them below.
Syntax:
<font name="tokenname">fontname</font>
These fonts can then also be used in all templates in the "font"
attribute.
if an invalid font is used in a template, vdrOsd is used as default.
-->
<fonts>
</fonts>
</globals>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
<globals>
<colors>
<color name="clrRed">FFFF0000</color>
<color name="clrGreen">FF5FE200</color>
<color name="clrYellow">FFE2DA00</color>
<color name="clrBlue">FF007FE2</color>
<color name="clrWhite">FFFFFFFF</color>
<color name="clrTransWhite">99FFFFFF</color>
<color name="clrBlack">FF000000</color>
<color name="clrProgressbar">FF8EAB21</color>
<color name="clrBorder">FF4C5C11</color>
<color name="clrGray">FF858585</color>
<color name="clrBackground">B012273F</color>
<color name="clrTransBlack">99000000</color>
<color name="clrTransBlackDark">CC000000</color>
<color name="clrTransRed">99FF0000</color>
<color name="clrFontMenuItem">FFFFFFFF</color>
<color name="clrFontMenuItemSelected">FF363636</color>
<color name="clrFontInactive">FF858585</color>
<color name="clrTransparent">00000000</color>
</colors>
<variables>
<var type="int" name="fadeTime">300</var>
</variables>
</globals>

View File

@ -419,7 +419,6 @@ void cDisplayMenuMainView::DrawTemperatures(void) {
if (!ViewElementImplemented(veTemperatures)) {
return;
}
cString execCommand = cString::sprintf("cd \"%s/\"; \"%s/temperatures\"", SCRIPTFOLDER, SCRIPTFOLDER);
system(*execCommand);