summaryrefslogtreecommitdiff
path: root/libskindesigner
diff options
context:
space:
mode:
Diffstat (limited to 'libskindesigner')
-rw-r--r--libskindesigner/osdelements.c203
-rw-r--r--libskindesigner/osdelements.h91
-rw-r--r--libskindesigner/services.h131
-rw-r--r--libskindesigner/skindesignerosdbase.c209
-rw-r--r--libskindesigner/skindesignerosdbase.h84
5 files changed, 718 insertions, 0 deletions
diff --git a/libskindesigner/osdelements.c b/libskindesigner/osdelements.c
new file mode 100644
index 0000000..11915a8
--- /dev/null
+++ b/libskindesigner/osdelements.c
@@ -0,0 +1,203 @@
+#include "osdelements.h"
+
+/**********************************************************************
+* cOsdElement
+**********************************************************************/
+cOsdElement::cOsdElement(cSkinDisplayPlugin *view) {
+ this->view = view;
+}
+
+cOsdElement::~cOsdElement() {
+}
+
+void cOsdElement::ClearTokens(void) {
+ stringTokens.clear();
+ intTokens.clear();
+ loopTokens.clear();
+}
+
+void cOsdElement::AddStringToken(string key, string value) {
+ stringTokens.insert(pair<string,string>(key, value));
+}
+
+void cOsdElement::AddIntToken(string key, int value) {
+ intTokens.insert(pair<string,int>(key, value));
+}
+
+void cOsdElement::AddLoopToken(string loopName, map<string, string> &tokens) {
+ map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName);
+ if (hitLoop == loopTokens.end()) {
+ vector<map<string, string> > tokenVector;
+ tokenVector.push_back(tokens);
+ loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector));
+ } else {
+ vector<map<string, string> > *tokenVector = &hitLoop->second;
+ tokenVector->push_back(tokens);
+ }
+}
+
+bool cOsdElement::ChannelLogoExists(string channelId) {
+ return view->ChannelLogoExists(channelId);
+}
+
+string cOsdElement::GetEpgImagePath(void) {
+ return view->GetEpgImagePath();
+}
+
+
+/**********************************************************************
+* cViewElement
+**********************************************************************/
+cViewElement::cViewElement(cSkinDisplayPlugin *view, int viewElementID) : cOsdElement(view) {
+ this->viewElementID = viewElementID;
+}
+
+cViewElement::~cViewElement() {
+}
+
+void cViewElement::Clear(void) {
+ if (!view)
+ return;
+ view->ClearViewElement(viewElementID);
+}
+
+void cViewElement::Display(void) {
+ if (!view)
+ return;
+ view->SetViewElementIntTokens(&intTokens);
+ view->SetViewElementStringTokens(&stringTokens);
+ view->SetViewElementLoopTokens(&loopTokens);
+ view->DisplayViewElement(viewElementID);
+}
+
+/**********************************************************************
+* cViewGrid
+**********************************************************************/
+cViewGrid::cViewGrid(cSkinDisplayPlugin *view, int viewGridID) : cOsdElement(view) {
+ this->viewGridID = viewGridID;
+}
+
+cViewGrid::~cViewGrid() {
+}
+
+void cViewGrid::SetGrid(long gridID, double x, double y, double width, double height) {
+ if (!view)
+ return;
+ view->SetGrid(viewGridID, gridID, x, y, width, height, &intTokens, &stringTokens);
+}
+
+void cViewGrid::SetCurrent(long gridID, bool current) {
+ if (!view)
+ return;
+ view->SetGridCurrent(viewGridID, gridID, current);
+}
+
+void cViewGrid::MoveGrid(long gridID, double x, double y, double width, double height) {
+ if (!view)
+ return;
+ view->SetGrid(viewGridID, gridID, x, y, width, height, NULL, NULL);
+}
+
+void cViewGrid::Delete(long gridID) {
+ if (!view)
+ return;
+ view->DeleteGrid(viewGridID, gridID);
+}
+
+void cViewGrid::Clear(void) {
+ if (!view)
+ return;
+ view->ClearGrids(viewGridID);
+}
+
+void cViewGrid::Display(void) {
+ if (!view)
+ return;
+ view->DisplayGrids(viewGridID);
+}
+
+/**********************************************************************
+* cViewTab
+**********************************************************************/
+cViewTab::cViewTab(cSkinDisplayPlugin *view) : cOsdElement(view) {
+}
+
+cViewTab::~cViewTab() {
+}
+
+void cViewTab::Init(void) {
+ view->SetTabIntTokens(&intTokens);
+ view->SetTabStringTokens(&stringTokens);
+ view->SetTabLoopTokens(&loopTokens);
+ view->SetTabs();
+}
+
+void cViewTab::Left(void) {
+ view->TabLeft();
+}
+
+void cViewTab::Right(void) {
+ view->TabRight();
+}
+
+void cViewTab::Up(void) {
+ view->TabUp();
+}
+
+void cViewTab::Down(void) {
+ view->TabDown();
+}
+
+void cViewTab::Display(void) {
+ if (!view)
+ return;
+ view->DisplayTabs();
+}
+
+/**********************************************************************
+* cOsdView
+**********************************************************************/
+cOsdView::cOsdView(cSkinDisplayPlugin *displayPlugin) {
+ this->displayPlugin = displayPlugin;
+}
+
+cOsdView::~cOsdView() {
+ delete displayPlugin;
+}
+
+void cOsdView::Deactivate(bool hide) {
+ if (!displayPlugin)
+ return;
+ displayPlugin->Deactivate(hide);
+}
+
+void cOsdView::Activate(void) {
+ if (!displayPlugin)
+ return;
+ displayPlugin->Activate();
+}
+
+cViewElement *cOsdView::GetViewElement(int viewElementID) {
+ if (!displayPlugin)
+ return NULL;
+ return new cViewElement(displayPlugin, viewElementID);
+}
+
+cViewGrid *cOsdView::GetViewGrid(int viewGridID) {
+ if (!displayPlugin)
+ return NULL;
+ displayPlugin->InitGrids(viewGridID);
+ return new cViewGrid(displayPlugin, viewGridID);
+}
+
+cViewTab *cOsdView::GetViewTabs(void) {
+ if (!displayPlugin)
+ return NULL;
+ return new cViewTab(displayPlugin);
+}
+
+void cOsdView::Display(void) {
+ if (!displayPlugin)
+ return;
+ displayPlugin->Flush();
+}
diff --git a/libskindesigner/osdelements.h b/libskindesigner/osdelements.h
new file mode 100644
index 0000000..057a1fd
--- /dev/null
+++ b/libskindesigner/osdelements.h
@@ -0,0 +1,91 @@
+#ifndef __OSDELEMENTS_H
+#define __OSDELEMENTS_H
+
+#include <vdr/plugin.h>
+#include "services.h"
+
+/**********************************************************************
+* cOsdElement
+**********************************************************************/
+
+class cOsdElement {
+protected:
+ cSkinDisplayPlugin *view;
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
+ map < string, vector< map< string, string > > > loopTokens;
+public:
+ cOsdElement(cSkinDisplayPlugin *view);
+ virtual ~cOsdElement();
+ void AddLoopToken(string loopName, map<string, string> &tokens);
+ void AddStringToken(string key, string value);
+ void AddIntToken(string key, int value);
+ void ClearTokens(void);
+ bool ChannelLogoExists(string channelId);
+ string GetEpgImagePath(void);
+};
+
+/**********************************************************************
+* cViewElement
+**********************************************************************/
+class cViewElement : public cOsdElement {
+private:
+ int viewElementID;
+public:
+ cViewElement(cSkinDisplayPlugin *view, int viewElementID);
+ virtual ~cViewElement();
+ void Clear(void);
+ void Display(void);
+};
+
+/**********************************************************************
+* cViewGrid
+**********************************************************************/
+class cViewGrid : public cOsdElement {
+private:
+ int viewGridID;
+public:
+ cViewGrid(cSkinDisplayPlugin *view, int viewGridID);
+ virtual ~cViewGrid();
+ void SetGrid(long gridID, double x, double y, double width, double height);
+ void SetCurrent(long gridID, bool current);
+ void MoveGrid(long gridID, double x, double y, double width, double height);
+ void Delete(long gridID);
+ void Clear(void);
+ void Display(void);
+};
+
+/**********************************************************************
+* cViewTab
+**********************************************************************/
+class cViewTab : public cOsdElement {
+private:
+public:
+ cViewTab(cSkinDisplayPlugin *view);
+ virtual ~cViewTab();
+ void Init(void);
+ void Left(void);
+ void Right(void);
+ void Up(void);
+ void Down(void);
+ void Display(void);
+};
+
+/**********************************************************************
+* cOsdView
+**********************************************************************/
+class cOsdView {
+private:
+ cSkinDisplayPlugin *displayPlugin;
+public:
+ cOsdView(cSkinDisplayPlugin *displayPlugin);
+ virtual ~cOsdView();
+ void Deactivate(bool hide);
+ void Activate(void);
+ cViewElement *GetViewElement(int viewElementID);
+ cViewGrid *GetViewGrid(int viewGridID);
+ cViewTab *GetViewTabs(void);
+ void Display(void);
+};
+
+#endif // __OSDELEMENTS_H \ No newline at end of file
diff --git a/libskindesigner/services.h b/libskindesigner/services.h
new file mode 100644
index 0000000..8fa9c69
--- /dev/null
+++ b/libskindesigner/services.h
@@ -0,0 +1,131 @@
+#ifndef __SKINDESIGNERSERVICES_H
+#define __SKINDESIGNERSERVICES_H
+
+using namespace std;
+
+#include <string>
+#include <vector>
+#include <map>
+
+enum eMenuType {
+ mtList,
+ mtText
+};
+
+class cSDDisplayMenu : public cSkinDisplayMenu {
+public:
+ virtual void SetTitle(const char *Title);
+ virtual void SetPluginMenu(string name, int menu, int type, bool init);
+ virtual bool SetItemPlugin(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens, int Index, bool Current, bool Selectable);
+ virtual bool SetPluginText(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens);
+};
+
+class cSkinDisplayPlugin {
+public:
+ cSkinDisplayPlugin(void);
+ virtual ~cSkinDisplayPlugin(void);
+ virtual void Deactivate(bool hide);
+ virtual void Activate(void);
+ virtual void ClearViewElement(int id);
+ virtual void DisplayViewElement(int id);
+ virtual void SetViewElementIntTokens(map<string,int> *intTokens);
+ virtual void SetViewElementStringTokens(map<string,string> *stringTokens);
+ virtual void SetViewElementLoopTokens(map<string,vector<map<string,string> > > *loopTokens);
+ virtual void InitGrids(int viewGridID);
+ virtual void SetGrid(int viewGridID, long gridID, double x, double y, double width, double height, map<string,int> *intTokens, map<string,string> *stringTokens);
+ virtual void SetGridCurrent(int viewGridID, long gridID, bool current);
+ virtual void DeleteGrid(int viewGridID, long gridID);
+ virtual void DisplayGrids(int viewGridID);
+ virtual void ClearGrids(int viewGridID);
+ virtual void SetTabIntTokens(map<string,int> *intTokens);
+ virtual void SetTabStringTokens(map<string,string> *stringTokens);
+ virtual void SetTabLoopTokens(map<string,vector<map<string,string> > > *loopTokens);
+ virtual void SetTabs(void);
+ virtual void TabLeft(void);
+ virtual void TabRight(void);
+ virtual void TabUp(void);
+ virtual void TabDown(void);
+ virtual void DisplayTabs(void);
+ virtual void Flush(void);
+ virtual bool ChannelLogoExists(string channelId);
+ virtual string GetEpgImagePath(void);
+};
+
+/*********************************************************************
+* Data Structures for Service Calls
+*********************************************************************/
+
+// Data structure for service "RegisterPlugin"
+class RegisterPlugin {
+public:
+ RegisterPlugin(void) {
+ name = "";
+ };
+ void SetMenu(int key, string templateName) {
+ menus.insert(pair<int, string>(key, templateName));
+ }
+ void SetView(int key, string templateName) {
+ views.insert(pair<int, string>(key, templateName));
+ }
+ void SetSubView(int view, int subView, string templateName) {
+ pair<int, string> sub = make_pair(subView, templateName);
+ subViews.insert(pair<int, pair<int, string> >(view, sub));
+ }
+ void SetViewElement(int view, int viewElement, string name) {
+ map< int, map<int, string> >::iterator hit = viewElements.find(view);
+ if (hit == viewElements.end()) {
+ map<int, string> vE;
+ vE.insert(pair<int, string >(viewElement, name));
+ viewElements.insert(pair<int, map < int, string > >(view, vE));
+ } else {
+ (hit->second).insert(pair<int, string >(viewElement, name));
+ }
+ }
+ void SetViewGrid(int view, int viewGrid, string name) {
+ map< int, map<int, string> >::iterator hit = viewGrids.find(view);
+ if (hit == viewGrids.end()) {
+ map<int, string> vG;
+ vG.insert(pair<int, string >(viewGrid, name));
+ viewGrids.insert(pair<int, map < int, string > >(view, vG));
+ } else {
+ (hit->second).insert(pair<int, string >(viewGrid, name));
+ }
+ }
+// in
+ string name; //name of plugin
+ map< int, string > menus; //menus as key -> templatename hashmap
+ map< int, string> views; //standalone views as key -> templatename hashmap
+ multimap< int, pair <int, string> > subViews; //subviews of standalone views as view -> (subview, templatename) multimap
+ map< int, map <int, string> > viewElements; //viewelements as key -> (viewelement, viewelementname) hashmap
+ map< int, map <int, string> > viewGrids; //viewgrids as key -> (viewgrid, viewgridname) hashmap
+//out
+};
+
+// Data structure for service "GetDisplayMenu"
+class GetDisplayMenu {
+public:
+ GetDisplayMenu(void) {
+ displayMenu = NULL;
+ };
+// in
+//out
+ cSDDisplayMenu *displayMenu;
+};
+
+// Data structure for service "GetDisplayPlugin"
+class GetDisplayPlugin {
+public:
+ GetDisplayPlugin(void) {
+ pluginName = "";
+ viewID = -1;
+ subViewID = -1;
+ displayPlugin = NULL;
+ };
+// in
+ string pluginName;
+ int viewID;
+ int subViewID;
+//out
+ cSkinDisplayPlugin *displayPlugin;
+};
+#endif //__SKINDESIGNERSERVICES_H
diff --git a/libskindesigner/skindesignerosdbase.c b/libskindesigner/skindesignerosdbase.c
new file mode 100644
index 0000000..4d40615
--- /dev/null
+++ b/libskindesigner/skindesignerosdbase.c
@@ -0,0 +1,209 @@
+#include "skindesignerosdbase.h"
+#include "osdelements.h"
+
+/**********************************************************************
+* cSkindesignerOsdObject
+**********************************************************************/
+
+cSkindesignerOsdObject::cSkindesignerOsdObject(void) {
+ pSkinDesigner = NULL;
+ pluginName = "";
+}
+
+cSkindesignerOsdObject::~cSkindesignerOsdObject() {
+}
+
+bool cSkindesignerOsdObject::InitSkindesignerInterface(string pluginName) {
+ this->pluginName = pluginName;
+ pSkinDesigner = cPluginManager::GetPlugin("skindesigner");
+ if (!pSkinDesigner) {
+ return false;
+ }
+ return true;
+}
+
+cOsdView *cSkindesignerOsdObject::GetOsdView(int viewID, int subViewID) {
+ cSkinDisplayPlugin *displayPlugin = NULL;
+ cOsdView *view = NULL;
+ GetDisplayPlugin call;
+ call.pluginName = pluginName;
+ call.viewID = viewID;
+ call.subViewID = subViewID;
+ bool ok = pSkinDesigner->Service("GetDisplayPlugin", &call);
+ if (ok) {
+ displayPlugin = call.displayPlugin;
+ view = new cOsdView(displayPlugin);
+ }
+ return view;
+}
+
+/**********************************************************************
+* cSkindesignerOsdItem
+**********************************************************************/
+cSkindesignerOsdItem::cSkindesignerOsdItem(eOSState State) : cOsdItem(State) {
+ sdDisplayMenu = NULL;
+}
+
+cSkindesignerOsdItem::cSkindesignerOsdItem(const char *Text, eOSState State, bool Selectable) : cOsdItem(Text, State, Selectable) {
+ sdDisplayMenu = NULL;
+}
+
+cSkindesignerOsdItem::~cSkindesignerOsdItem() {
+
+}
+
+void cSkindesignerOsdItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable) {
+ if (sdDisplayMenu) {
+ if (!sdDisplayMenu->SetItemPlugin(&stringTokens, &intTokens, &loopTokens, Index, Current, Selectable)) {
+ DisplayMenu->SetItem(Text(), Index, Current, Selectable);
+ }
+ } else {
+ DisplayMenu->SetItem(Text(), Index, Current, Selectable);
+ }
+}
+
+void cSkindesignerOsdItem::AddStringToken(string key, string value) {
+ stringTokens.insert(pair<string,string>(key, value));
+}
+
+void cSkindesignerOsdItem::AddIntToken(string key, int value) {
+ intTokens.insert(pair<string,int>(key, value));
+}
+
+void cSkindesignerOsdItem::AddLoopToken(string loopName, map<string, string> &tokens) {
+ map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName);
+ if (hitLoop == loopTokens.end()) {
+ vector<map<string, string> > tokenVector;
+ tokenVector.push_back(tokens);
+ loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector));
+ } else {
+ vector<map<string, string> > *tokenVector = &hitLoop->second;
+ tokenVector->push_back(tokens);
+ }
+}
+
+
+/**********************************************************************
+* cSkindesignerOsdMenu
+**********************************************************************/
+cSkindesignerOsdMenu::cSkindesignerOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4) : cOsdMenu(Title, c0, c1, c2, c3, c4) {
+ init = true;
+ displayText = false;
+ sdDisplayMenu = NULL;
+ pluginName = "";
+ SetMenuCategory(mcPlugin);
+ SetSkinDesignerDisplayMenu();
+}
+
+cSkindesignerOsdMenu::~cSkindesignerOsdMenu() {
+
+}
+
+void cSkindesignerOsdMenu::SetPluginMenu(int menu, eMenuType type) {
+ if (type == mtList)
+ displayText = false;
+ else if (type == mtText)
+ displayText = true;
+
+ if (sdDisplayMenu) {
+ sdDisplayMenu->SetPluginMenu(pluginName, menu, type, init);
+ }
+ init = false;
+}
+
+bool cSkindesignerOsdMenu::SetSkinDesignerDisplayMenu(void) {
+ static cPlugin *pSkinDesigner = cPluginManager::GetPlugin("skindesigner");
+ if (!pSkinDesigner) {
+ return false;
+ }
+ GetDisplayMenu call;
+ bool ok = pSkinDesigner->Service("GetDisplayMenu", &call);
+ if (ok && call.displayMenu) {
+ sdDisplayMenu = call.displayMenu;
+ return true;
+ }
+ return false;
+}
+
+void cSkindesignerOsdMenu::ClearTokens(void) {
+ text = "";
+ stringTokens.clear();
+ intTokens.clear();
+ loopTokens.clear();
+}
+
+void cSkindesignerOsdMenu::AddStringToken(string key, string value) {
+ stringTokens.insert(pair<string,string>(key, value));
+}
+
+void cSkindesignerOsdMenu::AddIntToken(string key, int value) {
+ intTokens.insert(pair<string,int>(key, value));
+}
+
+void cSkindesignerOsdMenu::AddLoopToken(string loopName, map<string, string> &tokens) {
+ map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName);
+ if (hitLoop == loopTokens.end()) {
+ vector<map<string, string> > tokenVector;
+ tokenVector.push_back(tokens);
+ loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector));
+ } else {
+ vector<map<string, string> > *tokenVector = &hitLoop->second;
+ tokenVector->push_back(tokens);
+ }
+}
+
+void cSkindesignerOsdMenu::TextKeyLeft(void) {
+ if (!displayText)
+ return;
+ DisplayMenu()->Scroll(true, true);
+}
+
+void cSkindesignerOsdMenu::TextKeyRight(void) {
+ if (!displayText)
+ return;
+ DisplayMenu()->Scroll(false, true);
+}
+
+void cSkindesignerOsdMenu::TextKeyUp(void) {
+ if (!displayText)
+ return;
+ DisplayMenu()->Scroll(true, false);
+}
+
+void cSkindesignerOsdMenu::TextKeyDown(void) {
+ if (!displayText)
+ return;
+ DisplayMenu()->Scroll(false, false);
+}
+
+void cSkindesignerOsdMenu::Display(void) {
+ if (displayText) {
+ if (sdDisplayMenu) {
+ sdDisplayMenu->SetTitle(Title());
+ if (sdDisplayMenu->SetPluginText(&stringTokens, &intTokens, &loopTokens)) {
+ sdDisplayMenu->Flush();
+ } else {
+ DisplayMenu()->Clear();
+ DisplayMenu()->SetTitle(Title());
+ DisplayMenu()->SetText(text.c_str(), false);
+ DisplayMenu()->Flush();
+ }
+ } else {
+ DisplayMenu()->Clear();
+ DisplayMenu()->SetTitle(Title());
+ DisplayMenu()->SetText(text.c_str(), false);
+ DisplayMenu()->Flush();
+ }
+ return;
+ }
+ if (sdDisplayMenu) {
+ sdDisplayMenu->SetTitle(Title());
+ for (cOsdItem *item = First(); item; item = Next(item)) {
+ cSkindesignerOsdItem *sdItem = dynamic_cast<cSkindesignerOsdItem*>(item);
+ if (sdItem) {
+ sdItem->SetDisplayMenu(sdDisplayMenu);
+ }
+ }
+ }
+ cOsdMenu::Display();
+}
diff --git a/libskindesigner/skindesignerosdbase.h b/libskindesigner/skindesignerosdbase.h
new file mode 100644
index 0000000..060ec11
--- /dev/null
+++ b/libskindesigner/skindesignerosdbase.h
@@ -0,0 +1,84 @@
+#ifndef __SKINDESIGNEROSDBASE_H
+#define __SKINDESIGNEROSDBASE_H
+
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+#include <vdr/osdbase.h>
+#include <vdr/plugin.h>
+#include "services.h"
+
+class cOsdView;
+
+/**********************************************************************
+* cSkindesignerOsdObject
+**********************************************************************/
+class cSkindesignerOsdObject : public cOsdObject {
+protected:
+ string pluginName;
+ cPlugin *pSkinDesigner;
+ bool InitSkindesignerInterface(string pluginName);
+ cOsdView *GetOsdView(int viewID, int subViewID = -1);
+public:
+ cSkindesignerOsdObject(void);
+ virtual ~cSkindesignerOsdObject();
+ virtual void Show(void) {};
+};
+
+/**********************************************************************
+* cSkindesignerOsdItem
+**********************************************************************/
+class cSkindesignerOsdItem : public cOsdItem {
+private:
+ cSDDisplayMenu *sdDisplayMenu;
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
+ map < string, vector< map< string, string > > > loopTokens;
+protected:
+public:
+ cSkindesignerOsdItem(eOSState State = osUnknown);
+ cSkindesignerOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true);
+ virtual ~cSkindesignerOsdItem();
+ virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
+ void SetDisplayMenu(cSDDisplayMenu *sdDisplayMenu) { this->sdDisplayMenu = sdDisplayMenu; };
+ void AddStringToken(string key, string value);
+ void AddIntToken(string key, int value);
+ void AddLoopToken(string loopName, map<string, string> &tokens);
+};
+
+/**********************************************************************
+* cSkindesignerOsdMenu
+**********************************************************************/
+class cSkindesignerOsdMenu : public cOsdMenu {
+private:
+ bool init;
+ bool displayText;
+ string pluginName;
+ cSDDisplayMenu *sdDisplayMenu;
+ string text;
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
+ map < string, vector< map< string, string > > > loopTokens;
+ bool SetSkinDesignerDisplayMenu(void);
+protected:
+ void ClearTokens(void);
+ void SetPluginName(string name) {pluginName = name; };
+ void SetPluginMenu(int menu, eMenuType type);
+ void SetText(string text) { this->text = text; };
+ void AddStringToken(string key, string value);
+ void AddIntToken(string key, int value);
+ void AddLoopToken(string loopName, map<string, string> &tokens);
+ void TextKeyLeft(void);
+ void TextKeyRight(void);
+ void TextKeyUp(void);
+ void TextKeyDown(void);
+public:
+ cSkindesignerOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
+ virtual ~cSkindesignerOsdMenu();
+ virtual void Display(void);
+};
+
+#endif // __SKINDESIGNEROSDBASE_H
+