Hallo
@Reichi
Bei Verwendung von ConfigNumber.addNotifier kommt es im AutotimerEditor (ConfigListScreen) zum Crash in der config.py,
wenn man bei ausgewählten/markierten ConfigNumber-Wert auf die Mute-Taste oder Delete rechts/links drückt.
Schritte zum Reproduzieren:
1. AT-Plugin öffnen
2. einen Autotimer öffnen/bearbeiten
3. mit Pfeil runter bis der Wert für "x mal aufnehmen" ausgewählt ist
4. Mute-Taste oder Löschen links/rechts drücken
5. GS mit nachfolgendem Inhalt:
Traceback (most recent call last):
File "/usr/lib/enigma2/python/enigma.py", line 7798, in __call__
return ret(*args, **kwargs)
File "/usr/lib/enigma2/python/Components/ActionMap.py", line 83, in action
return ActionMap.action(self, contexts, action)
File "/usr/lib/enigma2/python/Components/ActionMap.py", line 63, in action
res = self.actions[action]()
File "/usr/lib/enigma2/python/Components/ConfigList.py", line 257, in keyDelete
self["config"].handleKey(KEY_DELETE)
File "/usr/lib/enigma2/python/Components/ConfigList.py", line 37, in handleKey
selection[1].handleKey(key)
File "/usr/lib/enigma2/python/Components/config.py", line 1200, in handleKey
ConfigText.handleKey(self, key)
File "/usr/lib/enigma2/python/Components/config.py", line 986, in handleKey
self.changed()
File "/usr/lib/enigma2/python/Components/config.py", line 105, in changed
strval = str(self.value)
File "/usr/lib/enigma2/python/Components/config.py", line 1159, in getValue
return int(self.text)
ValueError: invalid literal for int() with base 10: ''
Alles anzeigen
Da müsste vor der Zeile 1159 in der config.py wohl irgendwie noch der Default-Wert gesetzt werden, bevor er mit ' ' weiterarbeiten will.
Folgende Änderung der config.py (zusätzliche Zeile 1159 + 1160) löst das Problem, nur weiß ich nicht, ob das die beste Lösung ist
class ConfigNumber(ConfigText):
def __init__(self, default = 0):
ConfigText.__init__(self, str(default), fixed_size = False)
def getValue(self):
if self.text == "":
self.text = self.default
return int(self.text)
Wenn ich das addNotifier für diesen Config-Eintrag deaktiviere, gibt es beim Löschen mit der Mute-Taste auch ohne Änderung der config.py keinen Crash und der Wert wird brav auf "0" gesetzt.
Der Crash passiert nur in Verbindung mit dem addNotifier.
Hier wird der Configeintrag für ConfigNumber im AT festgelegt:
https://github.com/opendreambo…c/AutoTimerEditor.py#L309
und hier ist das addNotifier dazu:
https://github.com/opendreambo…c/AutoTimerEditor.py#L449
Der Code gelangt dann beim Löschen mit der Mute-Taste gar nicht mehr in die Callbackfunction (self.reloadList), weil es vorher crashed.
Hab jetzt im AT keine Möglichkeit gefunden, das abzufangen.
Ist da evtl. der Code im AT doch etwas fehlerhaft oder muss das tatsächlich in etwa wie oben in der config.py abgefangen werden?
Danke schon mal.