from Screen import Screen from Components.ActionMap import ActionMap from Components.config import config #global config instance from Components.config import configEntry from Components.config import configBoolean from Components.ConfigList import ConfigList from Components.Label import Label import xml.dom.minidom from xml.dom import EMPTY_NAMESPACE from skin import elementsWithTag from Tools import XMLTools setupdom = xml.dom.minidom.parseString( """ config.inputDevices.repeat config.inputDevices.delay config.rc.map config.timezone.val config.av.colorformat config.av.aspectratio config.av.tvsystem config.av.wss config.av.defaultac3 config.av.vcrswitch config.rfmod.enable config.rfmod.test config.rfmod.sound config.rfmod.soundcarrier config.rfmod.channel config.rfmod.finetune config.keyboard.keymap config.osd.alpha config.osd.bright config.osd.contrast config.osd.language config.lcd.bright config.lcd.standby config.lcd.invert config.parental.lock config.parental.setuplock config.expert.splitsize config.expert.satpos config.expert.fastzap config.expert.skipconfirm config.expert.hideerrors config.expert.autoinfo config.sat.diseqcA config.sat.posA config.sat.satA config.sat.diseqcB config.sat.posB config.sat.satB """) 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 Setup(Screen): def addItems(self, list, childNode): for x in childNode: if x.nodeType != xml.dom.minidom.Element.nodeType: continue elif x.tagName == 'item': ItemText = getValbyAttr(x, "text") b = eval(XMLTools.mergeText(x.childNodes)); print "item " + ItemText + " " + b.configPath if b == "": continue #add to configlist item = b.controlType(b) # the first b is the item itself, ignored by the configList. # the second one is converted to string. list.append( (ItemText, item) ) def keyOk(self): self["config"].handleKey(0) def keyLeft(self): self["config"].handleKey(1) def keyRight(self): self["config"].handleKey(2) def keySave(self): print "save requested" for x in self["config"]: selection = self["config"].getCurrent() selection.save() def __init__(self, session, setup): Screen.__init__(self, session) print "request setup for " + setup xmldata = setupdom.childNodes[0] entries = xmldata.childNodes list = [] for x in entries: #walk through the actual nodelist if x.nodeType != xml.dom.minidom.Element.nodeType: continue elif x.tagName == 'setup': ItemText = getValbyAttr(x, "key") if ItemText != setup: continue self.addItems(list, x.childNodes); #check for list.entries > 0 else self.close self["config"] = ConfigList(list) self["ok"] = Label("OK") self["cancel"] = Label("Cancel") self["actions"] = ActionMap(["SetupActions"], { "cancel": self.close, "ok": self.keyOk, "left": self.keyLeft, "right": self.keyRight, "save": self.keySave })