home *** CD-ROM | disk | FTP | other *** search
Wrap
# Source Generated with Decompyle++ # File: in.pyc (Python 2.6) __docformat__ = 'restructuredtext en' __test__ = { } class NotificationCenter(object): def __init__(self): super(NotificationCenter, self).__init__() self._init_observers() def _init_observers(self): self.registered_types = set() self.registered_senders = set() self.observers = { } def post_notification(self, theType, sender, **kwargs): if theType == None or sender == None: raise Exception('NotificationCenter.post_notification requires type and sender.') sender == None if (theType not in self.registered_types or None not in self.registered_types or sender not in self.registered_senders) and None not in self.registered_senders: return None for o in self._observers_for_notification(theType, sender): o(theType, sender, args = kwargs) def _observers_for_notification(self, theType, sender): keys = ((theType, sender), (theType, None), (None, sender), (None, None)) obs = set() for k in keys: obs.update(self.observers.get(k, set())) return obs def add_observer(self, callback, theType, sender): self.registered_types.add(theType) self.registered_senders.add(sender) self.observers.setdefault((theType, sender), set()).add(callback) def remove_all_observers(self): self._init_observers() sharedCenter = NotificationCenter()