Hallo Leutz,
Für das Fritz SmartHome versuche ich einen Slider für das Einstellen der Temperatur eines Thermostaten zu benutzen. Ich habe mir gedacht, nimmste die DialogSlider.xml, da die ein Standardwindow in Kodi ist (sliderdialog, 10145). Leider gibt es einige Probleme. Das Window reagiert weder auf diverse Events, noch lassen sich die Controls vor dem Aufrufen des Window mit show() befüllen. Hier gibt es dann eine Exception (non-existent Control with id xx). Rufe ich vor dem Befüllen show() auf, wird mir zunächst ein 'leeres' Dialogfenster angezeigt, die Controls sind aber da. Allerdings werden beim Setzen der Controls diese nicht aktualisiert - erst beim nächsten Aufruf ist alles in Butter.
Eine Anfrage habe ich bereits im kodi.tv gestellt, dort ist auch der Python-Code zu finden. Ich stelle ihn hier auch nochmal rein. Die DialogSlider.xml stellt Controls mit den folgenden IDs bereit:
EDIT: Hier der Link nach kodi.tv
Alles anzeigen
Die Merkwürdigkeiten:
Any Hints?
Für das Fritz SmartHome versuche ich einen Slider für das Einstellen der Temperatur eines Thermostaten zu benutzen. Ich habe mir gedacht, nimmste die DialogSlider.xml, da die ein Standardwindow in Kodi ist (sliderdialog, 10145). Leider gibt es einige Probleme. Das Window reagiert weder auf diverse Events, noch lassen sich die Controls vor dem Aufrufen des Window mit show() befüllen. Hier gibt es dann eine Exception (non-existent Control with id xx). Rufe ich vor dem Befüllen show() auf, wird mir zunächst ein 'leeres' Dialogfenster angezeigt, die Controls sind aber da. Allerdings werden beim Setzen der Controls diese nicht aktualisiert - erst beim nächsten Aufruf ist alles in Butter.
Eine Anfrage habe ich bereits im kodi.tv gestellt, dort ist auch der Python-Code zu finden. Ich stelle ihn hier auch nochmal rein. Die DialogSlider.xml stellt Controls mit den folgenden IDs bereit:
- id=10: Label (Header)
- id=11: the Slider itself
- id=12: Label, z.B. für numerische Darstellung des Sliderwertes
EDIT: Hier der Link nach kodi.tv
Python-Quellcode
- class Slider():
- device = None
- DialogSlider = xbmcgui.Window(10145)
- def __init__(self):
- self.DialogSlider.show()
- try:
- self._header = self.DialogSlider.getControl(10)
- self._value = self.DialogSlider.getControl(12)
- self._slider = self.DialogSlider.getControl(11)
- except RuntimeError:
- pass
- def update(self):
- self._header.setLabel(device.name)
- self._value.setLabel(device.temp[0])
- self._slider.setPercent(device.temp[1])
- def onClick(self, cid):
- t.writeLog('clicked on ID %s' % (cid)) # t.writeLog is a special func to write in kodi.log
- def onControl(self, cid):
- t.writeLog('clicked on ID %s' % (cid)) # t.writeLog is a special func to write in kodi.log
- def onInit(self):
- t.writeLog('Window Init') # t.writeLog is a special func to write in kodi.log
- def onAction(self, action):
- t.writeLog(action.getId) # t.writeLog is a special func to write in kodi.log
- slider = Slider()
- slider.device = device # thermostat object with formatted properties
- slider.update()
Die Merkwürdigkeiten:
- Controls lassen sich nicht ohne weiteres befüllen
- Eventhandler (onClick, onControl, onAction usw.) werden nicht angesprochen bzw. ausgelöst
Any Hints?