def _create_modes(self): self._modes = NotifyingModesComponent(is_root=True) self._modes.default_behaviour = mixin(SkinableBehaviourMixin, ImmediateBehaviour)() self._modes.add_mode('session_mode', [ self._session, self._session_layer_mode], layout_byte=0, behaviour=EnablingReenterBehaviour(self._session_zoom)) self._modes.add_mode('user_1_mode', [], layout_byte=1) self._modes.add_mode('user_2_mode', [], layout_byte=2) self._modes.add_mode('volume_mode', [ self._session, self._create_translating_mixer_background(consts.VOLUME_MODE_CHANNEL), self._mixer_volume_layer], layout_byte=4, groups=set('mixer')) self._modes.add_mode('pan_mode', [ self._session, self._create_translating_mixer_background(consts.PAN_MODE_CHANNEL), self._mixer_pan_layer], layout_byte=5, groups=set('mixer')) self._modes.add_mode('send_a_mode', [ self._session, self._create_translating_mixer_background(consts.SEND_A_MODE_CHANNEL), partial(self._set_send_index, 0), self._mixer_sends_layer], layout_byte=6, groups=set('mixer')) self._modes.add_mode('send_b_mode', [ self._session, self._create_translating_mixer_background(consts.SEND_B_MODE_CHANNEL), partial(self._set_send_index, 1), self._mixer_sends_layer], layout_byte=7, groups=set('mixer')) self._modes.add_mode('mixer_mode', [ self._session, self._stop_clip_layer_mode, self._mixer_home_page_layer], layout_byte=3, groups=set('mixer')) self._modes.layer = Layer(session_mode_button=self._session_button, user_1_mode_button=self._user_1_button, user_2_mode_button=self._user_2_button, mixer_mode_button=self._mixer_button, volume_mode_button=self._volume_button, pan_mode_button=self._pan_button, send_a_mode_button=self._send_a_button, send_b_mode_button=self._send_b_button) self._modes.selected_mode = 'session_mode'
def _create_encoder_modes(self): self._encoder_modes = DisablingModesComponent() self._encoder_modes.default_behaviour = mixin(SkinableBehaviourMixin, ImmediateBehaviour)() device_mode = LayerMode( self._device, Layer(parameter_controls=self._encoders, bank_buttons=self._top_pad_row)) pan_mode = AddLayerMode(self._mixer, Layer(pan_controls=self._encoders)) sends_mode = AddLayerMode(self._mixer, Layer(send_controls=self._encoders)) background_mode = LayerMode(self._background, Layer(bank_buttons=self._top_pad_row)) self._encoder_modes.add_mode('device_mode', device_mode, is_enabled=True) self._encoder_modes.add_mode('pan_mode', [pan_mode, background_mode], is_enabled=True) for index in xrange(6): self._encoder_modes.add_mode('send_%d_mode' % (index, ), [ sends_mode, partial(self._set_send_index, index), background_mode ], is_enabled=False) self._encoder_modes.selected_mode = 'device_mode' self._encoder_modes.set_enabled(True)
def auto_arm_restore_behaviour(self, *extra_classes, **extra_params): if not self._auto_arm_restore_behaviour: self._auto_arm_restore_behaviour = mixin( AutoArmRestoreBehaviour, *extra_classes)(auto_arm=self, **extra_params) else: raise not extra_params and not extra_classes or AssertionError return self._auto_arm_restore_behaviour
def auto_arm_restore_behaviour(self, *extra_classes, **extra_params): if not self._auto_arm_restore_behaviour: self._auto_arm_restore_behaviour = mixin(AutoArmRestoreBehaviour, *extra_classes)( auto_arm=self, **extra_params ) else: raise not extra_params and not extra_classes or AssertionError return self._auto_arm_restore_behaviour
def _create_encoder_modes(self): self._encoder_modes = DisablingModesComponent() self._encoder_modes.default_behaviour = mixin(SkinableBehaviourMixin, ImmediateBehaviour)() device_mode = LayerMode(self._device, Layer(parameter_controls=self._encoders, bank_buttons=self._top_pad_row)) pan_mode = AddLayerMode(self._mixer, Layer(pan_controls=self._encoders)) sends_mode = AddLayerMode(self._mixer, Layer(send_controls=self._encoders)) background_mode = LayerMode(self._background, Layer(bank_buttons=self._top_pad_row)) self._encoder_modes.add_mode('device_mode', device_mode, is_enabled=True) self._encoder_modes.add_mode('pan_mode', [pan_mode, background_mode], is_enabled=True) for index in xrange(6): self._encoder_modes.add_mode('send_%d_mode' % (index,), [sends_mode, partial(self._set_send_index, index), background_mode], is_enabled=False) self._encoder_modes.selected_mode = 'device_mode' self._encoder_modes.set_enabled(True)
def add_listener(self, addr, property, obj, value, *a): """ Dynamically add a subject slot and callback """ def fn(self): self.log_message('listener called: ' + addr + ' ' + property) args = [] for arg in a: args.append(getattr(self, arg)) args.append(getattr(self._get_object(obj), value)) self.send(addr, *args) fn = wraps(fn)(mixin(SubjectSlot, CallableSlotMixin)(event=property, listener=partial(fn,self), function=partial(fn,self))) self.register_slot(fn) self._subject_slots.append('_on_'+property+'_changed') if not hasattr(self, '_on_'+property+'_changed'): setattr(self, '_on_'+property+'_changed', fn)
def _create_modes(self): self._modes = NotifyingModesComponent(is_root=True) self._modes.default_behaviour = mixin(SkinableBehaviourMixin, ImmediateBehaviour)() self._modes.add_mode('session_mode', [self._session, self._session_layer_mode], layout_byte=0, behaviour=EnablingReenterBehaviour(self._session_zoom)) self._modes.add_mode('user_1_mode', [], layout_byte=1) self._modes.add_mode('user_2_mode', [], layout_byte=2) self._modes.add_mode('volume_mode', [self._session, self._create_translating_mixer_background(consts.VOLUME_MODE_CHANNEL), self._mixer_volume_layer], layout_byte=4, groups=set('mixer')) self._modes.add_mode('pan_mode', [self._session, self._create_translating_mixer_background(consts.PAN_MODE_CHANNEL), self._mixer_pan_layer], layout_byte=5, groups=set('mixer')) self._modes.add_mode('send_a_mode', [self._session, self._create_translating_mixer_background(consts.SEND_A_MODE_CHANNEL), partial(self._set_send_index, 0), self._mixer_sends_layer], layout_byte=6, groups=set('mixer')) self._modes.add_mode('send_b_mode', [self._session, self._create_translating_mixer_background(consts.SEND_B_MODE_CHANNEL), partial(self._set_send_index, 1), self._mixer_sends_layer], layout_byte=7, groups=set('mixer')) self._modes.add_mode('mixer_mode', [self._session, self._stop_clip_layer_mode, self._mixer_home_page_layer], layout_byte=3, groups=set('mixer')) self._modes.layer = Layer(session_mode_button=self._session_button, user_1_mode_button=self._user_1_button, user_2_mode_button=self._user_2_button, mixer_mode_button=self._mixer_button, volume_mode_button=self._volume_button, pan_mode_button=self._pan_button, send_a_mode_button=self._send_a_button, send_b_mode_button=self._send_b_button) self._modes.selected_mode = 'session_mode'