| Home | Trees | Indices | Help |
|---|
|
|
1 #Embedded file name: /Users/versonator/Hudson/live/Projects/AppLive/Resources/MIDI Remote Scripts/_Framework/ModeSelectorComponent.py 2 from ControlSurfaceComponent import ControlSurfaceComponent 3 from ButtonElement import ButtonElement 4 from MomentaryModeObserver import MomentaryModeObserver 57 """ Class for switching between modes, handle several functions with few controls """ 814310 super(ModeSelectorComponent, self).__init__(*a, **k) 11 self._modes_buttons = [] 12 self._mode_toggle = None 13 self._mode_listeners = [] 14 self.__mode_index = -1 15 self._modes_observers = {} 16 self._modes_heap = []17 2022 raise isinstance(mode, int) or AssertionError 23 self.__mode_index = mode 24 for listener in self._mode_listeners: 25 listener()26 27 _mode_index = property(_get_protected_mode_index, _set_protected_mode_index) 28 31 34 35 mode_index = property(_get_public_mode_index, _set_public_mode_index) 3638 self._clean_heap() 39 if self._mode_toggle != None: 40 self._mode_toggle.remove_value_listener(self._toggle_value) 41 self._mode_toggle = None 42 self._modes_buttons = None 43 self._mode_listeners = None 44 super(ModeSelectorComponent, self).disconnect()4547 self.update()4850 if not (button == None or isinstance(button, ButtonElement)): 51 raise AssertionError 52 if self._mode_toggle != None: 53 self._mode_toggle.remove_value_listener(self._toggle_value) 54 self._mode_toggle = button 55 self._mode_toggle != None and self._mode_toggle.add_value_listener(self._toggle_value) 56 self.set_mode(0)57 6971 self._clean_heap() 72 self._modes_heap = [(mode, None, None)] 73 if self._mode_index != mode: 74 self._update_mode()7577 mode = self._modes_heap[-1][0] 78 if not mode in range(self.number_of_modes()): 79 raise AssertionError 80 self._mode_index = self._mode_index != mode and mode 81 self.update()8284 for _, _, observer in self._modes_heap: 85 if observer != None: 86 observer.disconnect() 87 88 self._modes_heap = []89 9294 return listener in self._mode_listeners9597 raise listener not in self._mode_listeners or AssertionError 98 self._mode_listeners.append(listener)99101 raise listener in self._mode_listeners or AssertionError 102 self._mode_listeners.remove(listener)103 106108 raise len(self._modes_buttons) > 0 or AssertionError 109 raise isinstance(value, int) or AssertionError 110 raise sender in self._modes_buttons or AssertionError 111 new_mode = self._modes_buttons.index(sender) 112 if sender.is_momentary(): 113 if value > 0: 114 mode_observer = MomentaryModeObserver() 115 mode_observer.set_mode_details(new_mode, self._controls_for_mode(new_mode), self._get_public_mode_index) 116 self._modes_heap.append((new_mode, sender, mode_observer)) 117 self._update_mode() 118 elif self._modes_heap[-1][1] == sender and not self._modes_heap[-1][2].is_mode_momentary(): 119 self.set_mode(new_mode) 120 else: 121 for mode, button, observer in self._modes_heap: 122 if button == sender: 123 self._modes_heap.remove((mode, button, observer)) 124 break 125 126 self._update_mode() 127 else: 128 self.set_mode(new_mode)129131 if not self._mode_toggle != None: 132 raise AssertionError 133 raise isinstance(value, int) or AssertionError 134 (value is not 0 or not self._mode_toggle.is_momentary()) and self.set_mode((self._mode_index + 1) % self.number_of_modes())135 138140 for _, _, mode_observer in self._modes_heap: 141 if mode_observer != None: 142 mode_observer.on_timer()
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 on Wed Mar 6 18:53:33 2013 | http://epydoc.sourceforge.net |