Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #An event listener which registers with a Dispatcher which will assign it events of
- #a appropriate type to handle
- class Listener(object):
- def __init__(self, t):
- self.type = t
- self.registered = False
- def register(self, dispatcher):
- self.registered = True
- dispatcher.register_listener(self)
- def can_handle(self, event):
- if event.type == self.type:
- return True
- else:
- return False
- def handle_event(self, event):
- event.handle()
- #An event dispatcher which will be passed events and find a listener to handle the event
- class Dispatcher(object):
- def __init__(self):
- self.listeners = []
- self.numListeners = 0
- def get_numListeners():
- return self.numListeners
- def register_listener(self, listener):
- self.listeners.append(listener)
- numListeners += 1
- def dispatch_event(self, event):
- if get_numListeners == 0:
- print "Error, no listeners registered."
- else:
- for list in self.listeners:
- if list.can_handle(event):
- list.handle_event(event)
- print "No listeners of event type are registered."
- #An event object which will do a thing
- class Event(object):
- def __init__(self, t):
- self.type = t
- handled = False
- def handle():
- handled = True
- #Script which can be run to test out functionality for the event system
- if __name__ == "__main__":
- #New listener
- listener = Listener(1)
- dispatcher = Dispatcher()
- #Registration
- listener.register(dispatcher)
- #Dispatch
- event = Event(1)
- dispatcher.dispatch_event(event)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement