LÖSUNG: Das DialogMaster- Plugin ist Schuld, das die Methoden der Messagebox- Klasse überschreibt...
ich habe das ganze zwar schon an die enigma2-devel- Mailingliste geschickt, würde mich aber freuen, wenn jemand das mal bei sich reproduzieren könnte (vielleicht bin ich ja auch einfach nur zu blöd)
Bugbeschreibung: Bei der Messagebox vom Typ TYPE_YESNO mit Timeout wird nicht -wie im Code hinterlegt- der default- Wert zurückgegeben, sondern immer False...
Mein Untersuchungen haben ergeben, dass aus irgendeinem Grund nie die timeoutCallback() nach dem Ablauf aufgerufen wird, sondern immer die cancel()
Hier der relevante Code- Abschnitt aus der Messagebox.py:
96
97 def timerTick(self):
98 if self.execing:
99 self.timeout -= 1
100 if self.origTitle is None:
101 self.origTitle = self.instance.getTitle()
102 self.setTitle(self.origTitle + " (" + str(self.timeout) + ")")
103 if self.timeout == 0:
104 self.timer.stop()
105 self.timerRunning = False
106 self.timeoutCallback()
107
108 def timeoutCallback(self):
109 print "Timeout!"
110 self.ok()
111
112 def cancel(self):
113 self.close(False)
Alles anzeigen
Wenn man vor der Zeile 106 eine neue Zeile einfügt mit dem code
und vor der Zeile 113 eine Zeile:
und das ganze dann von einem Plugin aus aufruft (Beispiel aus DemoPlugins/TestPlugin/plugin.py, ergänzt um Timeout)):
47 self.session.openWithCallback(self.mycallback, MessageBox, _("Test-Messagebox?"), timeout=10)
Dann kommt auf der Telnet Konsole folgende Ausgabe nach Ablauf des Timeouts:
...
[Messagebox] before timeoutCallback
[Messagebox] cancel
...
anstatt -wie es im Code steht-:
...
[Messagebox] before timeoutCallback
Timeout!
...
Aufgefallen ist mir das ganze in meinem Kiddytimer- Plugin, das im Falle des Ablaufs des Timeouts immer in den False- Zweig geht, obwohl als Default True angegeben ist.
Aber wie beschrieben ist es reproduzierbar im TestPlugin...
Thanx
Tode
P.S.: Das war definitiv nicht immer so, ich bin ja erst draufgekommen, weil plötzlich mein KiddyTimer nicht mehr so funktioniert, wie ich es gewohnt war...