1 from Screen import Screen
2 from Components.ActionMap import ActionMap
3 from Components.config import config #global config instance
4 from Components.config import configEntry
5 from Components.config import configBoolean
6 from Components.ConfigList import ConfigList
7 from Components.Label import Label
10 from xml.dom import EMPTY_NAMESPACE
11 from skin import elementsWithTag
13 from Tools import XMLTools
17 # first we search in the current path
18 setupfile = file('data/setup.xml', 'r')
20 # if not found in the current path, we use the global datadir-path
21 setupfile = file('/usr/share/enigma2/setup.xml', 'r')
22 setupdom = xml.dom.minidom.parseString(setupfile.read())
25 def getValbyAttr(x, attr):
26 for p in range(x.attributes.length):
27 a = x.attributes.item(p)
37 def addItems(self, list, childNode):
39 if x.nodeType != xml.dom.minidom.Element.nodeType:
41 elif x.tagName == 'item':
42 ItemText = getValbyAttr(x, "text")
43 b = eval(XMLTools.mergeText(x.childNodes));
44 print "item " + ItemText + " " + b.configPath
48 item = b.controlType(b)
50 # the first b is the item itself, ignored by the configList.
51 # the second one is converted to string.
52 list.append( (ItemText, item) )
55 self["config"].handleKey(0)
57 self["config"].handleKey(1)
59 self["config"].handleKey(2)
62 print "save requested"
63 for x in self["config"]:
64 selection = self["config"].getCurrent()
67 def __init__(self, session, setup):
68 Screen.__init__(self, session)
70 print "request setup for " + setup
72 xmldata = setupdom.childNodes[0]
74 entries = xmldata.childNodes
78 for x in entries: #walk through the actual nodelist
79 if x.nodeType != xml.dom.minidom.Element.nodeType:
81 elif x.tagName == 'setup':
82 ItemText = getValbyAttr(x, "key")
85 self.addItems(list, x.childNodes);
87 #check for list.entries > 0 else self.close
89 self["config"] = ConfigList(list)
91 self["ok"] = Label("OK")
92 self["cancel"] = Label("Cancel")
94 self["actions"] = ActionMap(["SetupActions"],
99 "right": self.keyRight,