[Modeling-cvs] ProjectModeling/Modeling ObserverCenter.py,1.7,1.8
Status: Abandoned
Brought to you by:
sbigaret
From: <sbi...@us...> - 2004-02-14 18:39:11
|
Update of /cvsroot/modeling/ProjectModeling/Modeling In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2738 Modified Files: ObserverCenter.py Log Message: Conformance to PEP-0263 + internals changed: no more variables or functions whose names are surrounded by dble-underscores (these are normally reserved for python use) Index: ObserverCenter.py =================================================================== RCS file: /cvsroot/modeling/ProjectModeling/Modeling/ObserverCenter.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ObserverCenter.py 14 Mar 2003 11:40:09 -0000 1.7 --- ObserverCenter.py 14 Feb 2004 18:32:34 -0000 1.8 *************** *** 1,2 **** --- 1,3 ---- + # -*- coding: iso-8859-1 -*- #----------------------------------------------------------------------------- # *************** *** 44,50 **** import weakref, sys ! __observers_wdict__ = weakref.WeakKeyDictionary() # dict[object]=[observers] ! __omniscientObservers__ = [] # omniscient observers ! __alreadyNotifiedObjects__ = weakref.WeakKeyDictionary() # keys only observerCenter_lock=RLock() lock=observerCenter_lock.acquire --- 45,51 ---- import weakref, sys ! __observers_wdict = weakref.WeakKeyDictionary() # dict[object]=[observers] ! __omniscientObservers = [] # omniscient observers ! __alreadyNotifiedObjects = weakref.WeakKeyDictionary() # keys only observerCenter_lock=RLock() lock=observerCenter_lock.acquire *************** *** 52,75 **** ! def __observersForObject__(anObject): """ Private method - do not access directly. Equivalent to public method 'observersForObject()' """ ! observers=__observers_wdict__.get(anObject, []) for observer in observers: if observer() is None: observers.remove(observer) #observers=filter(lambda o:o(), observers) ! #__observers_wdict__[anObject]=observers return [obs() for obs in observers] ! def __setObjectObservers__(anObject, observers): """ Private method - do not access directly. """ ! __observers_wdict__[anObject]=map(weakref.ref, observers) ! def __ensureSubsequentChangeWillBeNotifiedForObject__(anObject): """ Private method - do not access directly. --- 53,76 ---- ! def __observersForObject(anObject): """ Private method - do not access directly. Equivalent to public method 'observersForObject()' """ ! observers=__observers_wdict.get(anObject, []) for observer in observers: if observer() is None: observers.remove(observer) #observers=filter(lambda o:o(), observers) ! #__observers_wdict[anObject]=observers return [obs() for obs in observers] ! def __setObjectObservers(anObject, observers): """ Private method - do not access directly. """ ! __observers_wdict[anObject]=map(weakref.ref, observers) ! def __ensureSubsequentChangeWillBeNotifiedForObject(anObject): """ Private method - do not access directly. *************** *** 80,84 **** #import sys #print 'Ooops %s %s %s'%sys.exc_info() ! #print __alreadyNotifiedObjects__.keys() pass --- 81,85 ---- #import sys #print 'Ooops %s %s %s'%sys.exc_info() ! #print __alreadyNotifiedObjects.keys() pass *************** *** 86,94 **** def removeObjectFromAlreadyNotifiedObjects(object): "Private method - do not access directly." ! del __alreadyNotifiedObjects__[object] else: def removeObjectFromAlreadyNotifiedObjects(object): "Private method - do not access directly." ! del __alreadyNotifiedObjects__[weakref.ref(object)] ## Public API --- 87,95 ---- def removeObjectFromAlreadyNotifiedObjects(object): "Private method - do not access directly." ! del __alreadyNotifiedObjects[object] else: def removeObjectFromAlreadyNotifiedObjects(object): "Private method - do not access directly." ! del __alreadyNotifiedObjects[weakref.ref(object)] ## Public API *************** *** 97,106 **** lock() try: ! observers = __observersForObject__(anObject) if anObserver not in observers: observers.append(anObserver) # add it and reset the 'wasNotified' flag ! __setObjectObservers__(anObject, observers) ! __ensureSubsequentChangeWillBeNotifiedForObject__(anObject) finally: unlock() --- 98,107 ---- lock() try: ! observers = __observersForObject(anObject) if anObserver not in observers: observers.append(anObserver) # add it and reset the 'wasNotified' flag ! __setObjectObservers(anObject, observers) ! __ensureSubsequentChangeWillBeNotifiedForObject(anObject) finally: unlock() *************** *** 111,116 **** try: obs=weakref.ref(anObserver) ! if obs not in __omniscientObservers__: ! __omniscientObservers__.append(obs) finally: unlock() --- 112,117 ---- try: obs=weakref.ref(anObserver) ! if obs not in __omniscientObservers: ! __omniscientObservers.append(obs) finally: unlock() *************** *** 118,124 **** def ensureSubsequentChangeWillBeNotifiedForObject(anObject): "See interfaces.ObserverCenter for details" try: ! lock() ! __ensureSubsequentChangeWillBeNotifiedForObject__(anObject) finally: unlock() --- 119,125 ---- def ensureSubsequentChangeWillBeNotifiedForObject(anObject): "See interfaces.ObserverCenter for details" + lock() try: ! __ensureSubsequentChangeWillBeNotifiedForObject(anObject) finally: unlock() *************** *** 128,144 **** lock() try: ! for omni in map(lambda o: o(), __omniscientObservers__): #trace('Notifying omniscient observer %s'%str(omni)) if omni is not None: omni.objectWillChange(anObject) ! global __alreadyNotifiedObjects__ if anObject is None: ! __alreadyNotifiedObjects__.clear() return ! if __alreadyNotifiedObjects__.get(anObject, 0): return ! observers=__observersForObject__(anObject) for observer in observers: try: --- 129,145 ---- lock() try: ! for omni in map(lambda o: o(), __omniscientObservers): #trace('Notifying omniscient observer %s'%str(omni)) if omni is not None: omni.objectWillChange(anObject) ! global __alreadyNotifiedObjects if anObject is None: ! __alreadyNotifiedObjects.clear() return ! if __alreadyNotifiedObjects.get(anObject, 0): return ! observers=__observersForObject(anObject) for observer in observers: try: *************** *** 147,151 **** except 'truc': # swallow all possible exceptions raise ! __alreadyNotifiedObjects__[anObject]=1 finally: unlock() --- 148,152 ---- except 'truc': # swallow all possible exceptions raise ! __alreadyNotifiedObjects[anObject]=1 finally: unlock() *************** *** 156,160 **** try: # make a copy and returns it ! return tuple(__observersForObject__(anObject)) finally: unlock() --- 157,161 ---- try: # make a copy and returns it ! return tuple(__observersForObject(anObject)) finally: unlock() *************** *** 164,171 **** lock() try: ! observers = __observersForObject__(anObject) try: observers.remove(anObserver) ! __setObjectObservers__(anObject, observers) except: pass --- 165,172 ---- lock() try: ! observers = __observersForObject(anObject) try: observers.remove(anObserver) ! __setObjectObservers(anObject, observers) except: pass *************** *** 177,181 **** lock() try: ! __omniscientObservers__.remove(weakref.ref(anObserver)) finally: unlock() --- 178,182 ---- lock() try: ! __omniscientObservers.remove(weakref.ref(anObserver)) finally: unlock() |