+import pygame
+from StringIO import StringIO
+
+class _EventDispatcher :
+ def __init__(self) :
+ self.registry = {}
+
+ def addEventListener(self, eventType, listener) :
+ if self.registry.has_key(eventType) :
+ self.registry[eventType].append(listener)
+ else :
+ self.registry[eventType] = [listener]
+
+ def dispatchEvents(self) :
+ events = pygame.event.get()
+ for event in events :
+ listeners = self.registry.get(event.type, [])
+ for listener in listeners :
+ listener(event)
+ def reset(self) :
+ self.registry = {}
+
+ def __repr__(self) :
+ out = StringIO()
+ keys = self.registry.keys()
+ keys.sort()
+ for k in keys :
+ print >> out, "event", k
+ for listener in self.registry[k] :
+ print >> out, listener.__name__
+ out.seek(0)
+ return out.read()
+
+
+EventDispatcher = _EventDispatcher()