diff --git a/stt_voice_messages/gtk/config_dialog.py b/stt_voice_messages/gtk/config_dialog.py index 070d750..e88b77f 100644 --- a/stt_voice_messages/gtk/config_dialog.py +++ b/stt_voice_messages/gtk/config_dialog.py @@ -40,7 +40,6 @@ if TYPE_CHECKING: log = logging.getLogger('gajim.p.sttvm_config_dialog') - SUPPORTED_MODELS: dict[str, dict[str, typing.Union[list[str], Any, str]]] = { 'model_openaiwhisper': { 'moduls': ['whisper'], @@ -72,20 +71,25 @@ class Configuration: self._available_models: dict[ str, dict[str, typing.Union[list[str], Any, str]]] = {} self.check_available_moduls() - + @property def plugin(self) -> STTVoiceMessagesPlugin: return self._plugin @property - def available_models(self) -> dict[str, dict[str, typing.Union[list[str], Any, str]]]: + def available_models(self) -> dict[ + str, dict[str, typing.Union[list[str], Any, str]]]: return self._available_models def on_setting(self, value: Any, data: Any) -> None: if isinstance(value, str): value.strip() + log.debug('plugin config before:\n %s', self.plugin.config.data) + # TODO: Is 'modelname_key = value' a good design? self.plugin.config[data] = value + + # TODO: Apply setting only to specific instance self._plugin.config['model_instance'].on_setting(data, value) log.debug('plugin config after:\n %s', self.plugin.config.data) @@ -94,11 +98,13 @@ class Configuration: value.strip() log.debug('plugin config before:\n %s', self.plugin.config.data) - self._available_models[value]['model_instance'] = self._available_models[value]['class']() + self._available_models[value]['model_instance'] = \ + self._available_models[value]['class']() self.plugin.config['model_class'] = self._available_models[value][ 'class'] - self.plugin.config['model_instance'] = self._available_models[value]['model_instance'] + self.plugin.config['model_instance'] = self._available_models[value][ + 'model_instance'] self.on_setting(value, data) log.debug('plugin config after:\n %s', self.plugin.config.data) @@ -136,7 +142,6 @@ class Configuration: log.debug('models = %s', self._available_models) - class PreferenceBox(SettingsBox): def __init__(self, settings: list[Setting]) -> None: SettingsBox.__init__(self, None) @@ -185,7 +190,6 @@ class STTVoiceMessagesConfigDialog(Gtk.ApplicationWindow): class STTBehaviour(PreferenceBox): def __init__(self, config_dialog: STTVoiceMessagesConfigDialog) -> None: - settings = [ Setting(SettingKind.SWITCH, _('Auto Transcribe'), @@ -220,12 +224,12 @@ class STTVoiceMessagesConfigDialog(Gtk.ApplicationWindow): class OpenAIWhisperGeneral(PreferenceBox): def __init__(self, config_dialog: STTVoiceMessagesConfigDialog) -> None: - settings = [ Setting(SettingKind.POPOVER, _('Language Model Size'), SettingType.VALUE, - value=config_dialog.plugin.config['whisperai_model_size'], + value=config_dialog.plugin.config[ + 'whisperai_model_size'], data='whisperai_model_size', callback=config_dialog.config.on_setting, props={'entries': whisper.available_models()}), @@ -233,7 +237,8 @@ class STTVoiceMessagesConfigDialog(Gtk.ApplicationWindow): Setting(SettingKind.SWITCH, _('Translate'), SettingType.VALUE, - value=config_dialog.plugin.config['whisperai_translate'], + value=config_dialog.plugin.config[ + 'whisperai_translate'], data='whisperai_translate', callback=config_dialog.config.on_setting) ] @@ -246,5 +251,3 @@ class STTVoiceMessagesConfigDialog(Gtk.ApplicationWindow): pref = klass(self) # pyright: ignore pref_box.add(pref) self._prefs[ui_name] = pref - -