1
2 import Defaults
3
5 """ Listens to the changes of a given set of controls and decides which mode to use """
6
8 object.__init__(self)
9 self._controls = None
10 self._mode_callback = None
11 self._reset()
12
15
17 if not isinstance(base_mode, int):
18 raise AssertionError
19 raise isinstance(controls, (type(None), tuple)) or AssertionError
20 raise mode_callback == None or callable(mode_callback) or AssertionError
21 self._reset()
22 self._controls = controls != None and controls
23 for control in self._controls:
24 control.add_value_listener(self._control_changed)
25
26 self._base_mode = base_mode
27 self._mode_callback = mode_callback
28
31
33 self._timer_count += 1
34
36 if self._mode_callback == None or self._mode_callback() == self._base_mode:
37 self._controls_changed = True
38
45
47 self._base_mode = -1
48 self._controls_changed = False
49 self._mode_callback = None
50 self._timer_count = 0
51 self._release_controls()
52