Пример #1
0
    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)
Пример #2
0
    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
Пример #3
0
    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)
Пример #4
0
    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
Пример #5
0
    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()
Пример #6
0
    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)
Пример #7
0
    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()
Пример #8
0
    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()
Пример #9
0
    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()
Пример #10
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._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)
Пример #11
0
    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)
Пример #12
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)
Пример #13
0
 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()
Пример #14
0
 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()
Пример #15
0
    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)