import types
import pygame
from StringIO import StringIO
+from logging import getLogger, basicConfig, DEBUG
+import sys
+basicConfig(level=DEBUG, stream = sys.stdout)
+console = getLogger('minwii.eventutils')
class _EventDispatcher :
def __init__(self) :
def addEventListener(self, eventType, listener) :
if self.registry.has_key(eventType) :
- self.registry[eventType].append(listener)
+ self.registry[eventType][listener] = True
else :
- self.registry[eventType] = [listener]
+ 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, [])
- for listener in listeners :
+ listeners = self.registry.get(event.type, {})
+ for listener in listeners.keys() :
listener(event)
def reset(self) :
self.registry = {}
keys.sort()
for k in keys :
print >> out, "event", k
- for listener in self.registry[k] :
+ for listener in self.registry[k].keys() :
print >> out, listener.__name__
out.seek(0)
return out.read()