X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a4da9cccc2575c4bf299bde9594dad3e049ddf6a..3a3836240d87bc63d4865d56a49fb2113634308b:/lib/python/Screens/Menu.py diff --git a/lib/python/Screens/Menu.py b/lib/python/Screens/Menu.py index ce73a954..328c9b39 100644 --- a/lib/python/Screens/Menu.py +++ b/lib/python/Screens/Menu.py @@ -1,15 +1,17 @@ -from Screen import * +#from Screen import * from Components.MenuList import MenuList from Components.ActionMap import ActionMap from Components.Header import Header - -# hack ... must be made dynamic -from ServiceScan import ServiceScan -from ScartLoopThrough import ScartLoopThrough from Components.Button import Button from Components.Label import Label from Components.ProgressBar import ProgressBar -from ConfigMenu import * + +# hack.... dynamically importing all screens +from __init__ import __all__ +for i in __all__: + print "import " + i + if (i is not "Menu" ): + exec "from " + i + " import *" from enigma import quitMainloop @@ -17,67 +19,31 @@ import xml.dom.minidom from xml.dom import EMPTY_NAMESPACE from skin import elementsWithTag +from Tools import XMLTools + # some screens def doGlobal(screen): screen["clock"] = Clock() -mdom = xml.dom.minidom.parseString( - """ - - quitMainloop() - self.openDialog(ServiceScan) - - self.setModeTV() - self.setModeRadio() - self.setModeFile() - self.openDialog(ScartLoopThrough) - - - - - - - - - - - - - self.openDialog(ServiceScan) - - - - - - - - - - self.openDialog(configOSD) - - - - - - - - - - - - - - self.goSetup() - - """) - -def getText(nodelist): - rc = "" - for node in nodelist: - if node.nodeType == node.TEXT_NODE: - rc = rc + node.data - return rc +# self.setModeTV() +# self.setModeRadio() +# self.setModeFile() +# self.openDialog(ScartLoopThrough) +# + + +# read the menu +try: + # first we search in the current path + menufile = file('data/menu.xml', 'r') +except: + # if not found in the current path, we use the global datadir-path + menufile = file('/usr/share/enigma2/menu.xml', 'r') +mdom = xml.dom.minidom.parseString(menufile.read()) +menufile.close() + + def getValbyAttr(x, attr): for p in range(x.attributes.length): @@ -96,67 +62,9 @@ class boundFunction: def __call__(self): self.fnc(*self.args) -class configOSD(Screen): - #this needs focus handling - so not useable - - def okbuttonClick(self): - self.close - - def __init__(self, session): - Screen.__init__(self, session) - - self["actions"] = ActionMap(["OkCancelActions"], - { - "ok": self.okbuttonClick, - "cancel": self.close - }) - - self["okbutton"] = Button("Save") - - self["txt_alpha"] = Label("Alpha:") - self["sld_alpha"] = ProgressBar() - self["sld_alpha"].setValue(50) - - self["txt_brightness"] = Label("Brightness:") - self["sld_brightness"] = ProgressBar() - self["sld_brightness"].setValue(50) - - self["txt_gamma"] = Label("Contrast:") - self["sld_gamma"] = ProgressBar() - self["sld_gamma"].setValue(50) - - - - class Menu(Screen): - #add file load functions for the xml-file - #remove old code (i.e. goScan / goClock...) - - def openDialog(self, dialog): - self.session.open(dialog) - - def goSetup(self): - self.session.open(configTest) - - def setModeTV(self): - print "set Mode to TV" - pass - - def setModeRadio(self): - print "set Mode to Radio" - pass - - def setModeFile(self): - print "set Mode to File" - pass - - def goScan(self): - self.session.open(ServiceScan) - - def goClock(self): - self.session.open(clockDisplay, Clock()) - def okbuttonClick(self): + print "okbuttonClick" selection = self["menu"].getCurrent() selection[1]() @@ -166,6 +74,12 @@ class Menu(Screen): def nothing(self): #dummy pass + def openDialog(self, dialog): # in every layer needed + self.session.open(dialog) + + def openSetup(self, dialog): + self.session.open(Setup, dialog) + def addMenu(self, destList, node): MenuTitle = getValbyAttr(node, "text") if MenuTitle != "": #check for title @@ -176,7 +90,7 @@ class Menu(Screen): def addItem(self, destList, node): ItemText = getValbyAttr(node, "text") if ItemText != "": #check for name - b = getText(node.childNodes) + b = XMLTools.mergeText(node.childNodes) if b != "": #check for function destList.append((ItemText,boundFunction(self.evalText,b))) else: @@ -208,3 +122,46 @@ class Menu(Screen): a = getValbyAttr(parent, "text") self["title"] = Header(a) +class FixedMenu(Screen): + def okbuttonClick(self): + selection = self["menu"].getCurrent() + selection[1]() + + def __init__(self, session, title, list): + Screen.__init__(self, session) + + self["menu"] = MenuList(list) + + self["actions"] = ActionMap(["OkCancelActions"], + { + "ok": self.okbuttonClick, + "cancel": self.close + }) + + self["title"] = Header(title) + + +class MainMenu(Menu): + #add file load functions for the xml-file + + def __init__(self, *x): + Menu.__init__(self, *x) + self.skinName = "Menu" + + def openDialog(self, dialog): + self.session.open(dialog) + + def openSetup(self, dialog): + self.session.open(Setup, dialog) + + def setModeTV(self): + print "set Mode to TV" + pass + + def setModeRadio(self): + print "set Mode to Radio" + pass + + def setModeFile(self): + print "set Mode to File" + pass