def removeListener(self, listener, exclude='dummy'):
"""
Remove a listener object or callback.
:listener: can be object, weakref, sequence or '*'
"""
if listener == '*':
self.warning('Removing all listeners')
listener = [k for k in self.listeners.keys() if not k().name==exclude]
elif isString(listener):
listener = [k for k in self.listeners.keys() if k().name==listener]
if isSequence(listener):
while listener:
self.removeListener(listener.pop())
return
elif not isinstance(listener,weakref.ReferenceType):
listener = weakref.ref(listener,self._listenerDied)
try:
self.listeners.pop(listener)
except Exception, e:
return False
if not self.listeners:
self.unsubscribeEvents()
return True
评论列表
文章目录