From 10c60652633e62cf120102f36b9354c7d330147c Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Thu, 15 Jun 2006 17:34:39 +0000 Subject: add Event --- lib/python/Tools/Event.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lib/python/Tools/Event.py (limited to 'lib/python/Tools/Event.py') diff --git a/lib/python/Tools/Event.py b/lib/python/Tools/Event.py new file mode 100644 index 00000000..6b96bff4 --- /dev/null +++ b/lib/python/Tools/Event.py @@ -0,0 +1,23 @@ + +class Event: + def __init__(self, start = None, stop = None): + self.list = [ ] + self.start = start + self.stop = stop + + def __call__(self, *args, **kwargs): + for x in self.list: + x(*args, **kwargs) + + def listen(self, fnc): + was_empty = len(self.list) == 0 + self.list.append(fnc) + if was_empty: + if self.start: + self.start() + + def unlisten(self, fnc): + self.list.remove(fnc) + if len(self.list) == 0: + if self.stop: + self.stop() -- cgit v1.2.3