diff options
author | lordjaxom <lordjaxom> | 2005-01-15 20:54:37 +0000 |
---|---|---|
committer | lordjaxom <lordjaxom> | 2005-01-15 20:54:37 +0000 |
commit | f12c23cf36eb930c2dfa5ffaa7f995945b992c73 (patch) | |
tree | 5a2c86ebfc50fa21e49e4b97b67be5474458101d | |
parent | 4360824376109682b28821331f46617c180821f0 (diff) | |
download | vdr-plugin-text2skin-f12c23cf36eb930c2dfa5ffaa7f995945b992c73.tar.gz vdr-plugin-text2skin-f12c23cf36eb930c2dfa5ffaa7f995945b992c73.tar.bz2 |
- implemented variable translation
-rw-r--r-- | xml/string.c | 20 | ||||
-rw-r--r-- | xml/string.h | 8 |
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); |