Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)