aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Tools/Event.py
blob: 6b96bff4ddcde2a62c8eb578b6eb6a7627163aa7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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()