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
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
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()
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()
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
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
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)
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)
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
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
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')
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
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
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()
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
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()
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
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
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)
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
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
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)
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
def _change_dir_text(self, text): cfg = config.get_config() cfg.set_value(self._conf_key, text) self._updater.signal_update('signal_settings_dir')
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']))
def get_input_control_view(self): config = get_config() return config.get_value('input_control_view')
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')
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)
def get_custom_theme_ids(self): cfg = config.get_config() return [('custom', name) for name in cfg.get_theme_names()]
def _get_config_style(self): cfg = config.get_config() return cfg.get_value('style') or {}
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)
def _set_config_style(self, style): cfg = config.get_config() cfg.set_value('style', style)
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)
def get_playback_cursor_following(self): return get_config().get_value('follow_playback_cursor')
def get_playback_cursor_following(self): return get_config().get_value('follow_playback_cursor')
def set_playback_cursor_following(self, enabled): get_config().set_value('follow_playback_cursor', enabled)
def set_input_control_view(self, mode): config = get_config() config.set_value('input_control_view', mode)
def _set_config_style(self, style): cfg = config.get_config() cfg.set_value('style', style)
def set_playback_cursor_following(self, enabled): get_config().set_value('follow_playback_cursor', enabled)
def _get_config_style(self): cfg = config.get_config() return cfg.get_value('style') or {}
def set_selected_theme_id(self, theme_id): cfg = config.get_config() cfg.set_value('selected_theme_id', theme_id)
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)