#from Screen import * from Components.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 # hack ... must be made dynamic #from Screens.Setup import Setup #from ServiceScan import ServiceScan #from ScartLoopThrough import ScartLoopThrough #from HarddiskSetup import HarddiskSelection #from ConfigMenu import * #from About import * #from Network import * #from TimerEdit 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 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() # 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): 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): def okbuttonClick(self): print "okbuttonClick" selection = self["menu"].getCurrent() selection[1]() def evalText(self, text): eval(text) 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 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 = XMLTools.mergeText(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) 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 #remove old code (i.e. goScan / goClock...) 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 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())