diff options
| author | louis <louis.braun@gmx.de> | 2015-08-14 17:23:12 +0200 |
|---|---|---|
| committer | louis <louis.braun@gmx.de> | 2015-08-14 17:23:12 +0200 |
| commit | a5d7d6437dbc5a72279b1f5fbfb21d4c337dedc9 (patch) | |
| tree | 70178c268fdaf46deb55f454e00240b3916cedb9 | |
| parent | f44aabb7ac97f329645bab102849150f5bc30983 (diff) | |
| download | vdr-plugin-skindesigner-a5d7d6437dbc5a72279b1f5fbfb21d4c337dedc9.tar.gz vdr-plugin-skindesigner-a5d7d6437dbc5a72279b1f5fbfb21d4c337dedc9.tar.bz2 | |
added possibility to define help texts for skin setup parameters
| -rw-r--r-- | HISTORY | 3 | ||||
| -rw-r--r-- | dtd/setup.dtd | 1 | ||||
| -rw-r--r-- | libcore/skinsetup.c | 12 | ||||
| -rw-r--r-- | libcore/skinsetup.h | 5 | ||||
| -rw-r--r-- | libtemplate/xmlparser.c | 5 | ||||
| -rw-r--r-- | po/de_DE.po | 6 | ||||
| -rw-r--r-- | po/fi_FI.po | 5 | ||||
| -rw-r--r-- | setup.c | 47 | ||||
| -rw-r--r-- | setup.h | 8 | ||||
| -rw-r--r-- | skins/metrixhd/setup.xml | 40 | ||||
| -rw-r--r-- | skins/metrixhd/xmlfiles/displaymenudetailtext.xml | 7 |
11 files changed, 110 insertions, 29 deletions
@@ -428,3 +428,6 @@ Version 0.7.0 Version 0.7.1 - fixed bug that setup int parameters do not respect the max value +- added possibility to define help texts for skin setup parameters + +Version 0.7.2 diff --git a/dtd/setup.dtd b/dtd/setup.dtd index 15f1928..0eb88b5 100644 --- a/dtd/setup.dtd +++ b/dtd/setup.dtd @@ -17,6 +17,7 @@ min NMTOKEN #IMPLIED
max NMTOKEN #IMPLIED
displaytext CDATA #REQUIRED
+ helptext CDATA #IMPLIED
options CDATA #IMPLIED
>
diff --git a/libcore/skinsetup.c b/libcore/skinsetup.c index 1630cc9..3a6b7cf 100644 --- a/libcore/skinsetup.c +++ b/libcore/skinsetup.c @@ -9,6 +9,7 @@ cSkinSetupParameter::cSkinSetupParameter(void) { type = sptUnknown; name = ""; displayText = ""; + helpText = ""; min = 0; max = 1000; value = 0; @@ -106,11 +107,12 @@ void cSkinSetupMenu::InitIterators(void) { subMenuIt = subMenus.begin(); } -void cSkinSetupMenu::SetParameter(eSetupParameterType paramType, string name, string displayText, string min, string max, string value, string options) { +void cSkinSetupMenu::SetParameter(eSetupParameterType paramType, string name, string displayText, string helpText, string min, string max, string value, string options) { cSkinSetupParameter *param = new cSkinSetupParameter(); param->type = paramType; param->name = name; param->displayText = displayText; + param->helpText = helpText; if (min.size() && paramType == sptInt) { param->min = atoi(min.c_str()); @@ -221,7 +223,7 @@ void cSkinSetup::SubMenuDone(void) { } } -void cSkinSetup::SetParameter(string type, string name, string displayText, string min, string max, string value, string options) { +void cSkinSetup::SetParameter(string type, string name, string displayText, string helpText, string min, string max, string value, string options) { if (!type.size() || !name.size() || !displayText.size() || !value.size()) { esyslog("skindesigner: invalid setup parameter for skin %s", skin.c_str()); return; @@ -238,7 +240,7 @@ void cSkinSetup::SetParameter(string type, string name, string displayText, stri esyslog("skindesigner: invalid setup parameter for skin %s", skin.c_str()); return; } - currentMenu->SetParameter(paramType, name, displayText, min, max, value, options); + currentMenu->SetParameter(paramType, name, displayText, helpText, min, max, value, options); } cSkinSetupParameter *cSkinSetup::GetNextParameter(void) { @@ -278,6 +280,10 @@ void cSkinSetup::TranslateSetup(void) { if (Translate(param->displayText, transl)) { param->displayText = transl; } + string translHelp = ""; + if (Translate(param->helpText, translHelp)) { + param->helpText = translHelp; + } if (param->type == sptString && param->numOptions > 0) { param->optionsTranslated = new const char*[param->numOptions]; for (int i = 0; i < param->numOptions; i++) { diff --git a/libcore/skinsetup.h b/libcore/skinsetup.h index a664ebc..0ae49cc 100644 --- a/libcore/skinsetup.h +++ b/libcore/skinsetup.h @@ -29,6 +29,7 @@ public: eSetupParameterType type; string name; string displayText; + string helpText; int min; int max; int value; @@ -59,7 +60,7 @@ public: void SetParent(cSkinSetupMenu *p) { parent = p; }; cSkinSetupMenu *GetParent(void) { return parent; }; void AddSubMenu(cSkinSetupMenu *sub) { subMenus.push_back(sub); }; - void SetParameter(eSetupParameterType paramType, string name, string displayText, string min, string max, string value, string options); + void SetParameter(eSetupParameterType paramType, string name, string displayText, string helpText, string min, string max, string value, string options); void InitIterators(void); void InitParameterIterator(void) { paramIt = parameters.begin(); }; cSkinSetupParameter *GetNextParameter(bool deep = true); @@ -86,7 +87,7 @@ public: bool ReadFromXML(void); void SetSubMenu(string name, string displayText); void SubMenuDone(void); - void SetParameter(string type, string name, string displayText, string min, string max, string value, string options); + void SetParameter(string type, string name, string displayText, string helpText, string min, string max, string value, string options); void InitParameterIterator(void) { rootMenu->InitIterators(); }; cSkinSetupParameter *GetNextParameter(void); cSkinSetupParameter *GetParameter(string name); diff --git a/libtemplate/xmlparser.c b/libtemplate/xmlparser.c index 17fa2c6..8db3d3d 100644 --- a/libtemplate/xmlparser.c +++ b/libtemplate/xmlparser.c @@ -588,6 +588,8 @@ void cXmlParser::ParseSetupParameter(void) { string paramName = ""; string attributeDisplayText = "displaytext"; string paramDisplayText = ""; + string attributeHelpText = "helptext"; + string paramHelpText = ""; string attributeMin = "min"; string paramMin = ""; string attributeMax = "max"; @@ -599,12 +601,13 @@ void cXmlParser::ParseSetupParameter(void) { GetAttribute(attributeType, paramType); GetAttribute(attributeName, paramName); GetAttribute(attributeDisplayText, paramDisplayText); + GetAttribute(attributeHelpText, paramHelpText); GetAttribute(attributeMin, paramMin); GetAttribute(attributeMax, paramMax); GetAttribute(attributeOptions, paramOptions); GetNodeValue(paramValue); - skinSetup->SetParameter(paramType, paramName, paramDisplayText, paramMin, paramMax, paramValue, paramOptions); + skinSetup->SetParameter(paramType, paramName, paramDisplayText, paramHelpText, paramMin, paramMax, paramValue, paramOptions); } void cXmlParser::ValidateAttributes(const char *nodeName, vector<stringpair> &attributes) { diff --git a/po/de_DE.po b/po/de_DE.po index 185622e..a46d874 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-skindesigner 0.0.1\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2015-07-17 17:02+0200\n" +"POT-Creation-Date: 2015-08-14 17:20+0200\n" "PO-Revision-Date: 2014-09-27 11:02+0200\n" "Last-Translator: Louis Braun <louis.braun@gmx.de>\n" "Language-Team: \n" @@ -156,6 +156,9 @@ msgstr "Weitere verfügbare Skins" msgid "Preview Skin" msgstr "Skin Vorschau" +msgid "Help" +msgstr "Hilfe" + msgid "Author" msgstr "Autor" @@ -164,3 +167,4 @@ msgstr "Benutze Schriften" msgid "Supported Plugins" msgstr "Unterstützte Plugins" + diff --git a/po/fi_FI.po b/po/fi_FI.po index ec665a1..12b3ed7 100644 --- a/po/fi_FI.po +++ b/po/fi_FI.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-skindesigner 0.2.0\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2015-07-17 17:02+0200\n" +"POT-Creation-Date: 2015-08-14 17:20+0200\n" "PO-Revision-Date: 2015-01-25 01:25+0200\n" "Last-Translator: Rolf Ahrenberg\n" "Language-Team: Finnish\n" @@ -156,6 +156,9 @@ msgstr "" msgid "Preview Skin" msgstr "" +msgid "Help" +msgstr "" + msgid "Author" msgstr "" @@ -1,5 +1,6 @@ #include <vdr/interface.h> #include "libcore/curlfuncs.h" +#include <vdr/menu.h> #include "setup.h" // --- cInstallManager ----------------------------------------------------------- @@ -386,6 +387,12 @@ cOsdMenu(*cString::sprintf("%s: %s \"%s\" %s", trVDR("Setup"), tr("Skin"), skin. SetMenuCategory(mcPluginSetup); this->skin = skin; this->menu = menu; + buttonRed = tr("Update"); + buttonGreen = tr("Help"); + buttonYellow = tr("Delete Skin"); + showRed = false; + showYellow = false; + hadHelp = false; Set(); } @@ -397,6 +404,9 @@ eOSState cSkindesignerSkinSetup::ProcessKey(eKeys Key) { if (state == osEnd) return osEnd; state = cOsdMenu::ProcessKey(Key); + if (Key == kUp || Key == kDown) { + ShowButtons(Current()); + } if (state == osUnknown) { switch (Key) { case kOk: { @@ -443,6 +453,17 @@ eOSState cSkindesignerSkinSetup::ProcessKey(eKeys Key) { state = osContinue; break; } + case kGreen: { + string helpText = helpTexts[Current()]; + if (helpText.size() == 0) { + state = osContinue; + break; + } + const char* ItemText = Get(Current())->Text(); + string title = *cString::sprintf("%s - %s", buttonGreen.c_str(), ItemText); + state = AddSubMenu(new cMenuText(title.c_str(), helpText.c_str())); + break; + } default: break; } @@ -457,13 +478,11 @@ void cSkindesignerSkinSetup::Set(void) { } cSkinRepo *repo = config.GetSkinRepo(skin); - if (repo) { - if (repo->Type() == rtGit) - SetHelp(tr("Update"), NULL, tr("Delete Skin"), NULL); - else - SetHelp(NULL, NULL, tr("Delete Skin"), NULL); - } - + if (repo && repo->Type() == rtGit) + showRed = true; + if (repo) + showYellow = true; + setupMenu->InitParameterIterator(); cSkinSetupParameter *param = NULL; while (param = setupMenu->GetNextParameter(false)) { @@ -474,13 +493,27 @@ void cSkindesignerSkinSetup::Set(void) { } else if (param->type == sptString) { Add(new cMenuEditStraItem(param->displayText.c_str(), ¶m->value, param->numOptions, param->optionsTranslated)); } + helpTexts.push_back(param->helpText); } setupMenu->InitSubmenuIterator(); cSkinSetupMenu *subMenu = NULL; while (subMenu = setupMenu->GetNextSubMenu(false)) { Add(new cSkinSetupSubMenu(subMenu->GetName(), subMenu->GetDisplayText())); + helpTexts.push_back(""); } + + ShowButtons(0, true); +} + +void cSkindesignerSkinSetup::ShowButtons(int current, bool force) { + bool showGreen = helpTexts[current].size() > 0 ? true : false; + bool changed = false; + if ((hadHelp && !showGreen) || (!hadHelp && showGreen)) + changed = true; + hadHelp = showGreen; + if (changed || force) + SetHelp(showRed ? buttonRed.c_str() : "", showGreen ? buttonGreen.c_str() : "", showYellow ? buttonYellow.c_str() : "", NULL); } // --- cSkindesignerSkinPreview ----------------------------------------------------------- @@ -93,6 +93,14 @@ class cSkindesignerSkinSetup : public cOsdMenu, cInstallManager { private: string skin; string menu; + vector<string> helpTexts; + string buttonRed; + string buttonGreen; + string buttonYellow; + bool showRed; + bool showYellow; + bool hadHelp; + void ShowButtons(int current, bool force = false); protected: virtual eOSState ProcessKey(eKeys Key); void Set(void); diff --git a/skins/metrixhd/setup.xml b/skins/metrixhd/setup.xml index ad1d246..dc5039b 100644 --- a/skins/metrixhd/setup.xml +++ b/skins/metrixhd/setup.xml @@ -3,12 +3,12 @@ <setup> <menu> - <parameter type="int" name="fadetime" min="0" max="1000" displaytext="{tr(fadetext)}">0</parameter> - <parameter type="int" name="shifttimechannel" min="0" max="1000" displaytext="{tr(shifttimechanneltext)}">0</parameter> - <parameter type="int" name="shifttimedatetime" min="0" max="1000" displaytext="{tr(shifttimedatetimetext)}">0</parameter> - <parameter type="int" name="shifttimetimers" min="0" max="1000" displaytext="{tr(shifttimetimerstext)}">0</parameter> - <parameter type="bool" name="showdevices" displaytext="{tr(showdevices)}">0</parameter> - <parameter type="string" name="mainmenuorientation" displaytext="{tr(mainmenuorientation)}" options="horizontal,vertical">1</parameter> + <parameter type="int" name="fadetime" min="0" max="1000" displaytext="{tr(fadetext)}" helptext="{tr(helpfade)}">0</parameter> + <parameter type="int" name="shifttimechannel" min="0" max="1000" displaytext="{tr(shifttimechanneltext)}" helptext="{tr(helpshifttimechannel)}">0</parameter> + <parameter type="int" name="shifttimedatetime" min="0" max="1000" displaytext="{tr(shifttimedatetimetext)}" helptext="{tr(helpshifttimedatetime)}">0</parameter> + <parameter type="int" name="shifttimetimers" min="0" max="1000" displaytext="{tr(shifttimetimerstext)}" helptext="{tr(helpshifttimetimers)}">0</parameter> + <parameter type="bool" name="showdevices" displaytext="{tr(showdevices)}" helptext="{tr(helpshowdevices)}">0</parameter> + <parameter type="string" name="mainmenuorientation" displaytext="{tr(mainmenuorientation)}" helptext="{tr(helpmainmenuorientation)}" options="horizontal,vertical">1</parameter> <parameter type="string" name="recmenuorientation" displaytext="{tr(recmenuorientation)}" options="horizontal,vertical">1</parameter> <parameter type="string" name="weathermenuorientation" displaytext="{tr(weathermenuorientation)}" options="horizontal,vertical">1</parameter> </menu> @@ -19,27 +19,51 @@ <trans lang="de_DE">Einblendzeit [ms]</trans> <trans lang="fi_FI">Häivytyksen kesto [ms]</trans> </token> + <token name="tr(helpfade)"> + <trans lang="en_EN">Fade time in ms. If this is set to a value larger 0 all OSD elements beside the VDR menu fade in and out.</trans> + <trans lang="de_DE">Einblendzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu ein- und ausgeblendet</trans> + </token> <token name="tr(shifttimechanneltext)"> <trans lang="en_EN">Shift time Channel Display [ms]</trans> <trans lang="de_DE">Einfahrzeit Channel Display [ms]</trans> </token> + <token name="tr(helpshifttimechannel)"> + <trans lang="en_EN">Shifting time in ms. If this is set to a value larger 0 all OSD elements beside the VDR menu are shifted in and out from the bottom of the screen. If fadetime is also set to a value larger 0, still shifting is performed</trans> + <trans lang="de_DE">Einfahrzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu vom unteren Rand des Bildschirms herein- und herausgefahren. Falls fadetime ebenfalls auf einen Wert größer 0 gesetzt ist, wird das OSD trotzdem herein- und herausgefahren.</trans> + </token> <token name="tr(shifttimedatetimetext)"> <trans lang="en_EN">Shift time Channel Date, Time, Weather [ms]</trans> <trans lang="de_DE">Einfahrzeit Channel Date, Time, Wetter [ms]</trans> </token> + <token name="tr(helpshifttimedatetime)"> + <trans lang="en_EN">Shifting time of OSD Elements date, time and weather when switching in ms. If set to 0, the elements are shown immediately.</trans> + <trans lang="de_DE">Einfahrzeit der OSD Elemente Datum, Zeit und Wetter während des Umschaltens in ms. Steht dieser Wert auf 0, werden die Elemente sofort angezeigt.</trans> + </token> <token name="tr(shifttimetimerstext)"> <trans lang="en_EN">Shift time Timers Main Menu [ms]</trans> <trans lang="de_DE">Einfahrzeit Timer Hauptmenü [ms]</trans> </token> + <token name="tr(helpshifttimetimers)"> + <trans lang="en_EN">Shifting time of timers display in main menu in ms. If set to 0, the timers are shown immediately.</trans> + <trans lang="de_DE">Einfahrzeit der Timer im Hauptmenü in ms. Steht dieser Wert auf 0, werden die Timer sofort angezeigt.</trans> + </token> <token name="tr(showdevices)"> - <trans lang="en_EN">Show DVB device info when switching channel</trans> - <trans lang="de_DE">DVB Karten Info beim Umschalten anzeigen</trans> + <trans lang="en_EN">Show DVB device info</trans> + <trans lang="de_DE">DVB Karten Info anzeigen</trans> <trans lang="fi_FI">Näytä DVB-tiedot kanavanvaihdossa</trans> </token> + <token name="tr(helpshowdevices)"> + <trans lang="en_EN">If set to true, information about usage of each available DVB device is displayed during channel switching and in the main menu</trans> + <trans lang="de_DE">Falls diese Option aktiviert ist, werden beim Umschalten und im Hauptmenü Informationen über alle verfügbaren DVB Devices ausgegeben.</trans> + </token> <token name="tr(mainmenuorientation)"> <trans lang="en_EN">Orientation of main menu</trans> <trans lang="de_DE">Ausrichtung des Hauptmenüs</trans> </token> + <token name="tr(helpmainmenuorientation)"> + <trans lang="en_EN">Orientation of main menu. If orientation is set to horizontal, only the current list element is displayed. If set to vertical, 8 elements are shown in the list.</trans> + <trans lang="de_DE">Ausrichtung des Hauptmenüs. Falls die Ausrichtung auf horizontal gesetzt ist, wird nur das aktuelle Listenelement ausgegeben. Ist die Ausrichtung vertikal, werden 8 Listenelemente angezeigt.</trans> + </token> <token name="tr(recmenuorientation)"> <trans lang="en_EN">Orientation of recordings menu</trans> <trans lang="de_DE">Ausrichtung des Aufzeichnugsmenüs</trans> diff --git a/skins/metrixhd/xmlfiles/displaymenudetailtext.xml b/skins/metrixhd/xmlfiles/displaymenudetailtext.xml index 59cda9b..08c37b2 100644 --- a/skins/metrixhd/xmlfiles/displaymenudetailtext.xml +++ b/skins/metrixhd/xmlfiles/displaymenudetailtext.xml @@ -4,11 +4,6 @@ <fill color="{clrTransBlack}" /> </area> </background> - <header> - <area x="0" y="0" width="75%" height="10%" layer="2"> - <drawtext x="5" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{title}" /> - </area> - </header> <datetime> <area x="75%" y="0" width="12%" height="10%" layer="2"> <drawtext align="right" y="15%" font="{light}" fontsize="30%" color="{clrWhite}" text="{dayname}" /> @@ -70,6 +65,6 @@ </scrollbar> <tab name="text" x="2%" y="10%" width="94%" height="80%" layer="2" scrollheight="{areaheight}/4"> - <drawtextbox x="0" y="0" width="96%" font="{light}" fontsize="5%" color="{clrWhite}" text="{text}" /> + <drawtextbox x="0" y="0" width="96%" font="{light}" fontsize="7%" color="{clrWhite}" text="{text}" /> </tab> </menudetailedtext> |
