home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1856 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  2.2 KB  |  51 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __docformat__ = 'restructuredtext en'
  5. __test__ = { }
  6.  
  7. class NotificationCenter(object):
  8.     
  9.     def __init__(self):
  10.         super(NotificationCenter, self).__init__()
  11.         self._init_observers()
  12.  
  13.     
  14.     def _init_observers(self):
  15.         self.registered_types = set()
  16.         self.registered_senders = set()
  17.         self.observers = { }
  18.  
  19.     
  20.     def post_notification(self, theType, sender, **kwargs):
  21.         if theType == None or sender == None:
  22.             raise Exception('NotificationCenter.post_notification requires                 type and sender.')
  23.         sender == None
  24.         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:
  25.             return None
  26.         for o in self._observers_for_notification(theType, sender):
  27.             o(theType, sender, args = kwargs)
  28.         
  29.  
  30.     
  31.     def _observers_for_notification(self, theType, sender):
  32.         keys = ((theType, sender), (theType, None), (None, sender), (None, None))
  33.         obs = set()
  34.         for k in keys:
  35.             obs.update(self.observers.get(k, set()))
  36.         
  37.         return obs
  38.  
  39.     
  40.     def add_observer(self, callback, theType, sender):
  41.         self.registered_types.add(theType)
  42.         self.registered_senders.add(sender)
  43.         self.observers.setdefault((theType, sender), set()).add(callback)
  44.  
  45.     
  46.     def remove_all_observers(self):
  47.         self._init_observers()
  48.  
  49.  
  50. sharedCenter = NotificationCenter()
  51.