diff options
| -rwxr-xr-x | data/skin_default.xml | 33 | ||||
| -rwxr-xr-x[-rw-r--r--] | lib/python/Components/GUISkin.py | 11 | ||||
| -rwxr-xr-x | lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py | 15 | ||||
| -rwxr-xr-x[-rw-r--r--] | lib/python/Plugins/Extensions/DVDPlayer/plugin.py | 18 | ||||
| -rwxr-xr-x | lib/python/Plugins/Extensions/MediaPlayer/settings.py | 63 | ||||
| -rwxr-xr-x | lib/python/Plugins/Extensions/PicturePlayer/plugin.py | 35 | ||||
| -rwxr-xr-x[-rw-r--r--] | lib/python/Plugins/SystemPlugins/DiseqcTester/plugin.py | 43 | ||||
| -rwxr-xr-x | lib/python/Plugins/SystemPlugins/Videomode/plugin.py | 2 | ||||
| -rwxr-xr-x[-rw-r--r--] | lib/python/Screens/ParentalControlSetup.py | 70 | ||||
| -rwxr-xr-x[-rw-r--r--] | lib/python/Screens/Setup.py | 33 |
10 files changed, 212 insertions, 111 deletions
diff --git a/data/skin_default.xml b/data/skin_default.xml index 582a169b..6efa9699 100755 --- a/data/skin_default.xml +++ b/data/skin_default.xml @@ -655,18 +655,10 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y())) <widget name="key0" position="132,92" size="130,30" font="Console;12" halign="center" valign="center" /> <widget name="help2" position="262,92" size="130,30" font="Console;16" halign="center" valign="center" /> </screen> - <!-- Parental control - change pin --> - <screen name="ParentalControlChangePin" position="center,center" size="520,160" title="Change pin code"> - <widget name="config" position="10,10" size="500,350" scrollbarMode="showOnDemand" /> - </screen> <!-- Parental control - editor --> <screen name="ParentalControlEditor" position="center,center" size="520,400" title="Parental control services Editor"> <widget name="servicelist" position="10,10" size="500,350" scrollbarMode="showOnDemand" /> </screen> - <!-- Parental control - setup --> - <screen name="ParentalControlSetup" position="center,center" size="520,400" title="Parental control setup"> - <widget name="config" position="10,10" size="500,350" scrollbarMode="showOnDemand" /> - </screen> <!-- Picture in picture --> <screen name="PictureInPicture" position="400,60" zPosition="-1" size="240,192" flags="wfNoBorder"> <widget name="video" position="0,0" size="240,192" backgroundColor="transparent" /> @@ -861,14 +853,11 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y())) </screen> <!-- Setup --> <screen name="Setup" position="center,center" size="560,430" title="Setup"> - <widget name="cancel" pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> - <widget name="ok" pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" /> - <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" /> - <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" /> - <widget name="canceltext" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> - <widget name="oktext" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" /> - <widget name="title" position="10,45" size="280,35" font="Regular;23" /> - <widget name="config" position="10,95" size="540,325" scrollbarMode="showOnDemand" /> + <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> + <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" /> + <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> + <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" /> + <widget name="config" position="5,50" size="550,325" scrollbarMode="showOnDemand" /> </screen> <!-- Simple channelselection --> <screen name="SimpleChannelSelection" position="center,center" size="560,430" title="Channel Selection"> @@ -1107,9 +1096,9 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y())) </screen> <!-- LCD screen (setup) --> <screen name="SetupSummary" position="0,0" size="132,64"> - <widget name="SetupTitle" position="6,0" size="120,16" font="Regular;12" /> - <widget name="SetupEntry" position="6,16" size="120,32" font="Regular;12" /> - <widget name="SetupValue" position="6,48" size="120,16" font="Regular;12" /> + <widget source="SetupTitle" render="Label" position="6,0" size="120,16" font="Regular;12" /> + <widget source="SetupEntry" render="Label" position="6,16" size="120,32" font="Regular;12" /> + <widget source="SetupValue" render="Label" position="6,48" size="120,16" font="Regular;12" /> </screen> <!-- LCD screen (misc) --> <screen name="SimpleSummary" position="0,0" size="132,64"> @@ -1170,12 +1159,12 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y())) <widget name="text" position="12,35" size="536,46" font="Regular;46" transparent="1" noWrap="1" halign="right" /> <widget name="list" position="10,100" size="540,225" selectionDisabled="1" transparent="1" /> </screen> - <!-- VideoSetup (VideoMode Plugin) --> - <screen name="VideoSetup" position="center,center" size="560,430" title="VideoSetup"> + <!-- FileBrowser --> + <screen name="FileBrowser" position="center,center" size="520,430" title="DVD File Browser" > <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" /> <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" /> - <widget name="config" position="5,50" size="550,325" scrollbarMode="showOnDemand" /> + <widget name="filelist" position="5,50" size="510,370" scrollbarMode="showOnDemand" /> </screen> </skin> diff --git a/lib/python/Components/GUISkin.py b/lib/python/Components/GUISkin.py index 1bd27297..4ee8a4a3 100644..100755 --- a/lib/python/Components/GUISkin.py +++ b/lib/python/Components/GUISkin.py @@ -1,11 +1,13 @@ from GUIComponent import GUIComponent from skin import applyAllAttributes from Tools.CList import CList +from Sources.StaticText import StaticText class GUISkin: __module__ = __name__ def __init__(self): + self["Title"] = StaticText() self.onLayoutFinish = [ ] self.summaries = CList() self.instance = None @@ -63,9 +65,14 @@ class GUISkin: def setTitle(self, title): self.instance.setTitle(title) - self.title = title + self["Title"].text = title self.summaries.setTitle(title) + def getTitle(self): + return self["Title"].text + + title = property(getTitle, setTitle) + def setDesktop(self, desktop): self.desktop = desktop @@ -88,6 +95,6 @@ class GUISkin: # we need to make sure that certain attributes come last self.skinAttributes.sort(key=lambda a: {"position": 1}.get(a[0], 0)) - self.title = title + self["Title"].text = title applyAllAttributes(self.instance, self.desktop, self.skinAttributes, self.scale) self.createGUIScreen(self.instance, self.desktop) diff --git a/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py b/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py index 9b4e2d54..c4289cb0 100755 --- a/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py +++ b/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py @@ -14,17 +14,12 @@ from Components.config import config, getConfigListEntry from Components.ConfigList import ConfigListScreen class FileBrowser(Screen, HelpableScreen): - skin = """ - <screen name="FileBrowser" position="center,center" size="520,430" title="DVD File Browser" > - <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> - <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" /> - <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> - <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" /> - <widget name="filelist" position="5,50" size="510,380" scrollbarMode="showOnDemand" /> - </screen>""" def __init__(self, session, scope, configRef): Screen.__init__(self, session) + # for the skin: first try FileBrowser_DVDBurn, then FileBrowser, this allows individual skinning + self.skinName = ["FileBrowser_DVDBurn", "FileBrowser" ] + HelpableScreen.__init__(self) self.scope = scope pattern = "" @@ -57,12 +52,12 @@ class FileBrowser(Screen, HelpableScreen): self.filelist = FileList(currDir, matchingPattern=pattern) self["filelist"] = self.filelist - self["FilelistActions"] = ActionMap(["OkCancelActions"], + self["FilelistActions"] = ActionMap(["SetupActions"], { + "save": self.ok, "ok": self.ok, "cancel": self.exit }) - self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("OK")) self.onLayoutFinish.append(self.layoutFinished) diff --git a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py index ce5fa9d2..e895a141 100644..100755 --- a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py +++ b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py @@ -7,6 +7,7 @@ from Screens.HelpMenu import HelpableScreen from Screens.InfoBarGenerics import InfoBarSeek, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarShowHide, InfoBarNotifications from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap from Components.Label import Label +from Components.Sources.StaticText import StaticText from Components.Pixmap import Pixmap from Components.FileList import FileList from Components.MenuList import MenuList @@ -20,13 +21,13 @@ import servicedvd # load c++ part of dvd player plugin lastpath = "" class FileBrowser(Screen): - skin = """ - <screen name="FileBrowser" position="100,100" size="520,376" title="DVD File Browser" > - <widget name="filelist" position="0,0" size="520,376" scrollbarMode="showOnDemand" /> - </screen>""" + def __init__(self, session, dvd_filelist = [ ]): Screen.__init__(self, session) + # for the skin: first try FileBrowser_DVDPlayer, then FileBrowser, this allows individual skinning + self.skinName = ["FileBrowser_DVDPlayer", "FileBrowser" ] + self.dvd_filelist = dvd_filelist if len(dvd_filelist): self["filelist"] = MenuList(self.dvd_filelist) @@ -42,11 +43,18 @@ class FileBrowser(Screen): self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(iso)", useServiceRef = True) self["filelist"] = self.filelist - self["FilelistActions"] = ActionMap(["OkCancelActions"], + self["FilelistActions"] = ActionMap(["SetupActions"], { + "save": self.ok, "ok": self.ok, "cancel": self.exit }) + self["key_red"] = StaticText(_("Cancel")) + self["key_green"] = StaticText(_("OK")) + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + self.setTitle(_("DVD File Browser")) def ok(self): if len(self.dvd_filelist): diff --git a/lib/python/Plugins/Extensions/MediaPlayer/settings.py b/lib/python/Plugins/Extensions/MediaPlayer/settings.py index 5f9ce7cd..0b95812f 100755 --- a/lib/python/Plugins/Extensions/MediaPlayer/settings.py +++ b/lib/python/Plugins/Extensions/MediaPlayer/settings.py @@ -1,7 +1,7 @@ from Screens.Screen import Screen from Screens.HelpMenu import HelpableScreen -from Components.Label import Label from Components.FileList import FileList +from Components.Sources.StaticText import StaticText from Components.MediaPlayer import PlayList from Components.config import config, getConfigListEntry, ConfigSubsection, configfile, ConfigText, ConfigYesNo, ConfigDirectory from Components.ConfigList import ConfigListScreen @@ -14,19 +14,14 @@ config.mediaplayer.saveDirOnExit = ConfigYesNo(default=False) config.mediaplayer.defaultDir = ConfigDirectory() class DirectoryBrowser(Screen, HelpableScreen): - skin = """ - <screen name="DirectoryBrowser" position="center,center" size="560,400" title="Directory browser" > - <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> - <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" /> - <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> - <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" /> - <widget name="filelist" position="5,50" size="550,350" scrollbarMode="showOnDemand" /> - </screen>""" + def __init__(self, session, currDir): - from Components.Sources.StaticText import StaticText Screen.__init__(self, session) + # for the skin: first try MediaPlayerDirectoryBrowser, then FileBrowser, this allows individual skinning + self.skinName = ["MediaPlayerDirectoryBrowser", "FileBrowser" ] + HelpableScreen.__init__(self) - + self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("Use")) @@ -40,36 +35,39 @@ class DirectoryBrowser(Screen, HelpableScreen): "ok": self.ok, "cancel": self.exit }) + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + self.setTitle(_("Directory browser")) def ok(self): if self.filelist.canDescent(): self.filelist.descent() def use(self): - if self.filelist.canDescent() and self["filelist"].getFilename() and len(self["filelist"].getFilename()) > len(self["filelist"].getCurrentDirectory()): - self.filelist.descent() - self.close(self["filelist"].getCurrentDirectory()) + if self["filelist"].getCurrentDirectory() is not None: + if self.filelist.canDescent() and self["filelist"].getFilename() and len(self["filelist"].getFilename()) > len(self["filelist"].getCurrentDirectory()): + self.filelist.descent() + self.close(self["filelist"].getCurrentDirectory()) + else: + self.close(self["filelist"].getFilename()) def exit(self): self.close(False) class MediaPlayerSettings(Screen,ConfigListScreen): - skin = """ - <screen name="MediaPlayerSettings" position="center,center" size="560,300" title="Edit settings"> - <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> - <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" /> - <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> - <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" /> - <widget name="config" position="5,50" size="550,250" /> - </screen>""" def __init__(self, session, parent): - from Components.Sources.StaticText import StaticText Screen.__init__(self, session) + # for the skin: first try MediaPlayerSettings, then Setup, this allows individual skinning + self.skinName = ["MediaPlayerSettings", "Setup" ] + self.setup_title = _("Edit settings") + self.onChangedEntry = [ ] + self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("Save")) - ConfigListScreen.__init__(self, []) + ConfigListScreen.__init__(self, [], session = session, on_change = self.changedEntry) self.parent = parent self.initConfigList() config.mediaplayer.saveDirOnExit.addNotifier(self.initConfigList) @@ -82,6 +80,9 @@ class MediaPlayerSettings(Screen,ConfigListScreen): "ok": self.ok, }, -2) + def layoutFinished(self): + self.setTitle(self.setup_title) + def initConfigList(self, element=None): print "[initConfigList]", element try: @@ -115,3 +116,17 @@ class MediaPlayerSettings(Screen,ConfigListScreen): def cancel(self): self.close() + # for summary: + def changedEntry(self): + for x in self.onChangedEntry: + x() + + def getCurrentEntry(self): + return self["config"].getCurrent()[0] + + def getCurrentValue(self): + return str(self["config"].getCurrent()[1].getText()) + + def createSummary(self): + from Screens.Setup import SetupSummary + return SetupSummary diff --git a/lib/python/Plugins/Extensions/PicturePlayer/plugin.py b/lib/python/Plugins/Extensions/PicturePlayer/plugin.py index 7902b14d..5d1c2cba 100755 --- a/lib/python/Plugins/Extensions/PicturePlayer/plugin.py +++ b/lib/python/Plugins/Extensions/PicturePlayer/plugin.py @@ -145,34 +145,32 @@ class picshow(Screen): #------------------------------------------------------------------------------------------ class Pic_Setup(Screen, ConfigListScreen): - skin = """ - <screen name="Pic_Setup" position="center,center" size="550,350" title="Settings" > - <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> - <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" /> - <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> - <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" /> - <widget name="config" position="5,50" size="540,300" /> - </screen>""" + def __init__(self, session): Screen.__init__(self, session) + # for the skin: first try MediaPlayerSettings, then Setup, this allows individual skinning + self.skinName = ["PicturePlayerSetup", "Setup" ] + self.setup_title = _("Settings") + self.onChangedEntry = [ ] self.session = session - self["actions"] = ActionMap(["SetupActions", "ColorActions"], + self["actions"] = ActionMap(["SetupActions"], { "cancel": self.keyCancel, "save": self.keySave, + "ok": self.keySave, }, -2) self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("OK")) self.list = [] - ConfigListScreen.__init__(self, self.list, session = self.session) + ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.changedEntry) self.createSetup() self.onLayoutFinish.append(self.layoutFinished) def layoutFinished(self): - self.setTitle(_("Settings")) + self.setTitle(self.setup_title) def createSetup(self): self.list = [] @@ -193,6 +191,21 @@ class Pic_Setup(Screen, ConfigListScreen): def keyRight(self): ConfigListScreen.keyRight(self) + # for summary: + def changedEntry(self): + for x in self.onChangedEntry: + x() + + def getCurrentEntry(self): + return self["config"].getCurrent()[0] + + def getCurrentValue(self): + return str(self["config"].getCurrent()[1].getText()) + + def createSummary(self): + from Screens.Setup import SetupSummary + return SetupSummary + #--------------------------------------------------------------------------- class Pic_Exif(Screen): diff --git a/lib/python/Plugins/SystemPlugins/DiseqcTester/plugin.py b/lib/python/Plugins/SystemPlugins/DiseqcTester/plugin.py index 71ae50b6..5b7edcf6 100644..100755 --- a/lib/python/Plugins/SystemPlugins/DiseqcTester/plugin.py +++ b/lib/python/Plugins/SystemPlugins/DiseqcTester/plugin.py @@ -560,24 +560,34 @@ class DiseqcTester(Screen, TuneTest, ResultParser): self["CmdText"].setText(_("Press OK to get further details for %s") % str(self["progress_list"].getCurrent()[1])) class DiseqcTesterTestTypeSelection(Screen, ConfigListScreen): - skin = """<screen position="80,95" size="560,412" title="DiSEqC Tester Test Settings"> - <widget name="config" position="10,10" size="540,402" scrollbarMode="showOnDemand" /> - </screen> - """ + def __init__(self, session, feid): Screen.__init__(self, session) + # for the skin: first try MediaPlayerSettings, then Setup, this allows individual skinning + self.skinName = ["DiseqcTesterTestTypeSelection", "Setup" ] + self.setup_title = _("DiSEqC-Tester settings") + self.onChangedEntry = [ ] self.feid = feid self.list = [] - ConfigListScreen.__init__(self, self.list) + ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.changedEntry) self["actions"] = ActionMap(["SetupActions"], - { - "cancel": self.keyCancel - }, -2) + { + "cancel": self.keyCancel, + "save": self.keyOK, + "ok": self.keyOK, + }, -2) + + self["key_red"] = StaticText(_("Cancel")) + self["key_green"] = StaticText(_("OK")) self.createSetup() - + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + self.setTitle(self.setup_title) + def createSetup(self): self.testtype = ConfigSelection(choices={"quick": _("Quick"), "random": _("Random"), "complete": _("Complete")}, default = "quick") self.testtypeEntry = getConfigListEntry(_("Test Type"), self.testtype) @@ -613,6 +623,21 @@ class DiseqcTesterTestTypeSelection(Screen, ConfigListScreen): def keyCancel(self): self.close() + # for summary: + def changedEntry(self): + for x in self.onChangedEntry: + x() + + def getCurrentEntry(self): + return self["config"].getCurrent()[0] + + def getCurrentValue(self): + return str(self["config"].getCurrent()[1].getText()) + + def createSummary(self): + from Screens.Setup import SetupSummary + return SetupSummary + class DiseqcTesterNimSelection(NimSelection): skin = """ <screen position="160,123" size="400,330" title="Choose Tuner"> diff --git a/lib/python/Plugins/SystemPlugins/Videomode/plugin.py b/lib/python/Plugins/SystemPlugins/Videomode/plugin.py index db810f0c..733edd6d 100755 --- a/lib/python/Plugins/SystemPlugins/Videomode/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/plugin.py @@ -13,6 +13,8 @@ class VideoSetup(Screen, ConfigListScreen): def __init__(self, session, hw): Screen.__init__(self, session) + # for the skin: first try VideoSetup, then Setup, this allows individual skinning + self.skinName = ["VideoSetup", "Setup" ] self.setup_title = _("A/V Settings") self.hw = hw self.onChangedEntry = [ ] diff --git a/lib/python/Screens/ParentalControlSetup.py b/lib/python/Screens/ParentalControlSetup.py index 4c63dd5c..a123d2d3 100644..100755 --- a/lib/python/Screens/ParentalControlSetup.py +++ b/lib/python/Screens/ParentalControlSetup.py @@ -4,6 +4,7 @@ from Components.ActionMap import NumberActionMap from Components.config import config, getConfigListEntry, ConfigNothing, NoSave, ConfigPIN from Components.ParentalControlList import ParentalControlEntryComponent, ParentalControlList from Components.ParentalControl import parentalControl +from Components.Sources.StaticText import StaticText from Screens.ChoiceBox import ChoiceBox from Screens.MessageBox import MessageBox from Screens.InputBox import PinInput @@ -39,23 +40,35 @@ class ParentalControlSetup(Screen, ConfigListScreen, ProtectedScreen): def __init__(self, session): Screen.__init__(self, session) ProtectedScreen.__init__(self) + # for the skin: first try ParentalControlSetup, then Setup, this allows individual skinning + self.skinName = ["ParentalControlSetup", "Setup" ] + self.setup_title = _("Parental control setup") + self.onChangedEntry = [ ] + self.list = [] - ConfigListScreen.__init__(self, self.list) + ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.changedEntry) self.createSetup() - + self["actions"] = NumberActionMap(["SetupActions"], { - "cancel": self.keyCancel + "cancel": self.keyCancel, + "save": self.keyCancel }, -2) + self["key_red"] = StaticText(_("Cancel")) + self["key_green"] = StaticText(_("OK")) + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + self.setTitle(self.setup_title) def isProtected(self): return config.ParentalControl.setuppinactive.value and config.ParentalControl.configured.value - + def createSetup(self): self.editListEntry = None self.changePin = None self.changeSetupPin = None - + self.list = [] self.list.append(getConfigListEntry(_("Enable parental control"), config.ParentalControl.configured)) print "config.ParentalControl.configured.value", config.ParentalControl.configured.value @@ -77,7 +90,7 @@ class ParentalControlSetup(Screen, ConfigListScreen, ProtectedScreen): #self.list.append(getConfigListEntry(_("Remember service pin"), config.ParentalControl.storeservicepin)) self.editListEntry = getConfigListEntry(_("Edit services list"), NoSave(ConfigNothing())) self.list.append(self.editListEntry) - + self["config"].list = self.list self["config"].setList(self.list) @@ -136,6 +149,20 @@ class ParentalControlSetup(Screen, ConfigListScreen, ProtectedScreen): def keyNumberGlobal(self, number): pass + # for summary: + def changedEntry(self): + for x in self.onChangedEntry: + x() + + def getCurrentEntry(self): + return self["config"].getCurrent()[0] + + def getCurrentValue(self): + return str(self["config"].getCurrent()[1].getText()) + + def createSummary(self): + from Screens.Setup import SetupSummary + return SetupSummary SPECIAL_CHAR = 96 class ParentalControlEditor(Screen): @@ -224,6 +251,11 @@ class ParentalControlEditor(Screen): class ParentalControlChangePin(Screen, ConfigListScreen, ProtectedScreen): def __init__(self, session, pin, pinname): Screen.__init__(self, session) + # for the skin: first try ParentalControlChangePin, then Setup, this allows individual skinning + self.skinName = ["ParentalControlChangePin", "Setup" ] + self.setup_title = _("Change pin code") + self.onChangedEntry = [ ] + self.pin = pin self.list = [] self.pin1 = ConfigPIN(default = 1111, censor = "*") @@ -232,16 +264,24 @@ class ParentalControlChangePin(Screen, ConfigListScreen, ProtectedScreen): self.pin2.addEndNotifier(boundFunction(self.valueChanged, 2)) self.list.append(getConfigListEntry(_("New pin"), NoSave(self.pin1))) self.list.append(getConfigListEntry(_("Reenter new pin"), NoSave(self.pin2))) - ConfigListScreen.__init__(self, self.list) + ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.changedEntry) # print "old pin:", pin #if pin.value != "aaaa": #self.onFirstExecBegin.append(boundFunction(self.session.openWithCallback, self.pinEntered, PinInput, pinList = [self.pin.value], title = _("please enter the old pin"), windowTitle = _("Change pin code"))) ProtectedScreen.__init__(self) - + self["actions"] = NumberActionMap(["DirectionActions", "ColorActions", "OkCancelActions"], { "cancel": self.cancel, + "red": self.cancel, + "save": self.keyOK, }, -1) + self["key_red"] = StaticText(_("Cancel")) + self["key_green"] = StaticText(_("OK")) + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + self.setTitle(self.setup_title) def valueChanged(self, pin, value): if pin == 1: @@ -279,3 +319,17 @@ class ParentalControlChangePin(Screen, ConfigListScreen, ProtectedScreen): def keyNumberGlobal(self, number): ConfigListScreen.keyNumberGlobal(self, number) + # for summary: + def changedEntry(self): + for x in self.onChangedEntry: + x() + + def getCurrentEntry(self): + return self["config"].getCurrent()[0] + + def getCurrentValue(self): + return str(self["config"].getCurrent()[1].getText()) + + def createSummary(self): + from Screens.Setup import SetupSummary + return SetupSummary diff --git a/lib/python/Screens/Setup.py b/lib/python/Screens/Setup.py index 7226562f..e9c3c680 100644..100755 --- a/lib/python/Screens/Setup.py +++ b/lib/python/Screens/Setup.py @@ -3,8 +3,7 @@ from Components.ActionMap import NumberActionMap from Components.config import config, ConfigNothing from Components.SystemInfo import SystemInfo from Components.ConfigList import ConfigListScreen -from Components.Label import Label -from Components.Pixmap import Pixmap +from Components.Sources.StaticText import StaticText import xml.etree.cElementTree @@ -27,26 +26,21 @@ class SetupError(Exception): return self.msg class SetupSummary(Screen): - skin = """ - <screen position="6,0" size="120,64"> - <widget name="SetupTitle" position="6,0" size="120,16" font="Regular;12" /> - <widget name="SetupEntry" position="6,16" size="120,32" font="Regular;12" /> - <widget name="SetupValue" position="6,48" size="120,16" font="Regular;12" /> - </screen>""" def __init__(self, session, parent): + Screen.__init__(self, session, parent = parent) - self["SetupTitle"] = Label(_(parent.setup_title)) - self["SetupEntry"] = Label("") - self["SetupValue"] = Label("") + self["SetupTitle"] = StaticText(_(parent.setup_title)) + self["SetupEntry"] = StaticText("") + self["SetupValue"] = StaticText("") self.onShow.append(self.addWatcher) self.onHide.append(self.removeWatcher) - + def addWatcher(self): self.parent.onChangedEntry.append(self.selectionChanged) self.parent["config"].onSelectionChanged.append(self.selectionChanged) self.selectionChanged() - + def removeWatcher(self): self.parent.onChangedEntry.remove(self.selectionChanged) self.parent["config"].onSelectionChanged.remove(self.selectionChanged) @@ -77,7 +71,6 @@ class Setup(ConfigListScreen, Screen): def __init__(self, session, setup): Screen.__init__(self, session) - # for the skin: first try a setup_<setupID>, then Setup self.skinName = ["setup_" + setup, "Setup" ] @@ -88,13 +81,9 @@ class Setup(ConfigListScreen, Screen): self.refill(list) #check for list.entries > 0 else self.close - self["title"] = Label(_(self.setup_title)) + self["key_red"] = StaticText(_("Cancel")) + self["key_green"] = StaticText(_("OK")) - self["oktext"] = Label(_("OK")) - self["canceltext"] = Label(_("Cancel")) - self["ok"] = Pixmap() - self["cancel"] = Pixmap() - self["actions"] = NumberActionMap(["SetupActions"], { "cancel": self.keyCancel, @@ -104,6 +93,10 @@ class Setup(ConfigListScreen, Screen): ConfigListScreen.__init__(self, list, session = session, on_change = self.changedEntry) self.changedEntry() + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + self.setTitle(_(self.setup_title)) # for summary: def changedEntry(self): |
