X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fpython%2FComponents%2FActionMap.py;h=d2e908e610fe1bc2a0e805db182d404b0c412206;hb=92456d9542585d58e011fa4f0b501de3ef9c1819;hp=046a92d98ee2cf88b68b041e0e5e8dec9f8bf123;hpb=bf7e40884d7add91e219e9e70e83988ae7752bd8;p=vuplus_dvbapp diff --git a/lib/python/Components/ActionMap.py b/lib/python/Components/ActionMap.py index 046a92d..d2e908e 100644 --- a/lib/python/Components/ActionMap.py +++ b/lib/python/Components/ActionMap.py @@ -6,30 +6,62 @@ class ActionMap: self.contexts = contexts self.prio = prio self.p = eActionMapPtr() + self.bound = False + self.exec_active = False + self.enabled = True 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): - for ctx in self.contexts: - self.p.bindAction(ctx, self.prio, self.action) + self.exec_active = True + self.checkBind() 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)) if self.actions.has_key(action): - self.actions[action]() + res = self.actions[action]() + if res is not None: + return res return 1 else: 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"] if (action in numbers and self.actions.has_key(action)): - self.actions[action](int(action)) + res = self.actions[action](int(action)) + if res is not None: + return res return 1 else: return ActionMap.action(self, contexts, action)