convert to new skin system
[enigma2.git] / lib / python / Screens / Menu.py
index e3e3a0a5c6e40441a80a344b8ae2feb33572f307..41818748c1d603a819d73b3e59ec77593937e7f8 100644 (file)
@@ -1,11 +1,12 @@
-from Screen import *
-from Components.MenuList import MenuList
+from Screen import Screen
+from Components.Sources.MenuList import MenuList
 from Components.ActionMap import ActionMap
 from Components.Header import Header
 from Components.Button import Button
 from Components.Label import Label
 from Components.ProgressBar import ProgressBar
 from Components.config import configfile
 from Components.ActionMap import ActionMap
 from Components.Header import Header
 from Components.Button import Button
 from Components.Label import Label
 from Components.ProgressBar import ProgressBar
 from Components.config import configfile
+from Components.Sources.Clock import Clock
 
 from Tools.Directories import resolveFilename, SCOPE_SKIN
 
 
 from Tools.Directories import resolveFilename, SCOPE_SKIN
 
@@ -19,11 +20,6 @@ from Screens.Setup import *
 
 from Tools import XMLTools
 
 
 from Tools import XMLTools
 
-# some screens
-def doGlobal(screen):
-       screen["clock"] = Clock()
-
-
 #              <item text="TV-Mode">self.setModeTV()</item>
 #              <item text="Radio-Mode">self.setModeRadio()</item>
 #              <item text="File-Mode">self.setModeFile()</item>
 #              <item text="TV-Mode">self.setModeTV()</item>
 #              <item text="Radio-Mode">self.setModeRadio()</item>
 #              <item text="File-Mode">self.setModeFile()</item>
@@ -73,7 +69,36 @@ class MenuUpdater:
                return self.updatedMenuItems[id]
        
 menuupdater = MenuUpdater()
                return self.updatedMenuItems[id]
        
 menuupdater = MenuUpdater()
-               
+
+class MenuSummary(Screen):
+       skin = """
+       <screen position="0,0" size="132,64">
+               <widget name="MenuTitle" position="0,4" size="132,21" font="Regular;18" />
+               <widget name="MenuEntry" position="0,25" size="132,21" font="Regular;16" />
+               <widget source="CurrentTime" render="Label" position="50,46" size="82,18" font="Regular;16" >
+                       <convert type="ClockToText">WithSeconds</convert>
+               </widget>
+       </screen>"""
+
+       def __init__(self, session, parent):
+               Screen.__init__(self, session)
+               self["MenuTitle"] = Label(parent.menu_title)
+               self["MenuEntry"] = Label("")
+               self["CurrentTime"] = Clock()
+               self.parent = parent
+               self.onShow.append(self.addWatcher)
+               self.onHide.append(self.removeWatcher)
+       
+       def addWatcher(self):
+               self.parent["menu"].onSelectionChanged.append(self.selectionChanged)
+               self.selectionChanged()
+       
+       def removeWatcher(self):
+               self.parent["menu"].onSelectionChanged.remove(self.selectionChanged)
+
+       def selectionChanged(self):
+               self["MenuEntry"].setText(self.parent["menu"].getCurrent()[0])
+
 class Menu(Screen):
        def okbuttonClick(self):
                print "okbuttonClick"
 class Menu(Screen):
        def okbuttonClick(self):
                print "okbuttonClick"
@@ -82,7 +107,7 @@ class Menu(Screen):
 
        def execText(self, text):
                exec text
 
        def execText(self, text):
                exec text
-               
+
        def runScreen(self, arg):
                # arg[0] is the module (as string)
                # arg[1] is Screen inside this module 
        def runScreen(self, arg):
                # arg[0] is the module (as string)
                # arg[1] is Screen inside this module 
@@ -90,7 +115,6 @@ class Menu(Screen):
                #        string (as we want to reference 
                #        stuff which is just imported)
                # FIXME. somehow
                #        string (as we want to reference 
                #        stuff which is just imported)
                # FIXME. somehow
-               print arg
                if arg[0] != "":
                        exec "from " + arg[0] + " import *"
                        
                if arg[0] != "":
                        exec "from " + arg[0] + " import *"
                        
@@ -118,7 +142,7 @@ class Menu(Screen):
 
        def menuClosedWithConfigFlush(self, *res):
                configfile.save()
 
        def menuClosedWithConfigFlush(self, *res):
                configfile.save()
-               self.menuClosed(res)
+               self.menuClosed(*res)
 
        def menuClosed(self, *res):
                if len(res) and res[0]:
 
        def menuClosed(self, *res):
                if len(res) and res[0]:
@@ -198,6 +222,7 @@ class Menu(Screen):
                if a == "":                                                                                                             #if empty use name
                        a = _(getValbyAttr(parent, "text"))
                self["title"] = Header(a)
                if a == "":                                                                                                             #if empty use name
                        a = _(getValbyAttr(parent, "text"))
                self["title"] = Header(a)
+               self.menu_title = a
 
        def closeNonRecursive(self):
                self.close(False)
 
        def closeNonRecursive(self):
                self.close(False)
@@ -205,6 +230,9 @@ class Menu(Screen):
        def closeRecursive(self):
                self.close(True)
 
        def closeRecursive(self):
                self.close(True)
 
+       def createSummary(self):
+               return MenuSummary
+
 class MainMenu(Menu):
        #add file load functions for the xml-file
        
 class MainMenu(Menu):
        #add file load functions for the xml-file