OLD | NEW |
| (Empty) |
1 # Copyright (c) 2001-2004 Twisted Matrix Laboratories. | |
2 # See LICENSE for details. | |
3 | |
4 import warnings | |
5 warnings.warn( | |
6 "Create your own event dispatching mechanism, " | |
7 "twisted.python.dispatch will soon be no more.", | |
8 DeprecationWarning, 2) | |
9 | |
10 | |
11 class EventDispatcher: | |
12 """ | |
13 A global event dispatcher for events. | |
14 I'm used for any events that need to span disparate objects in the client. | |
15 | |
16 I should only be used when one object needs to signal an object that it's | |
17 not got a direct reference to (unless you really want to pass it through | |
18 here, in which case I won't mind). | |
19 | |
20 I'm mainly useful for complex GUIs. | |
21 """ | |
22 | |
23 def __init__(self, prefix="event_"): | |
24 self.prefix = prefix | |
25 self.callbacks = {} | |
26 | |
27 | |
28 def registerHandler(self, name, meth): | |
29 self.callbacks.setdefault(name, []).append(meth) | |
30 | |
31 | |
32 def autoRegister(self, obj): | |
33 from twisted.python import reflect | |
34 d = {} | |
35 reflect.accumulateMethods(obj, d, self.prefix) | |
36 for k,v in d.items(): | |
37 self.registerHandler(k, v) | |
38 | |
39 | |
40 def publishEvent(self, name, *args, **kwargs): | |
41 for cb in self.callbacks[name]: | |
42 cb(*args, **kwargs) | |
OLD | NEW |