SF.net SVN: fclient: [608] trunk/fclient/src/fclient/lib/fcp2/lib/events.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <jU...@us...> - 2008-07-13 14:12:07
|
Revision: 608
http://fclient.svn.sourceforge.net/fclient/?rev=608&view=rev
Author: jUrner
Date: 2008-07-13 07:12:14 -0700 (Sun, 13 Jul 2008)
Log Message:
-----------
duh. weakref does not handle instancemethods. rollback
Modified Paths:
--------------
trunk/fclient/src/fclient/lib/fcp2/lib/events.py
Modified: trunk/fclient/src/fclient/lib/fcp2/lib/events.py
===================================================================
--- trunk/fclient/src/fclient/lib/fcp2/lib/events.py 2008-07-13 14:07:57 UTC (rev 607)
+++ trunk/fclient/src/fclient/lib/fcp2/lib/events.py 2008-07-13 14:12:14 UTC (rev 608)
@@ -74,7 +74,7 @@
for event, observer in events:
event -= observer
return self
-
+
#*********************************************************************
#
#*********************************************************************
@@ -103,7 +103,7 @@
@param name: name of the event
"""
self.name = name
- self._refs = []
+ self.observers = []
def __call__(self, *args, **kwargs):
@@ -112,28 +112,22 @@
@note: all listeners will be called with the event a first parameter, followed
by optional args and kwargs
"""
- for ref in self._refs:
- observer = ref()
- if ref is not None:
- observer(self, *args, **kwargs)
+ for observer in self.observers:
+ observer(self, *args, **kwargs)
def __iadd__(self, observer):
"""Adds an observer to the event
@note: the observer will be called with the event as first paraeter,
followed by any number of *args or **kwargs passed by the caller of an event
"""
- self._refs.append(weakref.ref(observer, self.handleDereference))
+ self.observers.append(observer)
return self
def __isub__(self, observer):
"""Removes the first occurence of an observer from the event"""
- observers = [i() for i in self._refs]
- del self._refs[observers.index(observer)]
+ self.observers.remove(observer)
return self
- def handleDereference(self, ref):
- self._refs.remove(ref)
-
#*********************************************************************
#
#*********************************************************************
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|