- work on actions
[enigma2.git] / screens.py
index 9148f25f7e6a1d794b830023ca2cfc7dabc8c20e..cf0daae98329b46dc4328fce67ff2af3577cb673 100644 (file)
@@ -1,5 +1,6 @@
 from components import *
 import sys
+from enigma import quitMainloop
 
 # some screens
 def doGlobal(screen):
@@ -7,6 +8,19 @@ def doGlobal(screen):
 
 class Screen(dict, HTMLSkin, GUISkin):
        """ bla """
+
+       def __init__(self, session):
+               self.skinName = self.__class__.__name__
+               self.session = session
+               GUISkin.__init__(self)
+               
+       def execBegin(self):
+               for (name, val) in self.items():
+                       val.execBegin()
+       
+       def execEnd(self):
+               for (name, val) in self.items():
+                       val.execEnd()
        
        # never call this directly - it will be called from the session!
        def doClose(self):
@@ -14,7 +28,7 @@ class Screen(dict, HTMLSkin, GUISkin):
        
        def close(self, retval=None):
                self.session.close()
-       
+
 class mainMenu(Screen):
        
        def goEmu(self):
@@ -26,22 +40,33 @@ class mainMenu(Screen):
        def goHDTV(self):
                self["title"].setText("HDTV GREEN FLASHES: ENABLED")
        
+       def goScan(self):
+               self.session.open(serviceScan)
+       
        def goClock(self):
-               self.session.open(clockDisplay(Clock()))
+               self.session.open(clockDisplay, Clock())
 
        def okbuttonClick(self):
                selection = self["menu"].getCurrent()
                selection[1]()
-
-       def __init__(self):
-               GUISkin.__init__(self)
+       
+       def __init__(self, session):
+               Screen.__init__(self, session)
                b = Button("ok")
 
+               self["actions"] = ActionMap("MainMenuActions", 
+                       {
+                               "selected": self.okbuttonClick
+                       })
+
                b.onClick = [ self.okbuttonClick ]
                self["okbutton"] = b
                self["title"] = Header("Main Menu! - press ok to leave!")
                self["menu"] = MenuList(
                        [
+                               ("Close Main Menu", self.close),
+                               ("Service Scan", self.goScan),
+                               ("Quit", quitMainloop),
                                ("EMU SETUP", self.goEmu),
                                ("TIMESHIFT SETUP", self.goTimeshift),
                                ("HDTV PIP CONFIG", self.goHDTV),
@@ -57,41 +82,72 @@ class mainMenu(Screen):
 #              self["okbutton"].onClick = [ self.close ]
 
 class channelSelection(Screen):
-       def __init__(self):
-               GUISkin.__init__(self)
+       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["okbutton"] = Button("ok", [self.channelSelected, self.close])
+               self["okbutton"] = Button("ok", [self.channelSelected])
+
+               self["actions"] = ActionMap("ChannelSelectActions", 
+                       {
+                               "selectChannel": self.channelSelected,
+                       })
 
        def channelSelected(self):
-#              print "channel selected!"
+               self.session.nav.playService(self["list"].getCurrent())
+               self.close()
                pass
 
 class infoBar(Screen):
-       def __init__(self):
-               GUISkin.__init__(self)
+       def __init__(self, session):
+               Screen.__init__(self, session)
                
+               self["actions"] = ActionMap("InfobarActions", 
+                       {
+                               "switchChannel": self.switchChannel,
+                               "mainMenu": self.mainMenu
+                       })
                self["channelSwitcher"] = Button("switch Channel", [self.switchChannel])
                self["okbutton"] = Button("mainMenu", [self.mainMenu])
+               
+               self["ServiceName"] = ServiceName(self.session.nav)
+               
+               self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
+               self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
        
        def mainMenu(self):
-               self.session.open(mainMenu())
+               self.session.open(mainMenu)
                
        def switchChannel(self):
-               self.session.open(channelSelection())
+               self.session.open(channelSelection)
 
 # a clock display dialog
 class clockDisplay(Screen):
        def okbutton(self):
                self.session.close()
        
-       def __init__(self, clock):
-               GUISkin.__init__(self)
+       def __init__(self, session, clock):
+               Screen.__init__(self, session)
                self["theClock"] = clock
                b = Button("bye")
                b.onClick = [ self.okbutton ]
                self["okbutton"] = b
                self["title"] = Header("clock dialog: here you see the current uhrzeit!")
 
+
+class serviceScan(Screen):
+       def ok(self):
+               if self["scan"].isDone():
+                       self.close()
+       
+       def __init__(self, session):
+               Screen.__init__(self, session)
+               
+               self["scan_progress"] = ProgressBar()
+               self["scan_state"] = Label("scan state")
+               self["scan"] = ServiceScan(self["scan_progress"], self["scan_state"])
+
+               self["okbutton"] = Button("ok", [self.ok])
+               self["okbutton"].disable()