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 def getValbyAttr(x, attr):
27 for p in range(x.attributes.length):
28 a = x.attributes.item(p)
36 class SetupSummary(Screen):
38 <screen position="0,0" size="132,64">
39 <widget name="SetupTitle" position="0,0" size="132,16" font="Regular;12" />
40 <widget name="SetupEntry" position="0,16" size="132,32" font="Regular;12" />
41 <widget name="SetupValue" position="0,48" size="132,16" font="Regular;12" />
44 def __init__(self, session, parent):
45 Screen.__init__(self, session)
46 self["SetupTitle"] = Label(_(parent.setup_title))
47 self["SetupEntry"] = Label("")
48 self["SetupValue"] = Label("")
50 self.onShow.append(self.addWatcher)
51 self.onHide.append(self.removeWatcher)
54 self.parent.onChangedEntry.append(self.selectionChanged)
55 self.parent["config"].onSelectionChanged.append(self.selectionChanged)
56 self.selectionChanged()
58 def removeWatcher(self):
59 self.parent.onChangedEntry.remove(self.selectionChanged)
60 self.parent["config"].onSelectionChanged.remove(self.selectionChanged)
62 def selectionChanged(self):
63 self["SetupEntry"].text = self.parent.getCurrentEntry()
64 self["SetupValue"].text = self.parent.getCurrentValue()
67 def addItems(self, list, childNode):
69 if x.nodeType != xml.dom.minidom.Element.nodeType:
71 elif x.tagName == 'item':
72 ItemText = _(getValbyAttr(x, "text"))
73 b = eval(XMLTools.mergeText(x.childNodes));
74 print "item " + ItemText + " " + b.configPath
78 item = b.controlType(b)
80 # the first b is the item itself, ignored by the configList.
81 # the second one is converted to string.
82 list.append( (ItemText, item) )
84 def handleKey(self, key):
85 # ignore keys when not enabled
86 if self["config"].getCurrent()[1].parent.enabled:
87 self["config"].handleKey(config.key[key])
88 print self["config"].getCurrent()
92 self.handleKey("choseElement")
95 self.handleKey("prevElement")
98 self.handleKey("nextElement")
101 print "save requested"
102 for x in self["config"].list:
107 print "cancel requested"
108 for x in self["config"].list:
112 def keyNumberGlobal(self, number):
113 self.handleKey(str(number))
115 def __init__(self, session, setup):
116 Screen.__init__(self, session)
118 xmldata = setupdom.childNodes[0]
120 entries = xmldata.childNodes
122 self.onChangedEntry = [ ]
125 for x in entries: #walk through the actual nodelist
126 if x.nodeType != xml.dom.minidom.Element.nodeType:
128 elif x.tagName == 'setup':
129 ItemText = getValbyAttr(x, "key")
130 if ItemText != setup:
132 self.addItems(list, x.childNodes);
133 myTitle = getValbyAttr(x, "title")
135 #check for list.entries > 0 else self.close
137 self["config"] = ConfigList(list)
139 self.setup_title = myTitle
140 self["title"] = Label(_(self.setup_title))
142 self["oktext"] = Label(_("OK"))
143 self["canceltext"] = Label(_("Cancel"))
144 self["ok"] = Pixmap()
145 self["cancel"] = Pixmap()
147 self["actions"] = NumberActionMap(["SetupActions"],
149 "cancel": self.keyCancel,
151 "left": self.keyLeft,
152 "right": self.keyRight,
153 "save": self.keySave,
154 "1": self.keyNumberGlobal,
155 "2": self.keyNumberGlobal,
156 "3": self.keyNumberGlobal,
157 "4": self.keyNumberGlobal,
158 "5": self.keyNumberGlobal,
159 "6": self.keyNumberGlobal,
160 "7": self.keyNumberGlobal,
161 "8": self.keyNumberGlobal,
162 "9": self.keyNumberGlobal,
163 "0": self.keyNumberGlobal
169 def changedEntry(self):
170 for x in self.onChangedEntry:
173 def getCurrentEntry(self):
174 return self["config"].getCurrent()[0]
176 def getCurrentValue(self):
177 return str(self["config"].getCurrent()[1].parent.value)
179 def createSummary(self):