summaryrefslogtreecommitdiff
path: root/xml
diff options
context:
space:
mode:
authorlordjaxom <lordjaxom>2005-01-15 20:54:37 +0000
committerlordjaxom <lordjaxom>2005-01-15 20:54:37 +0000
commitf12c23cf36eb930c2dfa5ffaa7f995945b992c73 (patch)
tree5a2c86ebfc50fa21e49e4b97b67be5474458101d /xml
parent4360824376109682b28821331f46617c180821f0 (diff)
downloadvdr-plugin-text2skin-f12c23cf36eb930c2dfa5ffaa7f995945b992c73.tar.gz
vdr-plugin-text2skin-f12c23cf36eb930c2dfa5ffaa7f995945b992c73.tar.bz2
- implemented variable translation
Diffstat (limited to 'xml')
-rw-r--r--xml/string.c20
-rw-r--r--xml/string.h8
2 files changed, 17 insertions, 11 deletions
diff --git a/xml/string.c b/xml/string.c
index 26e3a22..5c0eab7 100644
--- a/xml/string.c
+++ b/xml/string.c
@@ -1,5 +1,5 @@
/*
- * $Id: string.c,v 1.8 2005/01/11 18:18:31 lordjaxom Exp $
+ * $Id: string.c,v 1.9 2005/01/15 20:54:37 lordjaxom Exp $
*/
#include "xml/string.h"
@@ -49,8 +49,9 @@ std::string txToken::Token(const txToken &Token)
cxString::tStringList cxString::mStrings;
-cxString::cxString(cxSkin *Skin):
- mSkin(Skin)
+cxString::cxString(cxSkin *Skin, bool Translate):
+ mSkin(Skin),
+ mTranslate(Translate)
{
mStrings.push_back(this);
}
@@ -69,13 +70,15 @@ cxString::~cxString()
void cxString::Reparse(void)
{
tStringList::iterator it = mStrings.begin();
- for (; it != mStrings.end(); ++it)
- (*it)->Parse();
+ for (; it != mStrings.end(); ++it) {
+ if ((*it)->mTranslate && (*it)->mText.length() > 0)
+ (*it)->Parse((*it)->mOriginal, true);
+ }
}
-bool cxString::Parse(const std::string &Text)
+bool cxString::Parse(const std::string &Text, bool Translate)
{
- std::string trans = mSkin->Translate(Text);
+ std::string trans = Translate ? mSkin->Translate(Text) : Text;
const char *text = trans.c_str();
const char *ptr = text, *last = text;
bool inToken = false;
@@ -183,6 +186,9 @@ bool cxString::Parse(const std::string &Text)
}
mText.append(last, ptr - last);
+
+ if (mTranslate && !Translate && mText.length() > 0)
+ Parse(Text, true);
return true;
}
diff --git a/xml/string.h b/xml/string.h
index 7fe7be7..8cd849d 100644
--- a/xml/string.h
+++ b/xml/string.h
@@ -1,5 +1,5 @@
/*
- * $Id: string.h,v 1.9 2005/01/11 18:18:31 lordjaxom Exp $
+ * $Id: string.h,v 1.10 2005/01/15 20:54:37 lordjaxom Exp $
*/
#ifndef VDR_TEXT2SKIN_XML_STRING_H
@@ -180,15 +180,15 @@ private:
std::string mOriginal;
std::vector<txToken> mTokens;
cxSkin *mSkin;
+ bool mTranslate;
public:
static void Reparse(void);
- cxString(cxSkin *Skin);
+ cxString(cxSkin *Skin, bool Translate);
~cxString();
- bool Parse(const std::string &Text);
- bool Parse(void) { return mOriginal.length() > 0 ? Parse(mOriginal) : true; }
+ bool Parse(const std::string &Text, bool Translate = false);
cxType Evaluate(void) const;
void SetListIndex(uint Index, int Tab);