diff options
| author | Fraxinas <andreas.frisch@multimedia-labs.de> | 2008-12-03 17:53:56 +0100 |
|---|---|---|
| committer | Fraxinas <andreas.frisch@multimedia-labs.de> | 2008-12-03 17:53:56 +0100 |
| commit | c2bbed774d6e5c51b4af23a60a95aca74aa5d4e9 (patch) | |
| tree | 9e2a42a0d25b38c01c7149104b96d2dacb235bc5 | |
| parent | 4dda70dcac6996c8b0a2016c49d6cfbab7128fee (diff) | |
| parent | 2e5c13aebb389a6d74e4130658ccee6a863d01f6 (diff) | |
| download | enigma2-c2bbed774d6e5c51b4af23a60a95aca74aa5d4e9.tar.gz enigma2-c2bbed774d6e5c51b4af23a60a95aca74aa5d4e9.zip | |
Merge branch 'master' of fraxinas@git.opendreambox.org:/git/enigma2
| -rw-r--r-- | RecordTimer.py | 125 | ||||
| -rw-r--r-- | data/menu.xml | 1 | ||||
| -rw-r--r-- | lib/dvb/frontend.cpp | 2 | ||||
| -rwxr-xr-x | lib/python/Components/config.py | 28 | ||||
| -rw-r--r-- | lib/python/Screens/InfoBarGenerics.py | 6 | ||||
| -rw-r--r-- | lib/python/Screens/Menu.py | 71 | ||||
| -rw-r--r-- | lib/python/Screens/Setup.py | 43 | ||||
| -rw-r--r-- | lib/python/Screens/TimerEdit.py | 6 | ||||
| -rw-r--r-- | lib/python/Screens/TimerEntry.py | 33 | ||||
| -rw-r--r-- | mytest.py | 26 | ||||
| -rw-r--r-- | tests/test_timer.py | 6 |
11 files changed, 194 insertions, 153 deletions
diff --git a/RecordTimer.py b/RecordTimer.py index cac475d6..8449a2d2 100644 --- a/RecordTimer.py +++ b/RecordTimer.py @@ -4,7 +4,7 @@ from Tools import Directories, Notifications from Components.config import config import timer -import xml.dom.minidom +import xml.etree.cElementTree from enigma import eEPGCache, getBestPlayableServiceReference, \ eServiceReference, iRecordableService, quitMainloop @@ -17,7 +17,7 @@ import Screens.Standby from time import localtime -from Tools.XMLTools import elementsWithTag, mergeText, stringToXML +from Tools.XMLTools import stringToXML from ServiceReference import ServiceReference # ok, for descriptions etc we have: @@ -354,42 +354,45 @@ class RecordTimerEntry(timer.TimerEntry, object): record_service = property(lambda self: self.__record_service, setRecordService) def createTimer(xml): - begin = int(xml.getAttribute("begin")) - end = int(xml.getAttribute("end")) - serviceref = ServiceReference(xml.getAttribute("serviceref").encode("utf-8")) - description = xml.getAttribute("description").encode("utf-8") - repeated = xml.getAttribute("repeated").encode("utf-8") - disabled = long(xml.getAttribute("disabled") or "0") - justplay = long(xml.getAttribute("justplay") or "0") - afterevent = str(xml.getAttribute("afterevent") or "nothing") + begin = int(xml.get("begin")) + end = int(xml.get("end")) + serviceref = ServiceReference(xml.get("serviceref").encode("utf-8")) + description = xml.get("description").encode("utf-8") + repeated = xml.get("repeated").encode("utf-8") + disabled = long(xml.get("disabled") or "0") + justplay = long(xml.get("justplay") or "0") + afterevent = str(xml.get("afterevent") or "nothing") afterevent = { "nothing": AFTEREVENT.NONE, "standby": AFTEREVENT.STANDBY, "deepstandby": AFTEREVENT.DEEPSTANDBY, "auto": AFTEREVENT.AUTO }[afterevent] - if xml.hasAttribute("eit") and xml.getAttribute("eit") != "None": - eit = long(xml.getAttribute("eit")) + eit = xml.get("eit") + if eit and eit != "None": + eit = long(eit); else: eit = None - if xml.hasAttribute("location") and xml.getAttribute("location") != "None": - location = xml.getAttribute("location").encode("utf-8") + location = xml.get("location") + if location and location != "None": + location = location.encode("utf-8") else: location = None - if xml.hasAttribute("tags") and xml.getAttribute("tags"): - tags = xml.getAttribute("tags").encode("utf-8").split(' ') + tags = xml.get("tags") + if tags and tags != "None": + tags = tags.encode("utf-8").split(' ') else: tags = None - name = xml.getAttribute("name").encode("utf-8") - #filename = xml.getAttribute("filename").encode("utf-8") + name = xml.get("name").encode("utf-8") + #filename = xml.get("filename").encode("utf-8") entry = RecordTimerEntry(serviceref, begin, end, name, description, eit, disabled, justplay, afterevent, dirname = location, tags = tags) entry.repeated = int(repeated) - for l in elementsWithTag(xml.childNodes, "log"): - time = int(l.getAttribute("time")) - code = int(l.getAttribute("code")) - msg = mergeText(l.childNodes).strip().encode("utf-8") + for l in xml.findall("log"): + time = int(l.get("time")) + code = int(l.get("code")) + msg = l.text.strip().encode("utf-8") entry.log_entries.append((time, code, msg)) return entry @@ -415,8 +418,8 @@ class RecordTimer(timer.Timer): def loadTimer(self): # TODO: PATH! try: - doc = xml.dom.minidom.parse(self.Filename) - except xml.parsers.expat.ExpatError: + doc = xml.etree.cElementTree.parse(self.Filename) + except SyntaxError: from Tools.Notifications import AddPopup from Screens.MessageBox import MessageBox @@ -426,15 +429,18 @@ class RecordTimer(timer.Timer): try: import os os.rename(self.Filename, self.Filename + "_old") - except IOError: + except (IOError, OSError): print "renaming broken timer failed" return + except IOError: + print "timers.xml not found!" + return - root = doc.childNodes[0] + root = doc.getroot() # put out a message when at least one timer overlaps checkit = True - for timer in elementsWithTag(root.childNodes, "timer"): + for timer in root.findall("timer"): newTimer = createTimer(timer) if (self.record(newTimer, True, True) is not None) and (checkit == True): from Tools.Notifications import AddPopup @@ -443,45 +449,44 @@ class RecordTimer(timer.Timer): checkit = False # at moment it is enough when the message is displayed one time def saveTimer(self): - #doc = xml.dom.minidom.Document() - #root_element = doc.createElement('timers') - #doc.appendChild(root_element) - #root_element.appendChild(doc.createTextNode("\n")) - + #root_element = xml.etree.cElementTree.Element('timers') + #root_element.text = "\n" + #for timer in self.timer_list + self.processed_timers: # some timers (instant records) don't want to be saved. # skip them #if timer.dontSave: #continue - #t = doc.createTextNode("\t") - #root_element.appendChild(t) - #t = doc.createElement('timer') - #t.setAttribute("begin", str(int(timer.begin))) - #t.setAttribute("end", str(int(timer.end))) - #t.setAttribute("serviceref", str(timer.service_ref)) - #t.setAttribute("repeated", str(timer.repeated)) - #t.setAttribute("name", timer.name) - #t.setAttribute("description", timer.description) - #t.setAttribute("eit", str(timer.eit)) - + #t = xml.etree.cElementTree.SubElement(root_element, 'timers') + #t.set("begin", str(int(timer.begin))) + #t.set("end", str(int(timer.end))) + #t.set("serviceref", str(timer.service_ref)) + #t.set("repeated", str(timer.repeated)) + #t.set("name", timer.name) + #t.set("description", timer.description) + #t.set("afterevent", str({ + # AFTEREVENT.NONE: "nothing", + # AFTEREVENT.STANDBY: "standby", + # AFTEREVENT.DEEPSTANDBY: "deepstandby", + # AFTEREVENT.AUTO: "auto"})) + #if timer.eit is not None: + # t.set("eit", str(timer.eit)) + #if timer.dirname is not None: + # t.set("location", str(timer.dirname)) + #t.set("disabled", str(int(timer.disabled))) + #t.set("justplay", str(int(timer.justplay))) + #t.text = "\n" + #t.tail = "\n" + #for time, code, msg in timer.log_entries: - #t.appendChild(doc.createTextNode("\t\t")) - #l = doc.createElement('log') - #l.setAttribute("time", str(time)) - #l.setAttribute("code", str(code)) - #l.appendChild(doc.createTextNode(msg)) - #t.appendChild(l) - #t.appendChild(doc.createTextNode("\n")) - - #root_element.appendChild(t) - #t = doc.createTextNode("\n") - #root_element.appendChild(t) - - - #file = open(self.Filename, "w") - #doc.writexml(file) - #file.write("\n") - #file.close() + #l = xml.etree.cElementTree.SubElement(t, 'log') + #l.set("time", str(time)) + #l.set("code", str(code)) + #l.text = str(msg) + #l.tail = "\n" + + #doc = xml.etree.cElementTree.ElementTree(root_element) + #doc.write(self.Filename) list = [] diff --git a/data/menu.xml b/data/menu.xml index 369b20e0..6bf5e3f2 100644 --- a/data/menu.xml +++ b/data/menu.xml @@ -103,6 +103,7 @@ self.session.openWithCallback(msgClosed, MessageBox, _("When you do a factory re <menu text="Standby / Restart" entryID="standby_restart_list"> <id val="shutdown" /> <!--<item text="Standby"><code>quitMainloop(0)</code></item>--> + <item text="Sleep Timer" entryID="sleep"><screen module="SleepTimerEdit" screen="SleepTimerEdit" /></item> <item text="Standby" entryID="standby"><screen module="Standby" screen="Standby"/></item> <item text="Restart" entryID="restart"><screen module="Standby" screen="TryQuitMainloop">2</screen></item> <item level="2" text="Restart GUI" entryID="restart_enigma"><screen module="Standby" screen="TryQuitMainloop">3</screen></item> diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 55be6f9c..b25794f8 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -857,7 +857,7 @@ int eDVBFrontend::readFrontendData(int type) { snr = 0xFF - (snr & 0xFF); if (snr != 0) - return (int)(-100 * (log10(snr) - log10(255))); + return 10 * (int)(-100 * (log10(snr) - log10(255))); return 0; } /* else diff --git a/lib/python/Components/config.py b/lib/python/Components/config.py index 4d57bbb9..d79337ba 100755 --- a/lib/python/Components/config.py +++ b/lib/python/Components/config.py @@ -604,6 +604,34 @@ class ConfigClock(ConfigSequence): t = time.localtime(default) ConfigSequence.__init__(self, seperator = ":", limits = [(0,23),(0,59)], default = [t.tm_hour, t.tm_min]) + def increment(self): + # Check if Minutes maxed out + if self._value[1] == 59: + # Check if Hours not maxed out + if self._value[0] < 23: + # Increment Hour, reset Minutes to 0 + self._value[0] += 1 + self._value[1] = 0 + else: + # Increment Minutes + self._value[1] += 1 + # Trigger change + self.changed() + + def decrement(self): + # Check if Minutes is minimum + if self._value[1] == 0: + # Check if Hour is greater than 0 + if self._value[0] > 0: + # Decrement Hour, set Minutes to 59 + self._value[0] -= 1 + self._value[1] = 59 + else: + # Decrement Minutes + self._value[1] -= 1 + # Trigger change + self.changed() + class ConfigInteger(ConfigSequence): def __init__(self, default, limits = (0, 9999999999)): ConfigSequence.__init__(self, seperator = ":", limits = [limits], default = default) diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index b923340c..af29ed4e 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -348,14 +348,14 @@ class InfoBarMenu: def mainMenu(self): print "loading mainmenu XML..." - menu = mdom.childNodes[0] - assert menu.tagName == "menu", "root element in menu must be 'menu'!" + menu = mdom.getroot() + assert menu.tag == "menu", "root element in menu must be 'menu'!" self.session.infobar = self # so we can access the currently active infobar from screens opened from within the mainmenu # at the moment used from the SubserviceSelection - self.session.openWithCallback(self.mainMenuClosed, MainMenu, menu, menu.childNodes) + self.session.openWithCallback(self.mainMenuClosed, MainMenu, menu) def mainMenuClosed(self, *val): self.session.infobar = None diff --git a/lib/python/Screens/Menu.py b/lib/python/Screens/Menu.py index 92039b42..93f23dfb 100644 --- a/lib/python/Screens/Menu.py +++ b/lib/python/Screens/Menu.py @@ -9,12 +9,10 @@ from Components.SystemInfo import SystemInfo from Tools.Directories import resolveFilename, SCOPE_SKIN -import xml.dom.minidom +import xml.etree.cElementTree from Screens.Setup import Setup, getSetupTitle -from Tools import XMLTools - # <item text="TV-Mode">self.setModeTV()</item> # <item text="Radio-Mode">self.setModeRadio()</item> # <item text="File-Mode">self.setModeFile()</item> @@ -22,9 +20,7 @@ from Tools import XMLTools # read the menu -menufile = file(resolveFilename(SCOPE_SKIN, 'menu.xml'), 'r') -mdom = xml.dom.minidom.parseString(menufile.read()) -menufile.close() +mdom = xml.etree.cElementTree.parse(resolveFilename(SCOPE_SKIN, 'menu.xml')) class boundFunction: def __init__(self, fnc, *args): @@ -103,17 +99,17 @@ class Menu(Screen): self.session.openWithCallback(self.menuClosed, Setup, dialog) def addMenu(self, destList, node): - requires = node.getAttribute("requires") + requires = node.get("requires") if requires and not SystemInfo.get(requires, False): return - MenuTitle = _(node.getAttribute("text").encode("UTF-8") or "??") - entryID = node.getAttribute("entryID") or "undefined" - weight = node.getAttribute("weight") or 50 - x = node.getAttribute("flushConfigOnClose") + MenuTitle = _(node.get("text", "??").encode("UTF-8")) + entryID = node.get("entryID", "undefined") + weight = node.get("weight", 50) + x = node.get("flushConfigOnClose") if x: - a = boundFunction(self.session.openWithCallback, self.menuClosedWithConfigFlush, Menu, node, node.childNodes) + a = boundFunction(self.session.openWithCallback, self.menuClosedWithConfigFlush, Menu, node) else: - a = boundFunction(self.session.openWithCallback, self.menuClosed, Menu, node, node.childNodes) + a = boundFunction(self.session.openWithCallback, self.menuClosed, Menu, node) #TODO add check if !empty(node.childNodes) destList.append((MenuTitle, a, entryID, weight)) @@ -126,18 +122,16 @@ class Menu(Screen): self.close(True) def addItem(self, destList, node): - requires = node.getAttribute("requires") + requires = node.get("requires") if requires and not SystemInfo.get(requires, False): return - item_text = node.getAttribute("text").encode("UTF-8") - entryID = node.getAttribute("entryID") or "undefined" - weight = node.getAttribute("weight") or 50 - for x in node.childNodes: - if x.nodeType != xml.dom.minidom.Element.nodeType: - continue - elif x.tagName == 'screen': - module = x.getAttribute("module") or None - screen = x.getAttribute("screen") or None + item_text = node.get("text", "").encode("UTF-8") + entryID = node.get("entryID", "undefined") + weight = node.get("weight", 50) + for x in node: + if x.tag == 'screen': + module = x.get("module") + screen = x.get("screen") if screen is None: screen = module @@ -150,16 +144,16 @@ class Menu(Screen): # check for arguments. they will be appended to the # openDialog call - args = XMLTools.mergeText(x.childNodes) + args = x.text or "" screen += ", " + args destList.append((_(item_text or "??"), boundFunction(self.runScreen, (module, screen)), entryID, weight)) return - elif x.tagName == 'code': - destList.append((_(item_text or "??"), boundFunction(self.execText, XMLTools.mergeText(x.childNodes)), entryID, weight)) + elif x.tag == 'code': + destList.append((_(item_text or "??"), boundFunction(self.execText, x.text), entryID, weight)) return - elif x.tagName == 'setup': - id = x.getAttribute("id") + elif x.tag == 'setup': + id = x.get("id") if item_text == "": item_text = _(getSetupTitle(id)) + "..." else: @@ -169,26 +163,23 @@ class Menu(Screen): destList.append((item_text, self.nothing, entryID, weight)) - def __init__(self, session, parent, childNode): + def __init__(self, session, parent): Screen.__init__(self, session) list = [] menuID = None - for x in childNode: #walk through the actual nodelist - if x.nodeType != xml.dom.minidom.Element.nodeType: - continue - elif x.tagName == 'item': - item_level = int(x.getAttribute("level") or "0") - + for x in parent: #walk through the actual nodelist + if x.tag == 'item': + item_level = int(x.get("level", 0)) if item_level <= config.usage.setup_level.index: self.addItem(list, x) count += 1 - elif x.tagName == 'menu': + elif x.tag == 'menu': self.addMenu(list, x) count += 1 - elif x.tagName == "id": - menuID = x.getAttribute("val") + elif x.tag == "id": + menuID = x.get("val") count = 0 if menuID is not None: @@ -237,10 +228,10 @@ class Menu(Screen): "9": self.keyNumberGlobal }) - a = parent.getAttribute("title").encode("UTF-8") or None + a = parent.get("title", "").encode("UTF-8") or None a = a and _(a) if a is None: - a = _(parent.getAttribute("text").encode("UTF-8")) + a = _(parent.get("text", "").encode("UTF-8")) self["title"] = StaticText(a) self.menu_title = a diff --git a/lib/python/Screens/Setup.py b/lib/python/Screens/Setup.py index 3ff0b76e..35918b5b 100644 --- a/lib/python/Screens/Setup.py +++ b/lib/python/Screens/Setup.py @@ -6,8 +6,7 @@ from Components.ConfigList import ConfigListScreen from Components.Label import Label from Components.Pixmap import Pixmap -import xml.dom.minidom -from Tools import XMLTools +import xml.etree.cElementTree # FIXME: use resolveFile! # read the setupmenu @@ -17,7 +16,7 @@ try: except: # if not found in the current path, we use the global datadir-path setupfile = file('/usr/share/enigma2/setup.xml', 'r') -setupdom = xml.dom.minidom.parseString(setupfile.read()) +setupdom = xml.etree.cElementTree.parse(setupfile) setupfile.close() class SetupSummary(Screen): @@ -63,16 +62,12 @@ class Setup(ConfigListScreen, Screen): self["config"].setList(list) def refill(self, list): - xmldata = setupdom.childNodes[0] - entries = xmldata.childNodes - for x in entries: #walk through the actual nodelist - if x.nodeType != xml.dom.minidom.Element.nodeType: + xmldata = setupdom.getroot() + for x in xmldata.findall("setup"): + if x.get("key") != self.setup: continue - elif x.tagName == 'setup': - if x.getAttribute("key") != self.setup: - continue - self.addItems(list, x.childNodes); - self.setup_title = x.getAttribute("title").encode("UTF-8") + self.addItems(list, x); + self.setup_title = x.get("title", "").encode("UTF-8") def __init__(self, session, setup): Screen.__init__(self, session) @@ -118,12 +113,10 @@ class Setup(ConfigListScreen, Screen): def createSummary(self): return SetupSummary - def addItems(self, list, childNode): - for x in childNode: - if x.nodeType != xml.dom.minidom.Element.nodeType: - continue - elif x.tagName == 'item': - item_level = int(x.getAttribute("level") or "0") + def addItems(self, list, parentNode): + for x in parentNode: + if x.tag == 'item': + item_level = int(x.get("level", 0)) if not self.levelChanged in config.usage.setup_level.notifiers: config.usage.setup_level.notifiers.append(self.levelChanged) @@ -132,12 +125,12 @@ class Setup(ConfigListScreen, Screen): if item_level > config.usage.setup_level.index: continue - requires = x.getAttribute("requires") + requires = x.get("requires") if requires and not SystemInfo.get(requires, False): continue; - item_text = _(x.getAttribute("text").encode("UTF-8") or "??") - b = eval(XMLTools.mergeText(x.childNodes)); + item_text = _(x.get("text", "??").encode("UTF-8")) + b = eval(x.text or ""); if b == "": continue #add to configlist @@ -148,8 +141,8 @@ class Setup(ConfigListScreen, Screen): list.append( (item_text, item) ) def getSetupTitle(id): - xmldata = setupdom.childNodes[0].childNodes - for x in XMLTools.elementsWithTag(xmldata, "setup"): - if x.getAttribute("key") == id: - return x.getAttribute("title").encode("UTF-8") + xmldata = setupdom.getroot() + for x in xmldata.findall("setup"): + if x.get("key") == id: + return x.get("title", "").encode("UTF-8") raise "unknown setup id '%s'!" % repr(id) diff --git a/lib/python/Screens/TimerEdit.py b/lib/python/Screens/TimerEdit.py index aae345db..18ab2b79 100644 --- a/lib/python/Screens/TimerEdit.py +++ b/lib/python/Screens/TimerEdit.py @@ -199,9 +199,11 @@ class TimerEditList(Screen): self.updateState() def removeTimerQuestion(self): - if not self["timerlist"].getCurrent(): + cur = self["timerlist"].getCurrent() + if not cur: return - self.session.openWithCallback(self.removeTimer, MessageBox, _("Really delete this timer?")) + + self.session.openWithCallback(self.removeTimer, MessageBox, _("Do you really want to delete %s?") % (cur.name)) def removeTimer(self, result): if not result: diff --git a/lib/python/Screens/TimerEntry.py b/lib/python/Screens/TimerEntry.py index be8b5240..0544eff1 100644 --- a/lib/python/Screens/TimerEntry.py +++ b/lib/python/Screens/TimerEntry.py @@ -32,11 +32,15 @@ class TimerEntry(Screen, ConfigListScreen): self.createConfig() - self["actions"] = NumberActionMap(["SetupActions"], + self["actions"] = NumberActionMap(["SetupActions", "GlobalActions", "PiPSetupActions"], { "ok": self.keySelect, "save": self.keyGo, "cancel": self.keyCancel, + "volumeUp": self.incrementStart, + "volumeDown": self.decrementStart, + "size+": self.incrementEnd, + "size-": self.decrementEnd }, -2) self.list = [] @@ -160,9 +164,14 @@ class TimerEntry(Screen, ConfigListScreen): self.entryDate = getConfigListEntry(_("Date"), self.timerentry_date) if self.timerentry_type.value == "once": self.list.append(self.entryDate) - self.list.append(getConfigListEntry(_("StartTime"), self.timerentry_starttime)) + + self.entryStartTime = getConfigListEntry(_("StartTime"), self.timerentry_starttime) + self.list.append(self.entryStartTime) if self.timerentry_justplay.value != "zap": - self.list.append(getConfigListEntry(_("EndTime"), self.timerentry_endtime)) + self.entryEndTime = getConfigListEntry(_("EndTime"), self.timerentry_endtime) + self.list.append(self.entryEndTime) + else: + self.entryEndTime = None self.channelEntry = getConfigListEntry(_("Channel"), self.timerentry_service) self.list.append(self.channelEntry) @@ -319,6 +328,24 @@ class TimerEntry(Screen, ConfigListScreen): self.saveTimer() self.close((True, self.timer)) + def incrementStart(self): + self.timerentry_starttime.increment() + self["config"].invalidate(self.entryStartTime) + + def decrementStart(self): + self.timerentry_starttime.decrement() + self["config"].invalidate(self.entryStartTime) + + def incrementEnd(self): + if self.entryEndTime is not None: + self.timerentry_endtime.increment() + self["config"].invalidate(self.entryEndTime) + + def decrementEnd(self): + if self.entryEndTime is not None: + self.timerentry_endtime.decrement() + self["config"].invalidate(self.entryEndTime) + def subserviceSelected(self, service): if not service is None: self.timer.service_ref = ServiceReference(service[1]) @@ -321,7 +321,6 @@ class Session: profile("Standby,PowerKey") import Screens.Standby from Screens.Menu import MainMenu, mdom -import xml.dom.minidom from GlobalActions import globalActionMap class PowerKey: @@ -350,21 +349,16 @@ class PowerKey: self.shutdown() elif action == "show_menu": print "Show shutdown Menu" - menu = mdom.childNodes[0] - for x in menu.childNodes: - if x.nodeType != xml.dom.minidom.Element.nodeType: - continue - elif x.tagName == 'menu': - for y in x.childNodes: - if y.nodeType != xml.dom.minidom.Element.nodeType: - continue - elif y.tagName == 'id': - id = y.getAttribute("val") - if id and id == "shutdown": - self.session.infobar = self - menu_screen = self.session.openWithCallback(self.MenuClosed, MainMenu, x, x.childNodes) - menu_screen.setTitle(_("Standby / Restart")) - return + root = mdom.getroot() + for x in root.findall("menu"): + y = x.find("id") + if y is not None: + id = y.get("val") + if id and id == "shutdown": + self.session.infobar = self + menu_screen = self.session.openWithCallback(self.MenuClosed, MainMenu, x) + menu_screen.setTitle(_("Standby / Restart")) + return def powerdown(self): self.standbyblocked = 0 diff --git a/tests/test_timer.py b/tests/test_timer.py index 565a838b..ea8b0bdb 100644 --- a/tests/test_timer.py +++ b/tests/test_timer.py @@ -24,10 +24,10 @@ def test_timer(repeat = 0, timer_start = 3600, timer_length = 1000, sim_length = # generate a timer to test - import xml.dom.minidom + import xml.etree.cElementTree import RecordTimer - timer = RecordTimer.createTimer(xml.dom.minidom.parseString( + timer = RecordTimer.createTimer(xml.etree.cElementTree.fromstring( """ <timer begin="%d" @@ -41,7 +41,7 @@ def test_timer(repeat = 0, timer_start = 3600, timer_length = 1000, sim_length = disabled="0" justplay="0"> </timer>""" % (at + timer_start, at + timer_start + timer_length, repeat) - ).childNodes[0]) + )) t.record(timer) |
