+import pygame
+from StringIO import StringIO
+from logging import getLogger, basicConfig, DEBUG
+import sys
+from events import TIMEOUT, COLOVER, eventNames
+basicConfig(level=DEBUG, stream = sys.stdout)
+console = getLogger('minwii')
+eventLog = getLogger('minwii.events')
+
+hiddenEvents = {pygame.MOUSEMOTION:True,
+ TIMEOUT:True,
+ #COLOVER:True,
+ }
+from event_pprinters import pprinters
+
+class _EventDispatcher :
+ def __init__(self) :
+ self.registry = {}
+
+ def addEventListener(self, eventType, listener) :
+ if self.registry.has_key(eventType) :
+ self.registry[eventType][listener] = True
+ else :
+ self.registry[eventType] = {listener:True}
+
+ def removeEventListener(self, eventType, listener) :
+ try :
+ del self.registry[eventType][listener]
+ except KeyError :
+ console.warn("no listener to remove")
+
+ def dispatchEvents(self) :
+ events = pygame.event.get()
+ for event in events :
+ listeners = self.registry.get(event.type, {})
+ if listeners and not hiddenEvents.has_key(event.type) :
+ eventLog.info(pprinters[event.type](event))
+ for listener in listeners.keys() :
+ listener(event)