class Editor(QWidget): def __init__(self): super().__init__() self._au_id = None self._proc_id = None self._ui_model = None self._updater = None self._control_manager = None self._proc_editor = None self._signals = Signals() self._info_editor = InfoEditor() self._keyboard_mapper = KeyboardMapper() v = QVBoxLayout() v.setContentsMargins(4, 4, 4, 4) v.setSpacing(5) self.setLayout(v) def set_au_id(self, au_id): self._au_id = au_id self._signals.set_au_id(au_id) self._info_editor.set_au_id(au_id) def set_proc_id(self, proc_id): self._proc_id = proc_id self._signals.set_proc_id(proc_id) self._info_editor.set_proc_id(proc_id) def set_ui_model(self, ui_model): assert self._au_id != None assert self._proc_id != None self._ui_model = ui_model self._updater = ui_model.get_updater() self._control_manager = ui_model.get_control_manager() self._signals.set_ui_model(ui_model) self._info_editor.set_ui_model(ui_model) self._keyboard_mapper.set_ui_model(ui_model) self._updater.register_updater(self._perform_updates) # Get the processor type module = self._ui_model.get_module() au = module.get_audio_unit(self._au_id) proc = au.get_processor(self._proc_id) proctype = proc.get_type() # Create the type-specific editor cons = proctypeinfo.get_class(proctype) self._proc_editor = cons() self._proc_editor.set_au_id(self._au_id) self._proc_editor.set_proc_id(self._proc_id) self._proc_editor.set_ui_model(self._ui_model) # Set up tab view tabs = QTabWidget() tabs.addTab(self._proc_editor, self._proc_editor.get_name()) tabs.addTab(self._signals, 'Signal Types') tabs.addTab(self._info_editor, 'Info') self.layout().addWidget(tabs) def unregister_updaters(self): self._updater.unregister_updater(self._perform_updates) self._keyboard_mapper.unregister_updaters() self._proc_editor.unregister_updaters() self._info_editor.unregister_updaters() self._signals.unregister_updaters() def _perform_updates(self, signals): pass def keyPressEvent(self, event): # TODO: This plays the complete audio unit, # change after adding processor jamming support module = self._ui_model.get_module() control_id = module.get_control_id_by_au_id(self._au_id) if not control_id: return self._control_manager.set_control_id_override(control_id) if not self._keyboard_mapper.process_typewriter_button_event(event): event.ignore() self._control_manager.set_control_id_override(None) def keyReleaseEvent(self, event): if not self._keyboard_mapper.process_typewriter_button_event(event): event.ignore()
class Editor(QWidget): def __init__(self): super().__init__() self._au_id = None self._proc_id = None self._ui_model = None self._updater = None self._control_manager = None self._proc_editor = None self._signals = Signals() self._info_editor = InfoEditor() self._keyboard_mapper = KeyboardMapper() self._test_output = QCheckBox('Test output') v = QVBoxLayout() v.setContentsMargins(4, 4, 4, 4) v.setSpacing(5) v.addWidget(self._test_output) self.setLayout(v) def set_au_id(self, au_id): self._au_id = au_id self._signals.set_au_id(au_id) self._info_editor.set_au_id(au_id) def set_proc_id(self, proc_id): self._proc_id = proc_id self._signals.set_proc_id(proc_id) self._info_editor.set_proc_id(proc_id) def set_ui_model(self, ui_model): assert self._au_id != None assert self._proc_id != None self._ui_model = ui_model self._updater = ui_model.get_updater() self._control_manager = ui_model.get_control_manager() self._signals.set_ui_model(ui_model) self._info_editor.set_ui_model(ui_model) self._keyboard_mapper.set_ui_model(ui_model) self._updater.register_updater(self._perform_updates) # Get the processor type module = self._ui_model.get_module() au = module.get_audio_unit(self._au_id) proc = au.get_processor(self._proc_id) proctype = proc.get_type() # Create the type-specific editor cons = proctypeinfo.get_class(proctype) self._proc_editor = cons() self._proc_editor.set_au_id(self._au_id) self._proc_editor.set_proc_id(self._proc_id) self._proc_editor.set_ui_model(self._ui_model) # Set up tab view tabs = QTabWidget() tabs.addTab(self._proc_editor, self._proc_editor.get_name()) tabs.addTab(self._signals, 'Signal Types') tabs.addTab(self._info_editor, 'Info') self.layout().addWidget(tabs) # Test output toggle QObject.connect( self._test_output, SIGNAL('stateChanged(int)'), self._change_test_output_state) self._update_test_toggle() def unregister_updaters(self): self._updater.unregister_updater(self._perform_updates) self._keyboard_mapper.unregister_updaters() self._proc_editor.unregister_updaters() self._info_editor.unregister_updaters() self._signals.unregister_updaters() def _perform_updates(self, signals): update_signals = set([ 'signal_proc_test_output_{}'.format(self._proc_id), 'signal_proc_signals_{}'.format(self._proc_id), ]) if not signals.isdisjoint(update_signals): self._update_test_toggle() def _is_processor_testable(self): module = self._ui_model.get_module() au = module.get_audio_unit(self._au_id) proc = au.get_processor(self._proc_id) return proc.get_existence() and (proc.get_signal_type() == 'voice') def _update_test_toggle(self): module = self._ui_model.get_module() au = module.get_audio_unit(self._au_id) proc = au.get_processor(self._proc_id) if not proc.get_existence(): return old_block = self._test_output.blockSignals(True) if self._is_processor_testable(): self._test_output.setEnabled(True) enabled = self._control_manager.is_processor_testing_enabled(self._proc_id) self._test_output.setCheckState(Qt.Checked if enabled else Qt.Unchecked) else: self._test_output.setCheckState(Qt.Unchecked) self._test_output.setEnabled(False) self._test_output.blockSignals(old_block) def _change_test_output_state(self, state): enabled = (state == Qt.Checked) self._control_manager.set_processor_testing_enabled(self._proc_id, enabled) self._updater.signal_update( set(['signal_proc_test_output{}'.format(self._proc_id)])) def keyPressEvent(self, event): module = self._ui_model.get_module() control_id = module.get_control_id_by_au_id(self._au_id) if not control_id: return use_test_output = (self._is_processor_testable() and self._control_manager.is_processor_testing_enabled(self._proc_id)) self._control_manager.set_control_id_override(control_id) if use_test_output: self._control_manager.set_test_processor(control_id, self._proc_id) if not self._keyboard_mapper.process_typewriter_button_event(event): event.ignore() self._control_manager.set_test_processor(control_id, None) self._control_manager.set_control_id_override(None) def keyReleaseEvent(self, event): if not self._keyboard_mapper.process_typewriter_button_event(event): event.ignore()
class Editor(QWidget): def __init__(self): super().__init__() self._ui_model = None self._au_id = None self._control_manager = None self._test_panel = TestPanel() self._tabs = QTabWidget() self._components = Components() self._hits = Hits() self._expressions = Expressions() self._ports = Ports() self._info_editor = InfoEditor() self._keyboard_mapper = KeyboardMapper() def set_au_id(self, au_id): self._au_id = au_id self._test_panel.set_au_id(au_id) self._components.set_au_id(au_id) self._hits.set_au_id(au_id) self._expressions.set_au_id(au_id) self._ports.set_au_id(au_id) self._info_editor.set_au_id(au_id) def set_ui_model(self, ui_model): self._ui_model = ui_model self._control_manager = ui_model.get_control_manager() self._test_panel.set_ui_model(ui_model) self._components.set_ui_model(ui_model) self._hits.set_ui_model(ui_model) self._expressions.set_ui_model(ui_model) self._ports.set_ui_model(ui_model) self._info_editor.set_ui_model(ui_model) self._keyboard_mapper.set_ui_model(ui_model) module = self._ui_model.get_module() au = module.get_audio_unit(self._au_id) self._tabs.addTab(self._components, 'Components') if au.is_instrument(): self._tabs.addTab(self._hits, 'Hits') self._tabs.addTab(self._expressions, 'Expressions') self._tabs.addTab(self._ports, 'Ports') self._tabs.addTab(self._info_editor, 'Info') v = QVBoxLayout() v.setContentsMargins(4, 4, 4, 4) v.setSpacing(4) if au.is_instrument(): v.addWidget(self._test_panel) v.addWidget(self._tabs) self.setLayout(v) def unregister_updaters(self): self._keyboard_mapper.unregister_updaters() self._info_editor.unregister_updaters() self._ports.unregister_updaters() self._expressions.unregister_updaters() self._hits.unregister_updaters() self._components.unregister_updaters() self._test_panel.unregister_updaters() def keyPressEvent(self, event): module = self._ui_model.get_module() control_id = module.get_control_id_by_au_id(self._au_id) if not control_id: return au = module.get_audio_unit(self._au_id) self._control_manager.set_control_id_override(control_id) au.set_test_params_enabled(True) if not self._keyboard_mapper.process_typewriter_button_event(event): event.ignore() self._control_manager.set_control_id_override(None) au.set_test_params_enabled(False) def keyReleaseEvent(self, event): if not self._keyboard_mapper.process_typewriter_button_event(event): event.ignore()
class Editor(QWidget): def __init__(self): super().__init__() self._ui_model = None self._au_id = None self._control_manager = None self._test_panel = TestPanel() self._tabs = QTabWidget() self._components = Components() self._hits = Hits() self._expressions = Expressions() self._ports = Ports() self._info_editor = InfoEditor() self._keyboard_mapper = KeyboardMapper() def set_au_id(self, au_id): self._au_id = au_id self._test_panel.set_au_id(au_id) self._components.set_au_id(au_id) self._hits.set_au_id(au_id) self._expressions.set_au_id(au_id) self._ports.set_au_id(au_id) self._info_editor.set_au_id(au_id) def set_ui_model(self, ui_model): self._ui_model = ui_model self._control_manager = ui_model.get_control_manager() self._test_panel.set_ui_model(ui_model) self._components.set_ui_model(ui_model) self._hits.set_ui_model(ui_model) self._expressions.set_ui_model(ui_model) self._ports.set_ui_model(ui_model) self._info_editor.set_ui_model(ui_model) self._keyboard_mapper.set_ui_model(ui_model) module = self._ui_model.get_module() au = module.get_audio_unit(self._au_id) self._tabs.addTab(self._components, 'Components') if au.is_instrument(): self._tabs.addTab(self._hits, 'Hits') self._tabs.addTab(self._expressions, 'Expressions') self._tabs.addTab(self._ports, 'Ports') self._tabs.addTab(self._info_editor, 'Info') v = QVBoxLayout() v.setContentsMargins(4, 4, 4, 4) v.setSpacing(4) if au.is_instrument(): v.addWidget(self._test_panel) v.addWidget(self._tabs) self.setLayout(v) def unregister_updaters(self): self._keyboard_mapper.unregister_updaters() self._info_editor.unregister_updaters() self._ports.unregister_updaters() self._expressions.unregister_updaters() self._hits.unregister_updaters() self._components.unregister_updaters() self._test_panel.unregister_updaters() def keyPressEvent(self, event): module = self._ui_model.get_module() control_id = module.get_control_id_by_au_id(self._au_id) if not control_id: return au = module.get_audio_unit(self._au_id) self._control_manager.set_control_id_override(control_id) au.set_test_expressions_enabled(True) if not self._keyboard_mapper.process_typewriter_button_event(event): event.ignore() self._control_manager.set_control_id_override(None) au.set_test_expressions_enabled(False) def keyReleaseEvent(self, event): if not self._keyboard_mapper.process_typewriter_button_event(event): event.ignore()