Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. #An event listener which registers with a Dispatcher which will assign it events of
  2. #a appropriate type to handle
  3. class Listener(object):
  4. def __init__(self, t):
  5. self.type = t
  6. self.registered = False
  7.  
  8. def register(self, dispatcher):
  9. self.registered = True
  10. dispatcher.register_listener(self)
  11.  
  12. def can_handle(self, event):
  13. if event.type == self.type:
  14. return True
  15. else:
  16. return False
  17.  
  18. def handle_event(self, event):
  19. event.handle()
  20.  
  21. #An event dispatcher which will be passed events and find a listener to handle the event
  22. class Dispatcher(object):
  23. def __init__(self):
  24. self.listeners = []
  25. self.numListeners = 0
  26.  
  27. def get_numListeners():
  28. return self.numListeners
  29.  
  30. def register_listener(self, listener):
  31. self.listeners.append(listener)
  32. numListeners += 1
  33.  
  34. def dispatch_event(self, event):
  35. if get_numListeners == 0:
  36. print "Error, no listeners registered."
  37. else:
  38. for list in self.listeners:
  39. if list.can_handle(event):
  40. list.handle_event(event)
  41.  
  42. print "No listeners of event type are registered."
  43.  
  44.  
  45. #An event object which will do a thing
  46. class Event(object):
  47. def __init__(self, t):
  48. self.type = t
  49. handled = False
  50. def handle():
  51. handled = True
  52.  
  53. #Script which can be run to test out functionality for the event system
  54. if __name__ == "__main__":
  55.  
  56. #New listener
  57. listener = Listener(1)
  58. dispatcher = Dispatcher()
  59.  
  60. #Registration
  61. listener.register(dispatcher)
  62.  
  63. #Dispatch
  64. event = Event(1)
  65. dispatcher.dispatch_event(event)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement