Package reflectometry :: Package model1d :: Package profileview :: Module listener

Source Code for Module reflectometry.model1d.profileview.listener

 1  # ================ Generic listener ================= 
 2  # TODO: shouldn't we be using Traits? 
 3   
4 -class Listener:
5 - def __init__(self):
6 self.connection = {}
7
8 - def connect(self,trigger,value,callback):
9 key = (trigger,value) 10 if key in self.connection: 11 self.connection[key].append(callback) 12 else: 13 self.connection[key] = [callback]
14
15 - def disconnect(self,trigger,value,callback):
16 key = (trigger,value) 17 if key in self.connection and callback in self.connection[key]: 18 self.connection[key].remove(callback)
19
20 - def signal(self,trigger,value,**kw):
21 key = (trigger,value) 22 if key in self.connection: 23 for c in self.connection[key]: c(trigger,value,**kw)
24