Source code for seesaw.event

'''Actor model.'''
# http://www.valuedlessons.com/2008/04/events-in-python.html


[docs]class Event(object): '''Lightweight event system. Example:: my_event_system = Event() my_event_system = my_listener_callback_function my_event_system(my_event_data) ''' def __init__(self): self.handlers = set()
[docs] def handle(self, handler): self.handlers.add(handler) return self
[docs] def unhandle(self, handler): try: self.handlers.remove(handler) except: raise ValueError("Handler is not handling this event, " "so cannot unhandle it.") return self
[docs] def fire(self, *args, **kargs): for handler in self.handlers: handler(*args, **kargs)
[docs] def getHandlerCount(self): return len(self.handlers)
__iadd__ = handle __isub__ = unhandle __call__ = fire __len__ = getHandlerCount