29
29
def __init__(self):
30
30
self.signal_handler_ids = {}
32
def connect(self, object, signal, id, callback, *args):
32
def connect(self, object, signal, sid, callback, *args):
33
33
"""Connect a signal.
35
35
_ `object` is the object which defines the signal.
44
44
unique identifier, this signal will first be disconnected.
50
if id in self.signal_handler_ids:
51
old_object, handler_id = self.signal_handler_ids[id]
52
#print "Disconnecting %s" % handler_id
50
if sid in self.signal_handler_ids:
51
old_object, handler_id = self.signal_handler_ids[sid]
53
52
old_object.disconnect(handler_id)
54
del self.signal_handler_ids[id]
53
del self.signal_handler_ids[sid]
56
55
handler_id = object.connect(signal, callback, *args)
57
#print "Connected %s to signal %s " % (handler_id, signal)
58
56
self.signal_handler_ids[id] = (object, handler_id)
60
def disconnect(self, id):
58
def disconnect(self, sid):
61
59
"""Disconnect the signal with the specified unique identifier.
63
61
If there is no such signal, this returns without having any effect.
66
64
if id in self.signal_handler_ids:
67
old_object, handler_id = self.signal_handler_ids.pop(id)
65
old_object, handler_id = self.signal_handler_ids.pop(sid)
68
66
old_object.disconnect(handler_id)
70
68
def disconnectAll(self):
81
79
Disconnects all signal in the group connect on the given object
84
objids = [id for id in self.signal_handler_ids.keys() if self.signal_handler_ids[id][0] == obj]
82
objids = [sid for sid in self.signal_handler_ids.keys() if self.signal_handler_ids[sid][0] == obj]
86
84
old_object, handler_id = self.signal_handler_ids.pop(id)
87
85
old_object.disconnect(handler_id)