toxygen/toxygen/common/event.py

27 lines
541 B
Python
Raw Normal View History

2018-05-04 21:09:33 +00:00
class Event:
def __init__(self):
self._callbacks = set()
def __iadd__(self, callback):
2018-05-10 17:47:34 +00:00
self.add_callback(callback)
2018-05-04 21:09:33 +00:00
2018-05-16 21:02:22 +00:00
return self
2018-05-04 21:09:33 +00:00
def __isub__(self, callback):
self.remove_callback(callback)
2018-05-16 21:02:22 +00:00
return self
2018-05-04 21:09:33 +00:00
def __call__(self, *args, **kwargs):
for callback in self._callbacks:
callback(*args, **kwargs)
def add_callback(self, callback):
self._callbacks.add(callback)
def remove_callback(self, callback):
self._callbacks.discard(callback)