Skip to content

Instantly share code, notes, and snippets.

@MorganBorman
Created October 18, 2012 22:28
Show Gist options
  • Save MorganBorman/3915154 to your computer and use it in GitHub Desktop.
Save MorganBorman/3915154 to your computer and use it in GitHub Desktop.
simple event system
event_handlers = {}
def registerEventHandler(event_name, handler):
if not event_name in event_handlers.keys():
event_handlers[event_name] = []
event_handlers[event_name].append(handler)
class eventHandler(object):
'''Decorator which registers a function as an event handler.'''
def __init__(self, name):
self.name = name
def __call__(self, f):
self.__doc__ = f.__doc__
self.__name__ = f.__name__
registerEventHandler(self.name, f)
return f
def triggerEvent(event_name, *args, **kwargs):
if event_name in event_handlers.keys():
for handler in event_handlers[event_name]:
handler(*args, **kwargs)
@eventHandler("myeventname")
def myEventHandler(my_arg1, my_arg2):
print "got myeventname1", my_arg1, my_arg2
triggerEvent("myeventname", "my arg 1", "my arg 2")
@eventHandler("myeventname")
def myEventHandler(my_arg1, my_arg2):
print "got myeventname2", my_arg1, my_arg2
triggerEvent("myeventname", "my arg 3", "my arg 4")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment