blob: 4e286321731e979476b137d64bf2f984becf72e9 [file] [log] [blame]
# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
# See LICENSE for details.
import warnings
warnings.warn(
"Create your own event dispatching mechanism, "
"twisted.python.dispatch will soon be no more.",
DeprecationWarning, 2)
class EventDispatcher:
"""
A global event dispatcher for events.
I'm used for any events that need to span disparate objects in the client.
I should only be used when one object needs to signal an object that it's
not got a direct reference to (unless you really want to pass it through
here, in which case I won't mind).
I'm mainly useful for complex GUIs.
"""
def __init__(self, prefix="event_"):
self.prefix = prefix
self.callbacks = {}
def registerHandler(self, name, meth):
self.callbacks.setdefault(name, []).append(meth)
def autoRegister(self, obj):
from twisted.python import reflect
d = {}
reflect.accumulateMethods(obj, d, self.prefix)
for k,v in d.items():
self.registerHandler(k, v)
def publishEvent(self, name, *args, **kwargs):
for cb in self.callbacks[name]:
cb(*args, **kwargs)