1 from Screen import Screen
2 from Components.ActionMap import NumberActionMap
3 from Components.config import config #global config instance
4 from Components.config import configSelection
5 from Components.ConfigList import ConfigList
6 from Components.Label import Label
7 from Components.Pixmap import Pixmap
10 from xml.dom import EMPTY_NAMESPACE
11 from skin import elementsWithTag
13 from Tools import XMLTools
15 # FIXME: use resolveFile!
18 # first we search in the current path
19 setupfile = file('data/setup.xml', 'r')
21 # if not found in the current path, we use the global datadir-path
22 setupfile = file('/usr/share/enigma2/setup.xml', 'r')
23 setupdom = xml.dom.minidom.parseString(setupfile.read())
26 class SetupSummary(Screen):
28 <screen position="0,0" size="132,64">
29 <widget name="SetupTitle" position="0,0" size="132,16" font="Regular;12" />
30 <widget name="SetupEntry" position="0,16" size="132,32" font="Regular;12" />
31 <widget name="SetupValue" position="0,48" size="132,16" font="Regular;12" />
34 def __init__(self, session, parent):
35 Screen.__init__(self, session)
36 self["SetupTitle"] = Label(_(parent.setup_title))
37 self["SetupEntry"] = Label("")
38 self["SetupValue"] = Label("")
40 self.onShow.append(self.addWatcher)
41 self.onHide.append(self.removeWatcher)
44 self.parent.onChangedEntry.append(self.selectionChanged)
45 self.parent["config"].onSelectionChanged.append(self.selectionChanged)
46 self.selectionChanged()
48 def removeWatcher(self):
49 self.parent.onChangedEntry.remove(self.selectionChanged)
50 self.parent["config"].onSelectionChanged.remove(self.selectionChanged)
52 def selectionChanged(self):
53 self["SetupEntry"].text = self.parent.getCurrentEntry()
54 self["SetupValue"].text = self.parent.getCurrentValue()
57 def __init__(self, session, setup):
58 Screen.__init__(self, session)
60 xmldata = setupdom.childNodes[0]
62 entries = xmldata.childNodes
64 self.onChangedEntry = [ ]
67 for x in entries: #walk through the actual nodelist
68 if x.nodeType != xml.dom.minidom.Element.nodeType:
70 elif x.tagName == 'setup':
71 if x.getAttribute("key") != setup:
73 self.addItems(list, x.childNodes);
74 myTitle = x.getAttribute("title").encode("UTF-8")
76 #check for list.entries > 0 else self.close
78 self["config"] = ConfigList(list)
80 self.setup_title = myTitle
81 self["title"] = Label(_(self.setup_title))
83 self["oktext"] = Label(_("OK"))
84 self["canceltext"] = Label(_("Cancel"))
86 self["cancel"] = Pixmap()
88 self["actions"] = NumberActionMap(["SetupActions"],
90 "cancel": self.keyCancel,
93 "right": self.keyRight,
95 "1": self.keyNumberGlobal,
96 "2": self.keyNumberGlobal,
97 "3": self.keyNumberGlobal,
98 "4": self.keyNumberGlobal,
99 "5": self.keyNumberGlobal,
100 "6": self.keyNumberGlobal,
101 "7": self.keyNumberGlobal,
102 "8": self.keyNumberGlobal,
103 "9": self.keyNumberGlobal,
104 "0": self.keyNumberGlobal
110 def changedEntry(self):
111 for x in self.onChangedEntry:
114 def getCurrentEntry(self):
115 return self["config"].getCurrent()[0]
117 def getCurrentValue(self):
118 return str(self["config"].getCurrent()[1].parent.value)
120 def createSummary(self):
123 def addItems(self, list, childNode):
125 if x.nodeType != xml.dom.minidom.Element.nodeType:
127 elif x.tagName == 'item':
128 item_text = _(x.getAttribute("text").encode("UTF-8") or "??")
129 b = eval(XMLTools.mergeText(x.childNodes));
130 print "item " + item_text + " " + b.configPath
134 item = b.controlType(b)
136 # the first b is the item itself, ignored by the configList.
137 # the second one is converted to string.
138 list.append( (item_text, item) )
140 def handleKey(self, key):
141 # ignore keys when not enabled
142 if self["config"].getCurrent()[1].parent.enabled:
143 self["config"].handleKey(config.key[key])
144 print self["config"].getCurrent()
148 self.handleKey("choseElement")
151 self.handleKey("prevElement")
154 self.handleKey("nextElement")
157 print "save requested"
158 for x in self["config"].list:
163 print "cancel requested"
164 for x in self["config"].list:
168 def keyNumberGlobal(self, number):
169 self.handleKey(str(number))
171 def getSetupTitle(id):
172 xmldata = setupdom.childNodes[0].childNodes
173 for x in elementsWithTag(xmldata, "setup"):
174 if x.getAttribute("key") == id:
175 return x.getAttribute("title").encode("UTF-8")