Merge branch 'bug_271_ac3pcm_delay_servicemp3' into experimental
[enigma2.git] / lib / python / Components / Sources / Boolean.py
index 97b92bc6da9c19f483223d130f28d61950c5fecb..2364f6d97ce2a7448588965357f880cb06e20271 100644 (file)
@@ -10,10 +10,11 @@ from enigma import eTimer
 # screen could use your expression, please put your calculation
 # into a seperate Source, providing a "boolean"-property.
 class Boolean(Source, object):
-       def __init__(self, fixed = False, function = None, poll = 0):
+       def __init__(self, fixed = False, function = None, destroy = None, poll = 0):
                Source.__init__(self)
                self.function = function
                self.fixed = fixed
+               self.post_destroy = destroy
                if poll > 0:
                        self.poll_timer = eTimer()
                        self.poll_timer.callback.append(self.poll)
@@ -28,11 +29,20 @@ class Boolean(Source, object):
                else:
                        return self.fixed
 
-       boolean = property(getBoolean)
+       def setBoolean(self, value):
+               assert self.function is None
+               self.fixed = value
+               self.poll()
+
+       boolean = property(getBoolean, setBoolean)
 
        def poll(self):
                self.changed((self.CHANGED_ALL,))
 
        def destroy(self):
                if self.poll_timer:
-                       self.poll_timer.timeout.get().remove(self.poll)
+                       self.poll_timer.callback.remove(self.poll)
+               if self.post_destroy is not None:
+                       self.fixed = self.post_destroy
+                       self.poll()
+               Source.destroy(self)