diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2008-04-06 20:01:20 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2008-04-06 20:01:20 +0000 |
commit | 7f00f95223bd2f7dfca94e8c0379a91f8096043e (patch) | |
tree | a42fe7adfde71dcc4a3ba666b98d8177695517b3 /lib | |
parent | 1fa41048d64006c143c6acfe1562b0946750a25e (diff) | |
download | bitbake-7f00f95223bd2f7dfca94e8c0379a91f8096043e.tar.gz |
event.py: Clean up the event handling code and some legacy funtions
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bb/event.py | 82 |
1 files changed, 22 insertions, 60 deletions
diff --git a/lib/bb/event.py b/lib/bb/event.py index 2eed2685a..c13a0127a 100644 --- a/lib/bb/event.py +++ b/lib/bb/event.py @@ -47,24 +47,23 @@ Registered = 10 AlreadyRegistered = 14 # Internal -_handlers = [] -_handlers_dict = {} +_handlers = {} _ui_handlers = {} _ui_handler_seq = 0 -def tmpHandler(event): - """Default handler for code events""" - return NotHandled - -def defaultTmpHandler(): - tmp = "def tmpHandler(e):\n\t\"\"\"heh\"\"\"\n\treturn NotHandled" - comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event.defaultTmpHandler") - return comp - def fire(event): """Fire off an Event""" - databack = event.data - databack1 = event._data + + for handler in _handlers: + h = _handlers[handler] + if type(h).__name__ == "code": + exec(h) + tmpHandler(event) + else: + h(event) + + # Remove the event data elements for UI handlers - too much data otherwise + # They can request data if they need it event.data = None event._data = None @@ -79,36 +78,28 @@ def fire(event): for h in errors: del _ui_handlers[h] - event.data = databack - event._data = databack1 - - for h in _handlers: - if type(h).__name__ == "code": - exec(h) - if tmpHandler(event) == Handled: - return Handled - else: - if h(event) == Handled: - return Handled - return NotHandled - def register(name, handler): """Register an Event handler""" # already registered - if name in _handlers_dict: + if name in _handlers: return AlreadyRegistered if handler is not None: -# handle string containing python code + # handle string containing python code if type(handler).__name__ == "str": - _registerCode(handler) + tmp = "def tmpHandler(e):\n%s" % handler + comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._registerCode") + _handlers[name] = comp else: - _handlers.append(handler) + _handlers[name] = handler - _handlers_dict[name] = 1 return Registered +def remove(name, handler): + """Remove an Event handler""" + _handlers.pop(name) + def register_UIHhandler(handler): bb.event._ui_handler_seq = bb.event._ui_handler_seq + 1 _ui_handlers[_ui_handler_seq] = handler @@ -119,35 +110,6 @@ def unregister_UIHhandler(handlerNum): del _ui_handlers[handlerNum] return -def _registerCode(handlerStr): - """Register a 'code' Event. - Deprecated interface; call register instead. - - Expects to be passed python code as a string, which will - be passed in turn to compile() and then exec(). Note that - the code will be within a function, so should have had - appropriate tabbing put in place.""" - tmp = "def tmpHandler(e):\n%s" % handlerStr - comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._registerCode") -# prevent duplicate registration - _handlers.append(comp) - -def remove(name, handler): - """Remove an Event handler""" - - _handlers_dict.pop(name) - if type(handler).__name__ == "str": - return _removeCode(handler) - else: - _handlers.remove(handler) - -def _removeCode(handlerStr): - """Remove a 'code' Event handler - Deprecated interface; call remove instead.""" - tmp = "def tmpHandler(e):\n%s" % handlerStr - comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._removeCode") - _handlers.remove(comp) - def getName(e): """Returns the name of a class or class instance""" if getattr(e, "__name__", None) == None: |