add destroy() for Components to fix bug #52
[enigma2.git] / lib / python / Components / ActionMap.py
index 046a92d98ee2cf88b68b041e0e5e8dec9f8bf123..ee3d31db615d0da035f11b821480d8616f3810bb 100644 (file)
@@ -6,15 +6,40 @@ class ActionMap:
                self.contexts = contexts
                self.prio = prio
                self.p = eActionMapPtr()
                self.contexts = contexts
                self.prio = prio
                self.p = eActionMapPtr()
+               self.bound = False
+               self.exec_active = False
+               self.enabled = True
                eActionMap.getInstance(self.p)
                eActionMap.getInstance(self.p)
+       
+       def setEnabled(self, enabled):
+               self.enabled = enabled
+               self.checkBind()
+
+       def doBind(self):
+               if not self.bound:
+                       for ctx in self.contexts:
+                               self.p.bindAction(ctx, self.prio, self.action)
+                       self.bound = True
+
+       def doUnbind(self):
+               if self.bound:
+                       for ctx in self.contexts:
+                               self.p.unbindAction(ctx, self.action)
+                       self.bound = False
+
+       def checkBind(self):
+               if self.exec_active and self.enabled:
+                       self.doBind()
+               else:
+                       self.doUnbind()
 
        def execBegin(self):
 
        def execBegin(self):
-               for ctx in self.contexts:
-                       self.p.bindAction(ctx, self.prio, self.action)
+               self.exec_active = True
+               self.checkBind()
 
        def execEnd(self):
 
        def execEnd(self):
-               for ctx in self.contexts:
-                       self.p.unbindAction(ctx, self.action)
+               self.exec_active = False
+               self.checkBind()
 
        def action(self, context, action):
                print " ".join(("action -> ", context, action))
 
        def action(self, context, action):
                print " ".join(("action -> ", context, action))
@@ -25,6 +50,9 @@ class ActionMap:
                        print "unknown action %s/%s! typo in keymap?" % (context, action)
                        return 0
 
                        print "unknown action %s/%s! typo in keymap?" % (context, action)
                        return 0
 
+       def destroy(self):
+               pass
+
 class NumberActionMap(ActionMap):
        def action(self, contexts, action):
                numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
 class NumberActionMap(ActionMap):
        def action(self, contexts, action):
                numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]