def __init__(self): super().__init__() self._play_button = PlayButton() self._play_pattern_button = PlayPatternButton() self._play_from_cursor_button = PlayFromCursorButton() self._record_button = RecordButton() self._silence_button = SilenceButton() self._playback_pos = PlaybackPosition() self._interactivity_button = InteractivityButton() self.add_to_updaters( self._play_button, self._play_pattern_button, self._play_from_cursor_button, self._record_button, self._silence_button, self._playback_pos, self._interactivity_button) self.addWidget(self._play_button) self.addWidget(self._play_pattern_button) self.addWidget(self._play_from_cursor_button) if cmdline.get_experimental(): self.addWidget(self._record_button) self.addWidget(self._silence_button) self.addSeparator() self.addWidget(self._playback_pos) self.addSeparator() self.addWidget(self._interactivity_button)
def _make_colour_list(self): style_mgr = self._ui_model.get_style_manager() colours = [] categories = {} category_info = { 'conns_': 'Connections', 'envelope_': 'Envelope', 'peak_meter_': 'Peak meter', 'position_': 'Position view', 'sample_map_': 'Sample map', 'sheet_': 'Sheet', 'system_load_': 'System load', 'waveform_': 'Waveform', } for k, _ in _COLOUR_DESCS: colour = style_mgr.get_style_param(k) for cat_prefix, cat_name in category_info.items(): if k.startswith(cat_prefix): if cat_prefix not in categories: categories[cat_prefix] = ColourCategoryModel(cat_name) colours.append(categories[cat_prefix]) if ((cat_prefix != 'position_') or cmdline.get_experimental() or (k != 'position_record_colour')): categories[cat_prefix].add_colour( ColourModel(k, colour)) break else: colours.append(ColourModel(k, colour)) self._colours = colours
def _make_colour_list(self): style_manager = self._ui_model.get_style_manager() colours = [] categories = {} category_info = { 'conns_' : 'Connections', 'envelope_' : 'Envelope', 'peak_meter_' : 'Peak meter', 'position_' : 'Position view', 'sample_map_' : 'Sample map', 'sheet_' : 'Sheet', 'system_load_': 'System load', 'waveform_' : 'Waveform', } for k, _ in _COLOUR_DESCS: colour = style_manager.get_style_param(k) for cat_prefix, cat_name in category_info.items(): if k.startswith(cat_prefix): if cat_prefix not in categories: categories[cat_prefix] = ColourCategoryModel(cat_name) colours.append(categories[cat_prefix]) if ((cat_prefix != 'position_') or cmdline.get_experimental() or (k != 'position_record_colour')): categories[cat_prefix].add_colour(ColourModel(k, colour)) break else: colours.append(ColourModel(k, colour)) self._colours = colours
def __init__(self): super().__init__() self._ui_model = None self._portal = Portal() self._top_controls = TopControls() self._composition = Composition() self._input_controls = InputControls() self._import_progress = ImportProgress() self._peak_meter = PeakMeter() v = QVBoxLayout() v.setContentsMargins(0, 0, 0, 0) v.setSpacing(0) v.addWidget(self._portal) v.addWidget(self._top_controls) v.addSpacing(4) v.addWidget(self._composition) v.addWidget(self._input_controls) v.addWidget(self._import_progress) v.addSpacing(4) v.addWidget(self._peak_meter) self.setLayout(v) if not cmdline.get_experimental(): self._import_progress.hide()
def __init__(self): super().__init__() self._ui_model = None self._edit_button = EditButton() self._replace_button = ReplaceButton() self._rest_button = RestButton() self._del_selection_button = DelSelectionButton() self._undo_button = UndoButton() self._redo_button = RedoButton() self._cut_button = CutButton() self._copy_button = CopyButton() self._paste_button = PasteButton() self._zoom_buttons = [ ZoomButton('out'), ZoomButton('original'), ZoomButton('in'), ZoomButton('shrink_w'), ZoomButton('original_w'), ZoomButton('expand_w'), ] self._grid_toggle = GridToggle() self._grid_editor_button = GridEditorButton() self._grid_selector = GridSelector() self._length_editor = LengthEditor() h = QHBoxLayout() h.setContentsMargins(4, 0, 4, 4) h.setSpacing(5) h.addWidget(self._edit_button) h.addWidget(self._replace_button) h.addWidget(HackSeparator()) h.addWidget(self._rest_button) if cmdline.get_experimental(): h.addWidget(self._del_selection_button) h.addWidget(HackSeparator()) h.addWidget(self._undo_button) h.addWidget(self._redo_button) h.addWidget(HackSeparator()) h.addWidget(self._cut_button) h.addWidget(self._copy_button) h.addWidget(self._paste_button) h.addWidget(HackSeparator()) for button in self._zoom_buttons: h.addWidget(button) h.addWidget(HackSeparator()) h.addWidget(self._grid_toggle) h.addWidget(self._grid_editor_button) spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) h.addWidget(spacer) h.addWidget(self._grid_selector) h.addWidget(self._length_editor) self.setLayout(h)
def __init__(self): QWidget.__init__(self) self._ui_model = None self._portal = Portal() self._main_splitter = MainSplitter() self._import_progress = ImportProgress() self._peak_meter = PeakMeter() v = QVBoxLayout() v.setContentsMargins(0, 0, 0, 0) v.addWidget(self._portal) v.addWidget(self._main_splitter) v.addWidget(self._import_progress) v.addWidget(self._peak_meter) self.setLayout(v) if not cmdline.get_experimental(): self._import_progress.hide()
def __init__(self): QFrame.__init__(self) self._ui_model = None self._octave_selector = OctaveSelector() self._typewriter = Typewriter() self._instrument_select = InstrumentSelect() self._profile_control = ProfileControl() v = QVBoxLayout() v.setContentsMargins(0, 0, 0, 0) v.addWidget(self._octave_selector) v.addWidget(self._instrument_select) v.addWidget(self._typewriter) self.setLayout(v) self._typewriter.setFocus() if not cmdline.get_experimental(): self._instrument_select.hide()
def __init__(self): super().__init__() self._ui_model = None self._portal = Portal() self._top_controls = TopControls() self._main_splitter = MainSplitter() self._import_progress = ImportProgress() self._peak_meter = PeakMeter() v = QVBoxLayout() v.setContentsMargins(0, 0, 0, 0) v.setSpacing(0) v.addWidget(self._portal) v.addWidget(self._top_controls) v.addSpacing(4) v.addWidget(self._main_splitter) v.addWidget(self._import_progress) v.addSpacing(4) v.addWidget(self._peak_meter) self.setLayout(v) if not cmdline.get_experimental(): self._import_progress.hide()
def __init__(self): super().__init__() self._follow_playback_button = FollowPlaybackButton() self._edit_button = EditButton() self._replace_button = ReplaceButton() self._rest_button = RestButton() self._del_selection_button = DelSelectionButton() self._undo_button = UndoButton() self._redo_button = RedoButton() self._cut_button = CutButton() self._copy_button = CopyButton() self._paste_button = PasteButton() self._convert_tr_button = ConvertTriggerButton() self._zoom_buttons = [ ZoomButton('out'), ZoomButton('original'), ZoomButton('in'), ZoomButton('shrink_w'), ZoomButton('original_w'), ZoomButton('expand_w'), ] self._grid_toggle = GridToggle() self._grid_editor_button = GridEditorButton() self._grid_selector = GridSelector() self._length_editor = LengthEditor() self.add_to_updaters(self._follow_playback_button, self._edit_button, self._replace_button, self._rest_button, self._del_selection_button, self._undo_button, self._redo_button, self._cut_button, self._copy_button, self._paste_button, self._convert_tr_button, *self._zoom_buttons, self._grid_toggle, self._grid_editor_button, self._grid_selector, self._length_editor) h = QHBoxLayout() h.setContentsMargins(4, 0, 4, 4) h.setSpacing(2) h.addWidget(self._follow_playback_button) h.addWidget(self._edit_button) h.addWidget(self._replace_button) h.addWidget(HackSeparator()) h.addWidget(self._rest_button) if cmdline.get_experimental(): h.addWidget(self._del_selection_button) h.addWidget(HackSeparator()) h.addWidget(self._undo_button) h.addWidget(self._redo_button) h.addWidget(HackSeparator()) h.addWidget(self._cut_button) h.addWidget(self._copy_button) h.addWidget(self._paste_button) h.addWidget(HackSeparator()) h.addWidget(self._convert_tr_button) h.addWidget(HackSeparator()) for button in self._zoom_buttons: h.addWidget(button) spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) h.addWidget(spacer) h.addWidget(self._grid_toggle) h.addSpacing(2) h.addWidget(self._grid_editor_button) h.addSpacing(2) h.addWidget(self._grid_selector) h.addWidget(self._length_editor) for i in range(h.count()): widget = h.itemAt(i).widget() if isinstance(widget, (QPushButton, QCheckBox)): widget.setFocusPolicy(Qt.NoFocus) self.setLayout(h)
def keyPressEvent(self, ev): if self._keyboard_mapper.process_typewriter_button_event(ev): return if ev.modifiers() == Qt.NoModifier: if ev.key() == Qt.Key_Up: self._vertical_move_state.press_up() self._move_edit_cursor_tstamp() elif ev.key() == Qt.Key_Down: self._vertical_move_state.press_down() self._move_edit_cursor_tstamp() elif ev.key() == Qt.Key_Left: self._horizontal_move_state.press_left() self._move_edit_cursor_trow() elif ev.key() == Qt.Key_Right: self._horizontal_move_state.press_right() self._move_edit_cursor_trow() elif ev.key() == Qt.Key_Home: self._move_edit_cursor_trigger_index(0) elif ev.key() == Qt.Key_End: self._move_edit_cursor_trigger_index(2**24) # :-P elif ev.key() == Qt.Key_1: # TODO: Some rare keyboard layouts have the 1 key in a location # that interferes with the typewriter if not ev.isAutoRepeat(): self._add_rest() elif ev.key() == Qt.Key_Delete: self._try_delete_selection() elif ev.key() == Qt.Key_Backspace: self._perform_backspace() elif ev.key() == Qt.Key_Space: if not ev.isAutoRepeat(): connected = self._sheet_manager.get_typewriter_connected() self._sheet_manager.set_typewriter_connected(not connected) elif ev.key() == Qt.Key_Insert: if not ev.isAutoRepeat(): is_replace = self._sheet_manager.get_replace_mode() self._sheet_manager.set_replace_mode(not is_replace) if ev.key() == Qt.Key_Tab: self._move_edit_cursor_column(1) return True elif ev.key() == Qt.Key_Backtab: self._move_edit_cursor_column(-1) return True if ev.modifiers() == Qt.ControlModifier: if ev.key() == Qt.Key_Minus: self._sheet_manager.set_zoom(self._sheet_manager.get_zoom() - 1) elif ev.key() == Qt.Key_Plus: self._sheet_manager.set_zoom(self._sheet_manager.get_zoom() + 1) elif ev.key() == Qt.Key_0: self._sheet_manager.set_zoom(0) if ev.modifiers() == (Qt.ControlModifier | Qt.AltModifier): if cmdline.get_experimental(): if ev.key() == Qt.Key_Minus: self._sheet_manager.set_column_width( self._sheet_manager.get_column_width() - 1) elif ev.key() == Qt.Key_Plus: self._sheet_manager.set_column_width( self._sheet_manager.get_column_width() + 1) elif ev.key() == Qt.Key_0: self._sheet_manager.set_column_width(0)
def __init__(self): super().__init__() self._follow_playback_button = FollowPlaybackButton() self._edit_button = EditButton() self._replace_button = ReplaceButton() self._rest_button = RestButton() self._del_selection_button = DelSelectionButton() self._undo_button = UndoButton() self._redo_button = RedoButton() self._cut_button = CutButton() self._copy_button = CopyButton() self._paste_button = PasteButton() self._convert_tr_button = ConvertTriggerButton() self._zoom_buttons = [ ZoomButton('out'), ZoomButton('original'), ZoomButton('in'), ZoomButton('shrink_w'), ZoomButton('original_w'), ZoomButton('expand_w'), ] self._sheet_help_button = SheetHelpButton() self._grid_toggle = GridToggle() self._grid_editor_button = GridEditorButton() self._grid_selector = GridSelector() self._length_editor = LengthEditor() self.add_to_updaters( self._follow_playback_button, self._edit_button, self._replace_button, self._rest_button, self._del_selection_button, self._undo_button, self._redo_button, self._cut_button, self._copy_button, self._paste_button, self._convert_tr_button, *self._zoom_buttons, self._sheet_help_button, self._grid_toggle, self._grid_editor_button, self._grid_selector, self._length_editor) h = QHBoxLayout() h.setContentsMargins(2, 0, 2, 2) h.setSpacing(2) h.addWidget(self._follow_playback_button) h.addWidget(self._edit_button) h.addWidget(self._replace_button) h.addWidget(HackSeparator()) h.addWidget(self._rest_button) if cmdline.get_experimental(): h.addWidget(self._del_selection_button) h.addWidget(HackSeparator()) h.addWidget(self._undo_button) h.addWidget(self._redo_button) h.addWidget(HackSeparator()) h.addWidget(self._cut_button) h.addWidget(self._copy_button) h.addWidget(self._paste_button) h.addWidget(HackSeparator()) h.addWidget(self._convert_tr_button) h.addWidget(HackSeparator()) for button in self._zoom_buttons: h.addWidget(button) h.addWidget(HackSeparator()) h.addWidget(self._sheet_help_button) spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) h.addWidget(spacer) h.addWidget(self._grid_toggle) h.addSpacing(2) h.addWidget(self._grid_editor_button) h.addSpacing(2) h.addWidget(self._grid_selector) h.addWidget(self._length_editor) for i in range(h.count()): widget = h.itemAt(i).widget() if isinstance(widget, (QPushButton, QCheckBox)): widget.setFocusPolicy(Qt.NoFocus) self.setLayout(h)
def keyPressEvent(self, event): modifiers = event.modifiers() key = event.key() if modifiers == Qt.ControlModifier and key == Qt.Key_P: if cmdline.get_experimental(): self._profile_control.show()
def __init__(self): super().__init__() self._ui_model = None self._edit_button = EditButton() self._replace_button = ReplaceButton() self._rest_button = RestButton() self._del_selection_button = DelSelectionButton() self._undo_button = UndoButton() self._redo_button = RedoButton() self._cut_button = CutButton() self._copy_button = CopyButton() self._paste_button = PasteButton() self._convert_tr_button = ConvertTriggerButton() self._zoom_buttons = [ ZoomButton('out'), ZoomButton('original'), ZoomButton('in'), ZoomButton('shrink_w'), ZoomButton('original_w'), ZoomButton('expand_w'), ] self._grid_toggle = GridToggle() self._grid_editor_button = GridEditorButton() self._grid_selector = GridSelector() self._length_editor = LengthEditor() h = QHBoxLayout() h.setContentsMargins(4, 0, 4, 4) h.setSpacing(2) h.addWidget(self._edit_button) h.addWidget(self._replace_button) h.addWidget(HackSeparator()) h.addWidget(self._rest_button) if cmdline.get_experimental(): h.addWidget(self._del_selection_button) h.addWidget(HackSeparator()) h.addWidget(self._undo_button) h.addWidget(self._redo_button) h.addWidget(HackSeparator()) h.addWidget(self._cut_button) h.addWidget(self._copy_button) h.addWidget(self._paste_button) h.addWidget(HackSeparator()) h.addWidget(self._convert_tr_button) h.addWidget(HackSeparator()) for button in self._zoom_buttons: h.addWidget(button) h.addWidget(HackSeparator()) h.addWidget(self._grid_toggle) h.addWidget(self._grid_editor_button) spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) h.addWidget(spacer) h.addWidget(self._grid_selector) h.addWidget(self._length_editor) self.setLayout(h)