From 14ae9c7897eaefad5caa0cecda762b0a8a9e9d72 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Tue, 22 Nov 2005 14:18:12 +0000 Subject: [PATCH] add onShown eventlist for executing stuff after the screen is drawn use SimpleChannelSelection to select a service in TimerEntry --- lib/python/Screens/ChannelSelection.py | 13 ++++++++++++- lib/python/Screens/Screen.py | 4 ++++ lib/python/Screens/TimerEntry.py | 7 ++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index 37f594dc..d3921306 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -158,7 +158,7 @@ class ChannelSelection(Screen): self["actions"] = ChannelActionMap(["ChannelSelectActions", "OkCancelActions", "ContextMenuActions"], { - "cancel": self.close, + "cancel": self.doClose, "ok": self.channelSelected, "mark": self.doMark, "contextMenu": self.doContext, @@ -374,11 +374,19 @@ class ChannelSelection(Screen): refstr = "" config.tv.lastservice.value = refstr config.tv.lastservice.save() + + def doClose(self): + self.close() class SimpleChannelSelection(ChannelSelection): def __init__(self, session, title): ChannelSelection.__init__(self, session) self.title = title + self.onShown.append(self.onExecCallback) + + def onExecCallback(self): + print "onExecCallback" + self.session.currentDialog.instance.setTitle(self.title) def channelSelected(self): # just return selected service ref = self.servicelist.getCurrent() @@ -386,4 +394,7 @@ class SimpleChannelSelection(ChannelSelection): def doContext(self): # don't show context menu pass + + def doClose(self): + self.close(None) \ No newline at end of file diff --git a/lib/python/Screens/Screen.py b/lib/python/Screens/Screen.py index 6e5ac21d..13e31d67 100644 --- a/lib/python/Screens/Screen.py +++ b/lib/python/Screens/Screen.py @@ -13,6 +13,7 @@ class Screen(dict, HTMLSkin, GUISkin): self.onClose = [ ] self.onExecBegin = [ ] + self.onShown = [ ] # in order to support screens *without* a help, # we need the list in every screen. how ironic. @@ -25,6 +26,9 @@ class Screen(dict, HTMLSkin, GUISkin): # self.session = session for (name, val) in self.items(): val.execBegin() + + for x in self.onShown: + x() def execEnd(self): for (name, val) in self.items(): diff --git a/lib/python/Screens/TimerEntry.py b/lib/python/Screens/TimerEntry.py index a03435ee..8b4f6b4f 100644 --- a/lib/python/Screens/TimerEntry.py +++ b/lib/python/Screens/TimerEntry.py @@ -178,9 +178,10 @@ class TimerEntry(Screen): self.session.openWithCallback(self.finishedChannelSelection, ChannelSelection.SimpleChannelSelection, _("Select channel to record from")) def finishedChannelSelection(self, args): - self.timer.service_ref = ServiceReference(args) - config.timerentry.service.vals = (str(self.timer.service_ref.getServiceName()),) - self["config"].invalidate(config.timerentry.service) + if (args != None): + self.timer.service_ref = ServiceReference(args) + config.timerentry.service.vals = (str(self.timer.service_ref.getServiceName()),) + self["config"].invalidate(config.timerentry.service) def keyNumberGlobal(self, number): print "You pressed number " + str(number) -- 2.30.2