class DescriptiveMonoButtonElement(MonoButtonElement): def __init__(self, *a, **k): super(DescriptiveMonoButtonElement, self).__init__(*a, **k) self._descriptor = None self._last_reported_descriptor = None monobridge = k['monobridge'] if 'monobridge' in k else None if not monobridge is None: self._monobridge = monobridge elif hasattr(self._script, 'notification_to_bridge'): self._monobridge = self._script else: self._monobridge = MonoBridgeProxy() def set_descriptor(self, descriptor): self._descriptor = '.' + str(descriptor) if descriptor else '' def _set_descriptor(self, descriptor): #debug('_set_descriptor:', descriptor) self.set_descriptor(descriptor) def _get_descriptor(self): #debug('_get_descriptor:', '' if self._descriptor is None else str(self._descriptor)) return '' if self._descriptor is None else str(self._descriptor) descriptor = property(_get_descriptor, _set_descriptor) def report_descriptor(self, descriptor = None, force = False): if force or (descriptor != self._last_reported_descriptor): self._monobridge._send(self.name, 'button_function', str(descriptor) + self.descriptor) self._last_reported_descriptor = descriptor def set_light(self, value, *a, **k): try: self._skin[value] except SkinColorMissingError: pass super(MonoButtonElement, self).set_light(value, *a, **k) self.report_descriptor(value) def turn_on(self, force = False): self.force_next_send() if self._on_value in range(0, 128): self.send_value(self._on_value) self.report_descriptor('on') else: try: color = self._skin[self._on_value] color.draw(self) except SkinColorMissingError: #super(MonoButtonElement, self).turn_on() debug('skin color missing', self._on_value) self.send_value(127) self.report_descriptor(self._on_value) def turn_off(self, force = False): self.force_next_send() #debug('turn off:', self._off_value) if self._off_value in range(0, 128): self.send_value(self._off_value) self.report_descriptor('off') else: try: color = self._skin[self._off_value] color.draw(self) except SkinColorMissingError: #super(MonoButtonElement, self).turn_off() debug('skin color missing', self._off_value) self.send_value(0) self.report_descriptor(self._off_value)
class DescriptiveMonoButtonElement(MonoButtonElement): def __init__(self, *a, **k): super(DescriptiveMonoButtonElement, self).__init__(*a, **k) self._descriptor = None self._last_reported_descriptor = None monobridge = k['monobridge'] if 'monobridge' in k else None if not monobridge is None: self._monobridge = monobridge elif hasattr(self._script, 'notification_to_bridge'): self._monobridge = self._script else: self._monobridge = MonoBridgeProxy() def set_descriptor(self, descriptor): self._descriptor = '.' + str(descriptor) if descriptor else '' def _set_descriptor(self, descriptor): #debug('_set_descriptor:', descriptor) self.set_descriptor(descriptor) def _get_descriptor(self): #debug('_get_descriptor:', '' if self._descriptor is None else str(self._descriptor)) return '' if self._descriptor is None else str(self._descriptor) descriptor = property(_get_descriptor, _set_descriptor) def report_descriptor(self, descriptor=None, force=False): if force or (descriptor != self._last_reported_descriptor): self._monobridge._send(self.name, 'button_function', str(descriptor) + self.descriptor) self._last_reported_descriptor = descriptor def set_light(self, value, *a, **k): try: self._skin[value] except SkinColorMissingError: pass super(MonoButtonElement, self).set_light(value, *a, **k) self.report_descriptor(value) def turn_on(self, force=False): self.force_next_send() if self._on_value in range(0, 128): self.send_value(self._on_value) self.report_descriptor('on') else: try: color = self._skin[self._on_value] color.draw(self) except SkinColorMissingError: #super(MonoButtonElement, self).turn_on() debug('skin color missing', self._on_value) self.send_value(127) self.report_descriptor(self._on_value) def turn_off(self, force=False): self.force_next_send() #debug('turn off:', self._off_value) if self._off_value in range(0, 128): self.send_value(self._off_value) self.report_descriptor('off') else: try: color = self._skin[self._off_value] color.draw(self) except SkinColorMissingError: #super(MonoButtonElement, self).turn_off() debug('skin color missing', self._off_value) self.send_value(0) self.report_descriptor(self._off_value)