X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1cdf6cb021fcaa6548b90ba7b6765cf1e8b8b37b..8a7fd294aeb67932e1057bf967958bbe5a959cfb:/screens.py diff --git a/screens.py b/screens.py index cf0daae9..fe8d69db 100644 --- a/screens.py +++ b/screens.py @@ -15,16 +15,25 @@ class Screen(dict, HTMLSkin, GUISkin): GUISkin.__init__(self) def execBegin(self): +# assert self.session == None, "a screen can only exec one per time" +# self.session = session for (name, val) in self.items(): val.execBegin() def execEnd(self): for (name, val) in self.items(): val.execEnd() +# assert self.session != None, "execEnd on non-execing screen!" +# self.session = None # never call this directly - it will be called from the session! def doClose(self): GUISkin.close(self) + + del self.session + for (name, val) in self.items(): + print "%s -> %d" % (name, sys.getrefcount(val)) + del self[name] def close(self, retval=None): self.session.close() @@ -54,9 +63,10 @@ class mainMenu(Screen): Screen.__init__(self, session) b = Button("ok") - self["actions"] = ActionMap("MainMenuActions", + self["actions"] = ActionMap(["OkCancelActions"], { - "selected": self.okbuttonClick + "ok": self.okbuttonClick, + "cancel": self.close }) b.onClick = [ self.okbuttonClick ] @@ -73,28 +83,38 @@ class mainMenu(Screen): ("wie spaet ists?!", self.goClock) ]) -#class mainMenu(Screen): -# def __init__(self): -# GUISkin.__init__(self) -# -# self["title"] = Header("this is the\nMAIN MENU !!!"); -# self["okbutton"] = Button("ok") -# self["okbutton"].onClick = [ self.close ] - class channelSelection(Screen): def __init__(self, session): Screen.__init__(self, session) self["list"] = ServiceList() - self["list"].setRoot(eServiceReference("1:0:1:0:0:0:0:0:0:0:PREMIERE")) + self["list"].setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(provider=="ARD") && (type == 1)""")) self["okbutton"] = Button("ok", [self.channelSelected]) - - self["actions"] = ActionMap("ChannelSelectActions", + + class ChannelActionMap(ActionMap): + def action(self, contexts, action): + if action[:7] == "bouquet": + print "setting root to " + action[8:] + self.csel["list"].setRoot(eServiceReference("1:0:1:0:0:0:0:0:0:0:" + action[8:])) + else: + ActionMap.action(self, contexts, action) + + self["actions"] = ChannelActionMap(["ChannelSelectActions", "OkCancelActions"], { - "selectChannel": self.channelSelected, + "cancel": self.close, + "ok": self.channelSelected, + "mark": self.doMark }) - + self["actions"].csel = self + + def doMark(self): + ref = self["list"].getCurrent() + if self["list"].isMarked(ref): + self["list"].removeMarked(ref) + else: + self["list"].addMarked(ref) + def channelSelected(self): self.session.nav.playService(self["list"].getCurrent()) self.close() @@ -104,18 +124,22 @@ class infoBar(Screen): def __init__(self, session): Screen.__init__(self, session) - self["actions"] = ActionMap("InfobarActions", + self["actions"] = ActionMap( [ "InfobarActions" ], { "switchChannel": self.switchChannel, "mainMenu": self.mainMenu }) - self["channelSwitcher"] = Button("switch Channel", [self.switchChannel]) self["okbutton"] = Button("mainMenu", [self.mainMenu]) + self["CurrentTime"] = Clock() + self["ServiceName"] = ServiceName(self.session.nav) self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now) self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next) + + self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration) + self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration) def mainMenu(self): self.session.open(mainMenu) @@ -136,12 +160,15 @@ class clockDisplay(Screen): self["okbutton"] = b self["title"] = Header("clock dialog: here you see the current uhrzeit!") - class serviceScan(Screen): def ok(self): + print "ok" if self["scan"].isDone(): self.close() + def cancel(self): + print "cancel not yet implemented ;)" + def __init__(self, session): Screen.__init__(self, session) @@ -149,5 +176,9 @@ class serviceScan(Screen): self["scan_state"] = Label("scan state") self["scan"] = ServiceScan(self["scan_progress"], self["scan_state"]) - self["okbutton"] = Button("ok", [self.ok]) - self["okbutton"].disable() + self["actions"] = ActionMap(["OkCancelActions"], + { + "ok": self.ok, + "cancel": self.cancel + }) +