From a4da9cccc2575c4bf299bde9594dad3e049ddf6a Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Thu, 5 May 2005 23:38:38 +0000 Subject: - split 2 (Screens) --- lib/python/Screens/Menu.py | 210 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 lib/python/Screens/Menu.py (limited to 'lib/python/Screens/Menu.py') diff --git a/lib/python/Screens/Menu.py b/lib/python/Screens/Menu.py new file mode 100644 index 00000000..ce73a954 --- /dev/null +++ b/lib/python/Screens/Menu.py @@ -0,0 +1,210 @@ +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 * + +from enigma import quitMainloop + +import xml.dom.minidom +from xml.dom import EMPTY_NAMESPACE +from skin import elementsWithTag + +# 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 + +def getValbyAttr(x, attr): + for p in range(x.attributes.length): + a = x.attributes.item(p) + attrib = str(a.name) + value = str(a.value) + if attrib == attr: + return value + + return "" + +class boundFunction: + def __init__(self, fnc, *args): + self.fnc = fnc + self.args = args + 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): + selection = self["menu"].getCurrent() + selection[1]() + + def evalText(self, text): + eval(text) + + def nothing(self): #dummy + pass + + def addMenu(self, destList, node): + MenuTitle = getValbyAttr(node, "text") + if MenuTitle != "": #check for title + a = boundFunction(self.session.open, Menu, node, node.childNodes) + #TODO add check if !empty(node.childNodes) + destList.append((MenuTitle, a)) + + def addItem(self, destList, node): + ItemText = getValbyAttr(node, "text") + if ItemText != "": #check for name + b = getText(node.childNodes) + if b != "": #check for function + destList.append((ItemText,boundFunction(self.evalText,b))) + else: + destList.append((ItemText,self.nothing)) #use dummy as function + + def __init__(self, session, parent, childNode): + Screen.__init__(self, session) + + list = [] + + for x in childNode: #walk through the actual nodelist + if x.nodeType != xml.dom.minidom.Element.nodeType: + continue + elif x.tagName == 'item': + self.addItem(list, x) + elif x.tagName == 'menu': + self.addMenu(list, x) + + self["menu"] = MenuList(list) + + self["actions"] = ActionMap(["OkCancelActions"], + { + "ok": self.okbuttonClick, + "cancel": self.close + }) + + a = getValbyAttr(parent, "title") + if a == "": #if empty use name + a = getValbyAttr(parent, "text") + self["title"] = Header(a) + -- cgit v1.2.3