Ejemplo n.º 1
0
    def remove_theme(self, theme_id):
        theme_type, theme_name = theme_id
        assert theme_type == 'custom'
        config.get_config().remove_theme(theme_name)

        if self._session.cached_theme_id == theme_id:
            self._session.cached_theme_id = None
            self._session.cached_theme = {}
            self._session.is_cached_theme_modified = False
Ejemplo n.º 2
0
    def set_theme_name_and_get_new_id(self, theme_id, disp_name):
        theme_type, old_theme_name = theme_id
        assert theme_type == 'custom'

        if theme_id == self._session.cached_theme_id:
            self.try_flush_cached_style()
            self._session.cached_theme_id = None
            self._session.cached_theme = {}

        cfg = config.get_config()
        new_theme_name = cfg.make_theme_name(disp_name, unique=False)
        if new_theme_name != old_theme_name:
            new_theme_name = cfg.make_theme_name(disp_name, unique=True)
            if not (new_theme_name and cfg.rename_theme(old_theme_name, new_theme_name)):
                new_theme_name = old_theme_name

        new_theme_id = ('custom', new_theme_name)

        theme = cfg.get_theme(new_theme_name)
        theme['name'] = disp_name
        cfg.set_theme(new_theme_name, theme)

        if not self._session.cached_theme_id:
            self._session.cached_theme_id = new_theme_id
            self._session.cached_theme = theme
            self._session.is_cached_theme_modified = False

        return new_theme_id
Ejemplo n.º 3
0
def get_kqt_file_path(ui_model):
    caption = 'Open Kunquat module'
    default_dir = config.get_config().get_value('dir_modules') or ''

    dialog = FileDialog(ui_model, FileDialog.MODE_OPEN, caption, default_dir,
                        FileDialog.TYPE_KQT)
    return dialog.get_path()
Ejemplo n.º 4
0
def get_kqt_file_path(ui_model):
    caption = 'Open Kunquat module'
    default_dir = config.get_config().get_value('dir_modules') or ''

    dialog = FileDialog(
            ui_model, FileDialog.MODE_OPEN, caption, default_dir, FileDialog.TYPE_KQT)
    return dialog.get_path()
Ejemplo n.º 5
0
def get_kqt_file_path(types):
    filters = []
    if types == set(['kqt', 'kqti', 'kqte']):
        caption = 'Open Kunquat file'
        filters.append('All Kunquat files (*.kqt *.kqti *.kqte)')
        def_dir_conf_key = 'dir_modules'
    elif types == set(['kqti', 'kqte']):
        caption = 'Open Kunquat instrument/effect'
        filters.append('Kunquat instruments and effects (*.kqti *.kqte)')
        def_dir_conf_key = 'dir_instruments'
    elif types == set(['kqte']):
        caption = 'Open Kunquat effect'
        def_dir_conf_key = 'dir_effects'
    else:
        assert False

    if 'kqt' in types:
        filters.append('Kunquat compositions (*.kqt)')
    if 'kqti' in types:
        filters.append('Kunquat instruments (*.kqti)')
    if 'kqte' in types:
        filters.append('Kunquat effects (*.kqte)')

    default_dir = config.get_config().get_value(def_dir_conf_key) or ''

    file_path, _ = QFileDialog.getOpenFileName(
            None, caption, default_dir, ';;'.join(filters))
    if file_path:
        return file_path
    return None
Ejemplo n.º 6
0
def get_kqt_file_path(types):
    filters = []
    if types == set(['kqt', 'kqti', 'kqte']):
        caption = 'Open Kunquat file'
        filters.append('All Kunquat files'
                       ' (*.kqt *.kqt.gz *.kqt.bz2'
                       ' *.kqti *.kqti.gz *.kqti.bz2'
                       ' *.kqte *.kqte.gz *.kqte.bz2)')
        def_dir_conf_key = 'dir_modules'
    elif types == set(['kqti', 'kqte']):
        caption = 'Open Kunquat instrument/effect'
        filters.append(
            'Kunquat instruments and effects'
            ' (*.kqti *.kqti.gz *.kqti.bz2 *.kqte *.kqte.gz *.kqte.bz2)')
        def_dir_conf_key = 'dir_instruments'
    elif types == set(['kqte']):
        caption = 'Open Kunquat effect'
        def_dir_conf_key = 'dir_effects'
    else:
        assert False

    if 'kqt' in types:
        filters.append('Kunquat compositions (*.kqt *.kqt.gz *.kqt.bz2)')
    if 'kqti' in types:
        filters.append('Kunquat instruments (*.kqti *.kqti.gz *.kqti.bz2)')
    if 'kqte' in types:
        filters.append('Kunquat effects (*.kqte *.kqte.gz *.kqte.bz2)')

    default_dir = config.get_config().get_value(def_dir_conf_key) or ''

    file_path, _ = QFileDialog.getOpenFileName(
        caption=caption, dir=default_dir, filter=';;'.join(filters))
    if file_path:
        return file_path
    return None
Ejemplo n.º 7
0
    def _update_dir(self):
        cfg = config.get_config()
        directory = cfg.get_value(self._conf_key) or ''

        old_block = self._text.blockSignals(True)
        if directory != self._text.text():
            self._text.setText(directory)
        self._text.blockSignals(old_block)
Ejemplo n.º 8
0
    def _update_dir(self):
        cfg = config.get_config()
        directory = cfg.get_value(self._conf_key) or ''

        old_block = self._text.blockSignals(True)
        if directory != self._text.text():
            self._text.setText(directory)
        self._text.blockSignals(old_block)
Ejemplo n.º 9
0
def get_module_save_path():
    default_dir = config.get_config().get_value('dir_modules') or ''
    module_path, _ = QFileDialog.getSaveFileName(
            caption='Save Kunquat composition',
            dir=default_dir,
            filter='Kunquat compositions (*.kqt *.kqt.gz *.kqt.bz2)')
    if not module_path:
        return None
    return module_path
Ejemplo n.º 10
0
def get_module_save_path():
    default_dir = config.get_config().get_value('dir_modules') or ''
    module_path, _ = QFileDialog.getSaveFileName(
        None, 'Save Kunquat composition', default_dir,
        'Kunquat compositions (*.kqt)')
    if not module_path:
        return None

    if not module_path.endswith('.kqt'):
        module_path += '.kqt'
    return module_path
Ejemplo n.º 11
0
    def try_flush_cached_style(self):
        cached_theme_id = self._session.cached_theme_id
        if (not cached_theme_id) or (not self._session.is_cached_theme_modified):
            return

        assert cached_theme_id[0] == 'custom'

        cfg = config.get_config()
        if cfg.set_theme(cached_theme_id[1], self._session.cached_theme):
            self._session.is_cached_theme_modified = False
        else:
            print('Could not save cached theme')
Ejemplo n.º 12
0
def get_module_save_path(ui_model):
    default_dir = config.get_config().get_value('dir_modules') or ''
    caption = 'Save Kunquat composition'
    filters = FileDialog.TYPE_ALL_KQT | FileDialog.TYPE_ALL_PCM
    dialog = FileDialog(ui_model, FileDialog.MODE_SAVE, caption, default_dir, filters)
    module_path = dialog.get_path()
    if not module_path:
        #print('Not saving')
        return None

    #print('Saving {}'.format(module_path))
    return module_path
Ejemplo n.º 13
0
def get_module_save_path(ui_model):
    default_dir = config.get_config().get_value('dir_modules') or ''
    caption = 'Save Kunquat composition'
    filters = FileDialog.TYPE_ALL_KQT | FileDialog.TYPE_ALL_PCM
    dialog = FileDialog(ui_model, FileDialog.MODE_SAVE, caption, default_dir,
                        filters)
    module_path = dialog.get_path()
    if not module_path:
        #print('Not saving')
        return None

    #print('Saving {}'.format(module_path))
    return module_path
Ejemplo n.º 14
0
def get_au_file_info(ui_model, types):
    if types == (FileDialog.TYPE_KQTI | FileDialog.TYPE_KQTE):
        caption = 'Open Kunquat instrument/effect'
        def_dir_conf_key = 'dir_instruments'
    elif types == FileDialog.TYPE_KQTE:
        caption = 'Open Kunquat effect'
        def_dir_conf_key = 'dir_effects'
    else:
        assert False

    default_dir = config.get_config().get_value(def_dir_conf_key) or ''

    dialog = FileDialog(ui_model, FileDialog.MODE_OPEN, caption, default_dir, types)
    return dialog.get_path_with_type_info()
Ejemplo n.º 15
0
def get_effect_save_path(au_name):
    default_dir = config.get_config().get_value('dir_effects') or ''
    suggested_path = default_dir
    if au_name:
        suggested_base_name = _get_suggested_au_base_file_name(au_name)
        if suggested_base_name:
            suggested_name = suggested_base_name + '.kqte.bz2'
            suggested_path = os.path.join(default_dir, suggested_name)
    au_path, _ = QFileDialog.getSaveFileName(
            caption='Save Kunquat effect',
            dir=suggested_path,
            filter='Kunquat effects (*.kqte *.kqte.gz *.kqte.bz2)')
    if not au_path:
        return None
    return au_path
Ejemplo n.º 16
0
def get_au_file_info(ui_model, types):
    if types == (FileDialog.TYPE_KQTI | FileDialog.TYPE_KQTE):
        caption = 'Open Kunquat instrument/effect'
        def_dir_conf_key = 'dir_instruments'
    elif types == FileDialog.TYPE_KQTE:
        caption = 'Open Kunquat effect'
        def_dir_conf_key = 'dir_effects'
    else:
        assert False

    default_dir = config.get_config().get_value(def_dir_conf_key) or ''

    dialog = FileDialog(ui_model, FileDialog.MODE_OPEN, caption, default_dir,
                        types)
    return dialog.get_path_with_type_info()
Ejemplo n.º 17
0
def get_effect_save_path(ui_model, au_name):
    default_dir = config.get_config().get_value('dir_effects') or ''
    suggested_path = default_dir
    if au_name:
        suggested_base_name = _get_suggested_au_base_file_name(au_name)
        if suggested_base_name:
            suggested_name = suggested_base_name + '.kqte'
            suggested_path = os.path.join(default_dir, suggested_name)

    caption = 'Save Kunquat effect'
    filters = FileDialog.TYPE_ALL_KQT | FileDialog.TYPE_ALL_PCM
    dialog = FileDialog(ui_model, FileDialog.MODE_SAVE, caption, suggested_path, filters)
    au_path = dialog.get_path()
    if not au_path:
        return None

    return au_path
Ejemplo n.º 18
0
def get_effect_save_path(au_name):
    default_dir = config.get_config().get_value('dir_effects') or ''
    suggested_path = default_dir
    if au_name:
        suggested_base_name = _get_suggested_au_base_file_name(au_name)
        if suggested_base_name:
            suggested_name = suggested_base_name + '.kqte'
            suggested_path = os.path.join(default_dir, suggested_name)
    au_path, _ = QFileDialog.getSaveFileName(None, 'Save Kunquat effect',
                                             suggested_path,
                                             'Kunquat effects (*.kqte)')
    if not au_path:
        return None

    if not au_path.endswith('.kqte'):
        au_path += '.kqte'
    return au_path
Ejemplo n.º 19
0
    def set_controller(self, controller):
        self._controller = controller
        self._session = controller.get_session()
        self._share = controller.get_share()

        # Verify the existence of selected theme
        assert self._ui_model
        theme_id = self.get_selected_theme_id()
        theme_type, theme_name = theme_id
        if theme_type == 'share':
            theme_names = self._share.get_theme_names()
        elif theme_type == 'custom':
            theme_names = config.get_config().get_theme_names()
        else:
            return

        if theme_name not in theme_names:
            self.set_selected_theme_id(StyleManager._THEME_DEFAULT)
Ejemplo n.º 20
0
def get_effect_save_path(ui_model, au_name):
    default_dir = config.get_config().get_value('dir_effects') or ''
    suggested_path = default_dir
    if au_name:
        suggested_base_name = _get_suggested_au_base_file_name(au_name)
        if suggested_base_name:
            suggested_name = suggested_base_name + '.kqte'
            suggested_path = os.path.join(default_dir, suggested_name)

    caption = 'Save Kunquat effect'
    filters = FileDialog.TYPE_ALL_KQT | FileDialog.TYPE_ALL_PCM
    dialog = FileDialog(ui_model, FileDialog.MODE_SAVE, caption,
                        suggested_path, filters)
    au_path = dialog.get_path()
    if not au_path:
        return None

    return au_path
Ejemplo n.º 21
0
    def create_new_theme(self):
        cur_theme_data = self.get_theme_data(self.get_selected_theme_id(), cache=False)
        if 'name' in cur_theme_data:
            new_name = 'Copy of {}'.format(cur_theme_data['name'])
        else:
            new_name = 'New theme'

        new_theme_data = dict(StyleManager._STYLE_CONFIG_DEFAULTS)
        new_theme_data.update(cur_theme_data)
        new_theme_data['name'] = new_name

        cfg = config.get_config()
        new_theme_id = ('custom', cfg.make_theme_name(new_name, unique=True))
        if not new_theme_id[1]:
            print('could not create a new theme ID')
            return

        cfg.set_theme(new_theme_id[1], new_theme_data)

        return new_theme_id
Ejemplo n.º 22
0
    def start_tracked_note(self):
        event_type, param = self._get_event_type_and_param()
        if param == None:
            return

        if self._session.is_key_active(self._row, self._index):
            return

        selected_control = self._control_mgr.get_selected_control()
        if selected_control:
            selection = self._ui_model.get_selection()
            location = selection.get_location()
            ch_num = location.get_col_num()
            note = selected_control.start_tracked_note(ch_num, event_type,
                                                       param)
            self._session.activate_key_with_note(self._row, self._index, note)

        if self._sheet_mgr.is_editing_enabled():
            allow_chord_mode = config.get_config().get_value('chord_mode')
            if allow_chord_mode:
                self._sheet_mgr.set_chord_mode(True)
                self._session.set_chord_note(event_type, param, True)

            if (self._sheet_mgr.get_replace_mode()
                    and self._sheet_mgr.is_at_trigger()):
                trigger = self._sheet_mgr.get_selected_trigger()
                if ((event_type == 'n+'
                     and trigger.get_argument_type() == events.EVENT_ARG_PITCH)
                        or (event_type == 'h' and trigger.get_type() == 'h')):
                    new_trigger = Trigger(trigger.get_type(), str(param))
                    self._sheet_mgr.add_trigger(new_trigger)
                elif ((trigger.get_type() == 'n-')
                      or all(t in ('n+', 'h')
                             for t in (event_type, trigger.get_type()))):
                    new_trigger = Trigger(event_type, str(param))
                    self._sheet_mgr.add_trigger(new_trigger)
            else:
                trigger = Trigger(event_type, str(param))
                self._sheet_mgr.add_trigger(trigger)
Ejemplo n.º 23
0
    def get_theme_data(self, theme_id, cache=True):
        theme_type, theme_name = theme_id

        if theme_type == 'share':
            theme = self._share.get_theme(theme_name)
            return theme

        elif theme_type == 'custom':
            if self._session.cached_theme_id == theme_id:
                return self._session.cached_theme
            theme = config.get_config().get_theme(theme_name)
            if cache:
                self.try_flush_cached_style()
                self._session.cached_theme_id = theme_id
                self._session.cached_theme = theme
            return theme

        elif theme_type == 'default':
            theme = dict(StyleManager._STYLE_CONFIG_DEFAULTS)
            theme['name'] = 'Default'
            return theme

        assert False
Ejemplo n.º 24
0
 def _change_dir_text(self, text):
     cfg = config.get_config()
     cfg.set_value(self._conf_key, text)
     self._updater.signal_update('signal_settings_dir')
Ejemplo n.º 25
0
 def _change_dir_text(self, text):
     cfg = config.get_config()
     cfg.set_value(self._conf_key, text)
     self._updater.signal_update(set(['signal_settings_dir']))
Ejemplo n.º 26
0
 def get_input_control_view(self):
     config = get_config()
     return config.get_value('input_control_view')
Ejemplo n.º 27
0
 def _change_enabled(self, state):
     enabled = (state == Qt.Checked)
     config.get_config().set_value('chord_mode', enabled)
     self._updater.signal_update('signal_chord_mode_changed')
Ejemplo n.º 28
0
 def get_selected_theme_id(self):
     cfg = config.get_config()
     stored_theme_id = cfg.get_value('selected_theme_id')
     if not stored_theme_id:
         return ('default', 'default')
     return tuple(stored_theme_id)
Ejemplo n.º 29
0
 def get_custom_theme_ids(self):
     cfg = config.get_config()
     return [('custom', name) for name in cfg.get_theme_names()]
Ejemplo n.º 30
0
 def _get_config_style(self):
     cfg = config.get_config()
     return cfg.get_value('style') or {}
Ejemplo n.º 31
0
 def _change_dir_browse(self):
     cfg = config.get_config()
     cur_dir = cfg.get_value(self._conf_key) or os.getcwd()
     new_dir = QFileDialog.getExistingDirectory(None, '', cur_dir)
     if new_dir:
         self._change_dir_text(new_dir)
Ejemplo n.º 32
0
 def _set_config_style(self, style):
     cfg = config.get_config()
     cfg.set_value('style', style)
Ejemplo n.º 33
0
    def _update_enabled(self):
        enabled = config.get_config().get_value('chord_mode')

        old_block = self.blockSignals(True)
        self.setCheckState(Qt.Checked if enabled else Qt.Unchecked)
        self.blockSignals(old_block)
Ejemplo n.º 34
0
 def get_playback_cursor_following(self):
     return get_config().get_value('follow_playback_cursor')
Ejemplo n.º 35
0
 def get_playback_cursor_following(self):
     return get_config().get_value('follow_playback_cursor')
Ejemplo n.º 36
0
 def set_playback_cursor_following(self, enabled):
     get_config().set_value('follow_playback_cursor', enabled)
Ejemplo n.º 37
0
 def set_input_control_view(self, mode):
     config = get_config()
     config.set_value('input_control_view', mode)
Ejemplo n.º 38
0
 def _set_config_style(self, style):
     cfg = config.get_config()
     cfg.set_value('style', style)
Ejemplo n.º 39
0
 def set_playback_cursor_following(self, enabled):
     get_config().set_value('follow_playback_cursor', enabled)
Ejemplo n.º 40
0
 def _get_config_style(self):
     cfg = config.get_config()
     return cfg.get_value('style') or {}
Ejemplo n.º 41
0
 def set_selected_theme_id(self, theme_id):
     cfg = config.get_config()
     cfg.set_value('selected_theme_id', theme_id)
Ejemplo n.º 42
0
 def _change_dir_browse(self):
     cfg = config.get_config()
     cur_dir = cfg.get_value(self._conf_key) or os.getcwd()
     new_dir = QFileDialog.getExistingDirectory(dir=cur_dir)
     if new_dir:
         self._change_dir_text(new_dir)