From 80a1ad5d1aa8f0a99d664b8c617011033bdc48fd Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Tue, 12 Sep 2023 07:14:36 +0900 Subject: [PATCH 1/6] =?UTF-8?q?[Add]=20Config=20Window:=20Auto=20Export=20?= =?UTF-8?q?Message=20Logs(LOG=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E5=87=BA?= =?UTF-8?q?=E5=8A=9B=E6=A9=9F=E8=83=BD)=E3=82=92=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E9=A0=85=E7=9B=AE=E3=81=AB=E8=BF=BD=E5=8A=A0=E3=80=82=E3=82=AB?= =?UTF-8?q?=E3=83=86=E3=82=B4=E3=83=AA=E3=83=BC=E3=81=AFOthers=E3=81=A8?= =?UTF-8?q?=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view.py | 7 +++++++ .../setting_box_others/createSettingBox_Others.py | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/view.py b/view.py index 91d5f827..f004f9b8 100644 --- a/view.py +++ b/view.py @@ -219,6 +219,12 @@ class View(): CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY=None, VAR_ENABLE_NOTICE_XSOVERLAY=BooleanVar(value=config.ENABLE_NOTICE_XSOVERLAY), + VAR_LABEL_ENABLE_AUTO_EXPORT_MESSAGE_LOGS=StringVar(value="Auto Export Message Logs"), + VAR_DESC_ENABLE_AUTO_EXPORT_MESSAGE_LOGS=StringVar(value="Automatically export the conversation messages as a text file."), + CALLBACK_SET_ENABLE_AUTO_EXPORT_MESSAGE_LOGS=None, + VAR_ENABLE_AUTO_EXPORT_MESSAGE_LOGS=BooleanVar(value=config.ENABLE_LOGGER), + + VAR_LABEL_MESSAGE_FORMAT=StringVar(value="Message Format"), VAR_DESC_MESSAGE_FORMAT=StringVar(value="You can change the decoration of the message you want to send. (Default: \"[message]([translation])\" )"), CALLBACK_SET_MESSAGE_FORMAT=None, @@ -314,6 +320,7 @@ class View(): # Others Tab self.view_variable.CALLBACK_SET_ENABLE_AUTO_CLEAR_MESSAGE_BOX = config_window["callback_set_enable_auto_clear_chatbox"] self.view_variable.CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY = config_window["callback_set_enable_notice_xsoverlay"] + self.view_variable.CALLBACK_SET_ENABLE_AUTO_EXPORT_MESSAGE_LOGS = config_window.get("callback_set_enable_auto_export_message_logs", None) self.view_variable.CALLBACK_SET_MESSAGE_FORMAT = config_window["callback_set_message_format"] # Advanced Settings Tab diff --git a/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/setting_box_others/createSettingBox_Others.py b/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/setting_box_others/createSettingBox_Others.py index dd730e92..311fbbbd 100644 --- a/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/setting_box_others/createSettingBox_Others.py +++ b/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/setting_box_others/createSettingBox_Others.py @@ -15,6 +15,9 @@ def createSettingBox_Others(setting_box_wrapper, config_window, settings, view_v def checkbox_notice_xsoverlay_callback(checkbox_box_widget): callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY, checkbox_box_widget.get()) + def checkbox_auto_export_message_logs_callback(checkbox_box_widget): + callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_AUTO_EXPORT_MESSAGE_LOGS, checkbox_box_widget.get()) + def entry_message_format_callback(value): callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY, value) @@ -44,6 +47,18 @@ def createSettingBox_Others(setting_box_wrapper, config_window, settings, view_v row+=1 + config_window.sb__auto_export_message_logs = createSettingBoxCheckbox( + parent_widget=setting_box_wrapper, + for_var_label_text=view_variable.VAR_LABEL_ENABLE_AUTO_EXPORT_MESSAGE_LOGS, + for_var_desc_text=view_variable.VAR_DESC_ENABLE_AUTO_EXPORT_MESSAGE_LOGS, + checkbox_attr_name="sb__checkbox_auto_export_message_logs", + command=lambda: checkbox_auto_export_message_logs_callback(config_window.sb__checkbox_auto_export_message_logs), + variable=view_variable.VAR_ENABLE_AUTO_EXPORT_MESSAGE_LOGS, + ) + config_window.sb__auto_export_message_logs.grid(row=row) + row+=1 + + config_window.sb__message_format = createSettingBoxEntry( parent_widget=setting_box_wrapper, for_var_label_text=view_variable.VAR_LABEL_MESSAGE_FORMAT, From e15b711464978b40e8bb5df5c81a855d7b1324ff Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Tue, 12 Sep 2023 09:00:36 +0900 Subject: [PATCH 2/6] =?UTF-8?q?[bugfix]=20view.py=20register=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E5=86=85=E3=81=A7=E3=80=81=E5=BC=95=E6=95=B0=E3=81=8C?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E3=81=95=E3=82=8C=E3=81=AA=E3=81=8B=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E5=A0=B4=E5=90=88=E3=81=A7=E3=82=82=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E3=81=8C=E3=81=A7=E3=81=AA=E3=81=84=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=87=A6=E7=90=86=E3=82=92=E5=A4=89=E6=9B=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view.py | 111 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 60 insertions(+), 51 deletions(-) diff --git a/view.py b/view.py index f004f9b8..06545ac8 100644 --- a/view.py +++ b/view.py @@ -245,29 +245,36 @@ class View(): - def register(self, sidebar_features, language_presets, entry_message_box_commands, config_window): + def register(self, sidebar_features=None, language_presets=None, entry_message_box_commands=None, config_window=None): self.view_variable.CALLBACK_TOGGLE_MAIN_WINDOW_SIDEBAR_COMPACT_MODE = self._toggleMainWindowSidebarCompactMode - self.view_variable.CALLBACK_TOGGLE_TRANSLATION = sidebar_features["callback_toggle_translation"] - self.view_variable.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = sidebar_features["callback_toggle_transcription_send"] - self.view_variable.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE = sidebar_features["callback_toggle_transcription_receive"] - self.view_variable.CALLBACK_TOGGLE_FOREGROUND = sidebar_features["callback_toggle_foreground"] + if sidebar_features is not None: + self.view_variable.CALLBACK_TOGGLE_TRANSLATION = sidebar_features.get("callback_toggle_translation", None) + self.view_variable.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = sidebar_features.get("callback_toggle_transcription_send", None) + self.view_variable.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE = sidebar_features.get("callback_toggle_transcription_receive", None) + self.view_variable.CALLBACK_TOGGLE_FOREGROUND = sidebar_features.get("callback_toggle_foreground", None) + + if language_presets is not None: + self.view_variable.CALLBACK_SELECTED_YOUR_LANGUAGE = language_presets.get("callback_your_language", None) + self.view_variable.CALLBACK_SELECTED_TARGET_LANGUAGE = language_presets.get("callback_target_language", None) + language_presets.get("values", None) and self.updateList_selectableLanguages(language_presets["values"]) + + self.view_variable.CALLBACK_SELECTED_LANGUAGE_PRESET_TAB = language_presets.get("callback_selected_language_preset_tab", None) - self.view_variable.CALLBACK_SELECTED_YOUR_LANGUAGE = language_presets["callback_your_language"] - self.view_variable.CALLBACK_SELECTED_TARGET_LANGUAGE = language_presets["callback_target_language"] - self.updateList_selectableLanguages(language_presets["values"]) self.updateGuiVariableByPresetTabNo(config.SELECTED_TAB_NO) - - self.view_variable.CALLBACK_SELECTED_LANGUAGE_PRESET_TAB = language_presets["callback_selected_language_preset_tab"] vrct_gui.setDefaultActiveLanguagePresetTab(tab_no=config.SELECTED_TAB_NO) + + self.view_variable.CALLBACK_OPEN_SELECTABLE_YOUR_LANGUAGE_WINDOW = self.openSelectableLanguagesWindow_YourLanguage self.view_variable.CALLBACK_OPEN_SELECTABLE_TARGET_LANGUAGE_WINDOW = self.openSelectableLanguagesWindow_TargetLanguage entry_message_box = getattr(vrct_gui, "entry_message_box") - entry_message_box.bind("", entry_message_box_commands["bind_Return"]) - entry_message_box.bind("", entry_message_box_commands["bind_Any_KeyPress"]) + if entry_message_box_commands is not None: + entry_message_box.bind("", entry_message_box_commands.get("bind_Return")) + entry_message_box.bind("", entry_message_box_commands.get("bind_Any_KeyPress")) + entry_message_box.bind("", self._foregroundOffForcefully) entry_message_box.bind("", self._foregroundOnForcefully) @@ -275,57 +282,59 @@ class View(): # Config Window # Compact Mode Switch - self.view_variable.CALLBACK_ENABLE_CONFIG_WINDOW_COMPACT_MODE = config_window["callback_disable_config_window_compact_mode"] - self.view_variable.CALLBACK_DISABLE_CONFIG_WINDOW_COMPACT_MODE = config_window["callback_enable_config_window_compact_mode"] + if config_window is not None: + + self.view_variable.CALLBACK_ENABLE_CONFIG_WINDOW_COMPACT_MODE = config_window.get("callback_disable_config_window_compact_mode", None) + self.view_variable.CALLBACK_DISABLE_CONFIG_WINDOW_COMPACT_MODE = config_window.get("callback_enable_config_window_compact_mode", None) - # Appearance Tab - self.view_variable.CALLBACK_SET_TRANSPARENCY = config_window["callback_set_transparency"] + # Appearance Tab + self.view_variable.CALLBACK_SET_TRANSPARENCY = config_window.get("callback_set_transparency", None) - self.view_variable.CALLBACK_SET_APPEARANCE = config_window["callback_set_appearance"] - self.view_variable.CALLBACK_SET_UI_SCALING = config_window["callback_set_ui_scaling"] - self.view_variable.CALLBACK_SET_FONT_FAMILY = config_window["callback_set_font_family"] - self.view_variable.CALLBACK_SET_UI_LANGUAGE = config_window["callback_set_ui_language"] + self.view_variable.CALLBACK_SET_APPEARANCE = config_window.get("callback_set_appearance", None) + self.view_variable.CALLBACK_SET_UI_SCALING = config_window.get("callback_set_ui_scaling", None) + self.view_variable.CALLBACK_SET_FONT_FAMILY = config_window.get("callback_set_font_family", None) + self.view_variable.CALLBACK_SET_UI_LANGUAGE = config_window.get("callback_set_ui_language", None) - # Translation Tab - self.view_variable.CALLBACK_SET_DEEPL_AUTHKEY = config_window["callback_set_deepl_authkey"] + # Translation Tab + self.view_variable.CALLBACK_SET_DEEPL_AUTHKEY = config_window.get("callback_set_deepl_authkey", None) - # Transcription Tab (Mic) - self.view_variable.CALLBACK_SET_MIC_HOST = config_window["callback_set_mic_host"] - self.updateList_MicHost(config_window["list_mic_host"]) + # Transcription Tab (Mic) + self.view_variable.CALLBACK_SET_MIC_HOST = config_window.get("callback_set_mic_host", None) + config_window.get("list_mic_host", None) and self.updateList_MicHost(config_window["list_mic_host"]) - self.view_variable.CALLBACK_SET_MIC_DEVICE = config_window["callback_set_mic_device"] - self.updateList_MicDevice(config_window["list_mic_device"]) + self.view_variable.CALLBACK_SET_MIC_DEVICE = config_window.get("callback_set_mic_device", None) + config_window.get("list_mic_device", None) and self.updateList_MicDevice(config_window["list_mic_device"]) - self.view_variable.CALLBACK_SET_MIC_ENERGY_THRESHOLD = config_window["callback_set_mic_energy_threshold"] - self.view_variable.CALLBACK_SET_MIC_DYNAMIC_ENERGY_THRESHOLD = config_window["callback_set_mic_dynamic_energy_threshold"] - self.view_variable.CALLBACK_CHECK_MIC_THRESHOLD = config_window["callback_check_mic_threshold"] - self.view_variable.CALLBACK_SET_MIC_RECORD_TIMEOUT = config_window["callback_set_mic_record_timeout"] - self.view_variable.CALLBACK_SET_MIC_PHRASE_TIMEOUT = config_window["callback_set_mic_phrase_timeout"] - self.view_variable.CALLBACK_SET_MIC_MAX_PHRASES = config_window["callback_set_mic_max_phrases"] - self.view_variable.CALLBACK_SET_MIC_WORD_FILTER = config_window["callback_set_mic_word_filter"] + self.view_variable.CALLBACK_SET_MIC_ENERGY_THRESHOLD = config_window.get("callback_set_mic_energy_threshold", None) + self.view_variable.CALLBACK_SET_MIC_DYNAMIC_ENERGY_THRESHOLD = config_window.get("callback_set_mic_dynamic_energy_threshold", None) + self.view_variable.CALLBACK_CHECK_MIC_THRESHOLD = config_window.get("callback_check_mic_threshold", None) + self.view_variable.CALLBACK_SET_MIC_RECORD_TIMEOUT = config_window.get("callback_set_mic_record_timeout", None) + self.view_variable.CALLBACK_SET_MIC_PHRASE_TIMEOUT = config_window.get("callback_set_mic_phrase_timeout", None) + self.view_variable.CALLBACK_SET_MIC_MAX_PHRASES = config_window.get("callback_set_mic_max_phrases", None) + self.view_variable.CALLBACK_SET_MIC_WORD_FILTER = config_window.get("callback_set_mic_word_filter", None) - # Transcription Tab (Speaker) - self.view_variable.CALLBACK_SET_SPEAKER_DEVICE = config_window["callback_set_speaker_device"] - self.updateList_SpeakerDevice(config_window["list_speaker_device"]) + # Transcription Tab (Speaker) + self.view_variable.CALLBACK_SET_SPEAKER_DEVICE = config_window.get("callback_set_speaker_device", None) + config_window.get("list_speaker_device", None) and self.updateList_SpeakerDevice(config_window["list_speaker_device"]) - self.view_variable.CALLBACK_SET_SPEAKER_ENERGY_THRESHOLD = config_window["callback_set_speaker_energy_threshold"] - self.view_variable.CALLBACK_SET_SPEAKER_DYNAMIC_ENERGY_THRESHOLD = config_window["callback_set_speaker_dynamic_energy_threshold"] - self.view_variable.CALLBACK_CHECK_SPEAKER_THRESHOLD = config_window["callback_check_speaker_threshold"] - self.view_variable.CALLBACK_SET_SPEAKER_RECORD_TIMEOUT = config_window["callback_set_speaker_record_timeout"] - self.view_variable.CALLBACK_SET_SPEAKER_PHRASE_TIMEOUT = config_window["callback_set_speaker_phrase_timeout"] - self.view_variable.CALLBACK_SET_SPEAKER_MAX_PHRASES = config_window["callback_set_speaker_max_phrases"] + self.view_variable.CALLBACK_SET_SPEAKER_ENERGY_THRESHOLD = config_window.get("callback_set_speaker_energy_threshold", None) + self.view_variable.CALLBACK_SET_SPEAKER_DYNAMIC_ENERGY_THRESHOLD = config_window.get("callback_set_speaker_dynamic_energy_threshold", None) + self.view_variable.CALLBACK_CHECK_SPEAKER_THRESHOLD = config_window.get("callback_check_speaker_threshold", None) + self.view_variable.CALLBACK_SET_SPEAKER_RECORD_TIMEOUT = config_window.get("callback_set_speaker_record_timeout", None) + self.view_variable.CALLBACK_SET_SPEAKER_PHRASE_TIMEOUT = config_window.get("callback_set_speaker_phrase_timeout", None) + self.view_variable.CALLBACK_SET_SPEAKER_MAX_PHRASES = config_window.get("callback_set_speaker_max_phrases", None) - # Others Tab - self.view_variable.CALLBACK_SET_ENABLE_AUTO_CLEAR_MESSAGE_BOX = config_window["callback_set_enable_auto_clear_chatbox"] - self.view_variable.CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY = config_window["callback_set_enable_notice_xsoverlay"] - self.view_variable.CALLBACK_SET_ENABLE_AUTO_EXPORT_MESSAGE_LOGS = config_window.get("callback_set_enable_auto_export_message_logs", None) - self.view_variable.CALLBACK_SET_MESSAGE_FORMAT = config_window["callback_set_message_format"] + # Others Tab + self.view_variable.CALLBACK_SET_ENABLE_AUTO_CLEAR_MESSAGE_BOX = config_window.get("callback_set_enable_auto_clear_chatbox", None) + self.view_variable.CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY = config_window.get("callback_set_enable_notice_xsoverlay", None) + self.view_variable.CALLBACK_SET_ENABLE_AUTO_EXPORT_MESSAGE_LOGS = config_window.get("callback_set_enable_auto_export_message_logs", None) + self.view_variable.CALLBACK_SET_MESSAGE_FORMAT = config_window.get("callback_set_message_format", None) - # Advanced Settings Tab - self.view_variable.CALLBACK_SET_OSC_IP_ADDRESS = config_window["callback_set_osc_ip_address"] - self.view_variable.CALLBACK_SET_OSC_PORT = config_window["callback_set_osc_port"] + # Advanced Settings Tab + self.view_variable.CALLBACK_SET_OSC_IP_ADDRESS = config_window.get("callback_set_osc_ip_address", None) + self.view_variable.CALLBACK_SET_OSC_PORT = config_window.get("callback_set_osc_port", None) From 73d8df91668da1b87510619d79b8f4d70ff4cd67 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Tue, 12 Sep 2023 09:16:18 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[Chore]=20view.py=20register=E5=BC=95?= =?UTF-8?q?=E6=95=B0=E3=81=AE=E5=A4=89=E6=95=B0=E5=90=8D=E5=A4=89=E6=9B=B4?= =?UTF-8?q?.=20config=5Fwindow=E3=81=AA=E3=81=A9=E7=89=B9=E3=81=AB?= =?UTF-8?q?=E3=80=81=E5=A4=89=E6=95=B0=E5=90=8D=E8=A2=AB=E3=82=8A=E3=82=92?= =?UTF-8?q?=E9=98=B2=E3=81=90=E3=81=9F=E3=82=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 8 ++--- view.py | 102 ++++++++++++++++++++++++++++++-------------------------- 2 files changed, 58 insertions(+), 52 deletions(-) diff --git a/main.py b/main.py index b86fc746..7e049c3f 100644 --- a/main.py +++ b/main.py @@ -426,14 +426,14 @@ if config.ENABLE_LOGGER is True: # set UI and callback view.register( - sidebar_features={ + sidebar_features_registers={ "callback_toggle_translation": callbackToggleTranslation, "callback_toggle_transcription_send": callbackToggleTranscriptionSend, "callback_toggle_transcription_receive": callbackToggleTranscriptionReceive, "callback_toggle_foreground": callbackToggleForeground, }, - language_presets={ + language_presets_registers={ "callback_your_language": setYourLanguageAndCountry, "callback_target_language": setTargetLanguageAndCountry, "values": model.getListLanguageAndCountry(), @@ -441,12 +441,12 @@ view.register( "callback_selected_language_preset_tab": callbackSelectedLanguagePresetTab, }, - entry_message_box_commands={ + entry_message_box_registers={ "bind_Return": messageBoxPressKeyEnter, "bind_Any_KeyPress": messageBoxPressKeyAny, }, - config_window={ + config_window_registers={ # Compact Mode Switch "callback_disable_config_window_compact_mode": callbackEnableConfigWindowCompactMode, "callback_enable_config_window_compact_mode": callbackDisableConfigWindowCompactMode, diff --git a/view.py b/view.py index 06545ac8..4d24063f 100644 --- a/view.py +++ b/view.py @@ -245,22 +245,28 @@ class View(): - def register(self, sidebar_features=None, language_presets=None, entry_message_box_commands=None, config_window=None): + def register( + self, + sidebar_features_registers=None, + language_presets_registers=None, + entry_message_box_registers=None, + config_window_registers=None + ): self.view_variable.CALLBACK_TOGGLE_MAIN_WINDOW_SIDEBAR_COMPACT_MODE = self._toggleMainWindowSidebarCompactMode - if sidebar_features is not None: - self.view_variable.CALLBACK_TOGGLE_TRANSLATION = sidebar_features.get("callback_toggle_translation", None) - self.view_variable.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = sidebar_features.get("callback_toggle_transcription_send", None) - self.view_variable.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE = sidebar_features.get("callback_toggle_transcription_receive", None) - self.view_variable.CALLBACK_TOGGLE_FOREGROUND = sidebar_features.get("callback_toggle_foreground", None) + if sidebar_features_registers is not None: + self.view_variable.CALLBACK_TOGGLE_TRANSLATION = sidebar_features_registers.get("callback_toggle_translation", None) + self.view_variable.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = sidebar_features_registers.get("callback_toggle_transcription_send", None) + self.view_variable.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE = sidebar_features_registers.get("callback_toggle_transcription_receive", None) + self.view_variable.CALLBACK_TOGGLE_FOREGROUND = sidebar_features_registers.get("callback_toggle_foreground", None) - if language_presets is not None: - self.view_variable.CALLBACK_SELECTED_YOUR_LANGUAGE = language_presets.get("callback_your_language", None) - self.view_variable.CALLBACK_SELECTED_TARGET_LANGUAGE = language_presets.get("callback_target_language", None) - language_presets.get("values", None) and self.updateList_selectableLanguages(language_presets["values"]) + if language_presets_registers is not None: + self.view_variable.CALLBACK_SELECTED_YOUR_LANGUAGE = language_presets_registers.get("callback_your_language", None) + self.view_variable.CALLBACK_SELECTED_TARGET_LANGUAGE = language_presets_registers.get("callback_target_language", None) + language_presets_registers.get("values", None) and self.updateList_selectableLanguages(language_presets_registers["values"]) - self.view_variable.CALLBACK_SELECTED_LANGUAGE_PRESET_TAB = language_presets.get("callback_selected_language_preset_tab", None) + self.view_variable.CALLBACK_SELECTED_LANGUAGE_PRESET_TAB = language_presets_registers.get("callback_selected_language_preset_tab", None) self.updateGuiVariableByPresetTabNo(config.SELECTED_TAB_NO) vrct_gui.setDefaultActiveLanguagePresetTab(tab_no=config.SELECTED_TAB_NO) @@ -271,9 +277,9 @@ class View(): self.view_variable.CALLBACK_OPEN_SELECTABLE_TARGET_LANGUAGE_WINDOW = self.openSelectableLanguagesWindow_TargetLanguage entry_message_box = getattr(vrct_gui, "entry_message_box") - if entry_message_box_commands is not None: - entry_message_box.bind("", entry_message_box_commands.get("bind_Return")) - entry_message_box.bind("", entry_message_box_commands.get("bind_Any_KeyPress")) + if entry_message_box_registers is not None: + entry_message_box.bind("", entry_message_box_registers.get("bind_Return")) + entry_message_box.bind("", entry_message_box_registers.get("bind_Any_KeyPress")) entry_message_box.bind("", self._foregroundOffForcefully) @@ -282,59 +288,59 @@ class View(): # Config Window # Compact Mode Switch - if config_window is not None: + if config_window_registers is not None: - self.view_variable.CALLBACK_ENABLE_CONFIG_WINDOW_COMPACT_MODE = config_window.get("callback_disable_config_window_compact_mode", None) - self.view_variable.CALLBACK_DISABLE_CONFIG_WINDOW_COMPACT_MODE = config_window.get("callback_enable_config_window_compact_mode", None) + self.view_variable.CALLBACK_ENABLE_CONFIG_WINDOW_COMPACT_MODE = config_window_registers.get("callback_disable_config_window_compact_mode", None) + self.view_variable.CALLBACK_DISABLE_CONFIG_WINDOW_COMPACT_MODE = config_window_registers.get("callback_enable_config_window_compact_mode", None) # Appearance Tab - self.view_variable.CALLBACK_SET_TRANSPARENCY = config_window.get("callback_set_transparency", None) + self.view_variable.CALLBACK_SET_TRANSPARENCY = config_window_registers.get("callback_set_transparency", None) - self.view_variable.CALLBACK_SET_APPEARANCE = config_window.get("callback_set_appearance", None) - self.view_variable.CALLBACK_SET_UI_SCALING = config_window.get("callback_set_ui_scaling", None) - self.view_variable.CALLBACK_SET_FONT_FAMILY = config_window.get("callback_set_font_family", None) - self.view_variable.CALLBACK_SET_UI_LANGUAGE = config_window.get("callback_set_ui_language", None) + self.view_variable.CALLBACK_SET_APPEARANCE = config_window_registers.get("callback_set_appearance", None) + self.view_variable.CALLBACK_SET_UI_SCALING = config_window_registers.get("callback_set_ui_scaling", None) + self.view_variable.CALLBACK_SET_FONT_FAMILY = config_window_registers.get("callback_set_font_family", None) + self.view_variable.CALLBACK_SET_UI_LANGUAGE = config_window_registers.get("callback_set_ui_language", None) # Translation Tab - self.view_variable.CALLBACK_SET_DEEPL_AUTHKEY = config_window.get("callback_set_deepl_authkey", None) + self.view_variable.CALLBACK_SET_DEEPL_AUTHKEY = config_window_registers.get("callback_set_deepl_authkey", None) # Transcription Tab (Mic) - self.view_variable.CALLBACK_SET_MIC_HOST = config_window.get("callback_set_mic_host", None) - config_window.get("list_mic_host", None) and self.updateList_MicHost(config_window["list_mic_host"]) + self.view_variable.CALLBACK_SET_MIC_HOST = config_window_registers.get("callback_set_mic_host", None) + config_window_registers.get("list_mic_host", None) and self.updateList_MicHost(config_window_registers["list_mic_host"]) - self.view_variable.CALLBACK_SET_MIC_DEVICE = config_window.get("callback_set_mic_device", None) - config_window.get("list_mic_device", None) and self.updateList_MicDevice(config_window["list_mic_device"]) + self.view_variable.CALLBACK_SET_MIC_DEVICE = config_window_registers.get("callback_set_mic_device", None) + config_window_registers.get("list_mic_device", None) and self.updateList_MicDevice(config_window_registers["list_mic_device"]) - self.view_variable.CALLBACK_SET_MIC_ENERGY_THRESHOLD = config_window.get("callback_set_mic_energy_threshold", None) - self.view_variable.CALLBACK_SET_MIC_DYNAMIC_ENERGY_THRESHOLD = config_window.get("callback_set_mic_dynamic_energy_threshold", None) - self.view_variable.CALLBACK_CHECK_MIC_THRESHOLD = config_window.get("callback_check_mic_threshold", None) - self.view_variable.CALLBACK_SET_MIC_RECORD_TIMEOUT = config_window.get("callback_set_mic_record_timeout", None) - self.view_variable.CALLBACK_SET_MIC_PHRASE_TIMEOUT = config_window.get("callback_set_mic_phrase_timeout", None) - self.view_variable.CALLBACK_SET_MIC_MAX_PHRASES = config_window.get("callback_set_mic_max_phrases", None) - self.view_variable.CALLBACK_SET_MIC_WORD_FILTER = config_window.get("callback_set_mic_word_filter", None) + self.view_variable.CALLBACK_SET_MIC_ENERGY_THRESHOLD = config_window_registers.get("callback_set_mic_energy_threshold", None) + self.view_variable.CALLBACK_SET_MIC_DYNAMIC_ENERGY_THRESHOLD = config_window_registers.get("callback_set_mic_dynamic_energy_threshold", None) + self.view_variable.CALLBACK_CHECK_MIC_THRESHOLD = config_window_registers.get("callback_check_mic_threshold", None) + self.view_variable.CALLBACK_SET_MIC_RECORD_TIMEOUT = config_window_registers.get("callback_set_mic_record_timeout", None) + self.view_variable.CALLBACK_SET_MIC_PHRASE_TIMEOUT = config_window_registers.get("callback_set_mic_phrase_timeout", None) + self.view_variable.CALLBACK_SET_MIC_MAX_PHRASES = config_window_registers.get("callback_set_mic_max_phrases", None) + self.view_variable.CALLBACK_SET_MIC_WORD_FILTER = config_window_registers.get("callback_set_mic_word_filter", None) # Transcription Tab (Speaker) - self.view_variable.CALLBACK_SET_SPEAKER_DEVICE = config_window.get("callback_set_speaker_device", None) - config_window.get("list_speaker_device", None) and self.updateList_SpeakerDevice(config_window["list_speaker_device"]) + self.view_variable.CALLBACK_SET_SPEAKER_DEVICE = config_window_registers.get("callback_set_speaker_device", None) + config_window_registers.get("list_speaker_device", None) and self.updateList_SpeakerDevice(config_window_registers["list_speaker_device"]) - self.view_variable.CALLBACK_SET_SPEAKER_ENERGY_THRESHOLD = config_window.get("callback_set_speaker_energy_threshold", None) - self.view_variable.CALLBACK_SET_SPEAKER_DYNAMIC_ENERGY_THRESHOLD = config_window.get("callback_set_speaker_dynamic_energy_threshold", None) - self.view_variable.CALLBACK_CHECK_SPEAKER_THRESHOLD = config_window.get("callback_check_speaker_threshold", None) - self.view_variable.CALLBACK_SET_SPEAKER_RECORD_TIMEOUT = config_window.get("callback_set_speaker_record_timeout", None) - self.view_variable.CALLBACK_SET_SPEAKER_PHRASE_TIMEOUT = config_window.get("callback_set_speaker_phrase_timeout", None) - self.view_variable.CALLBACK_SET_SPEAKER_MAX_PHRASES = config_window.get("callback_set_speaker_max_phrases", None) + self.view_variable.CALLBACK_SET_SPEAKER_ENERGY_THRESHOLD = config_window_registers.get("callback_set_speaker_energy_threshold", None) + self.view_variable.CALLBACK_SET_SPEAKER_DYNAMIC_ENERGY_THRESHOLD = config_window_registers.get("callback_set_speaker_dynamic_energy_threshold", None) + self.view_variable.CALLBACK_CHECK_SPEAKER_THRESHOLD = config_window_registers.get("callback_check_speaker_threshold", None) + self.view_variable.CALLBACK_SET_SPEAKER_RECORD_TIMEOUT = config_window_registers.get("callback_set_speaker_record_timeout", None) + self.view_variable.CALLBACK_SET_SPEAKER_PHRASE_TIMEOUT = config_window_registers.get("callback_set_speaker_phrase_timeout", None) + self.view_variable.CALLBACK_SET_SPEAKER_MAX_PHRASES = config_window_registers.get("callback_set_speaker_max_phrases", None) # Others Tab - self.view_variable.CALLBACK_SET_ENABLE_AUTO_CLEAR_MESSAGE_BOX = config_window.get("callback_set_enable_auto_clear_chatbox", None) - self.view_variable.CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY = config_window.get("callback_set_enable_notice_xsoverlay", None) - self.view_variable.CALLBACK_SET_ENABLE_AUTO_EXPORT_MESSAGE_LOGS = config_window.get("callback_set_enable_auto_export_message_logs", None) - self.view_variable.CALLBACK_SET_MESSAGE_FORMAT = config_window.get("callback_set_message_format", None) + self.view_variable.CALLBACK_SET_ENABLE_AUTO_CLEAR_MESSAGE_BOX = config_window_registers.get("callback_set_enable_auto_clear_chatbox", None) + self.view_variable.CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY = config_window_registers.get("callback_set_enable_notice_xsoverlay", None) + self.view_variable.CALLBACK_SET_ENABLE_AUTO_EXPORT_MESSAGE_LOGS = config_window_registers.get("callback_set_enable_auto_export_message_logs", None) + self.view_variable.CALLBACK_SET_MESSAGE_FORMAT = config_window_registers.get("callback_set_message_format", None) # Advanced Settings Tab - self.view_variable.CALLBACK_SET_OSC_IP_ADDRESS = config_window.get("callback_set_osc_ip_address", None) - self.view_variable.CALLBACK_SET_OSC_PORT = config_window.get("callback_set_osc_port", None) + self.view_variable.CALLBACK_SET_OSC_IP_ADDRESS = config_window_registers.get("callback_set_osc_ip_address", None) + self.view_variable.CALLBACK_SET_OSC_PORT = config_window_registers.get("callback_set_osc_port", None) From ae4e77d3902c71ff3e6c04a01b4217122bd61e9d Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Tue, 12 Sep 2023 09:42:23 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=90=9B[bugfix]=20model=20INPUT=5FMIC?= =?UTF-8?q?=5FRECORD=5FTIMEOUT=E3=81=A8INPUT=5FMIC=5FPHRASE=5FTIMEOUT?= =?UTF-8?q?=E3=81=AE=E5=A4=A7=E5=B0=8F=E3=81=AB=E3=82=88=E3=82=8B=E6=96=87?= =?UTF-8?q?=E5=AD=97=E8=B5=B7=E3=81=93=E3=81=97=E3=81=AE=E3=83=90=E3=82=B0?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/model.py b/model.py index 99923c2c..6eb1e5a6 100644 --- a/model.py +++ b/model.py @@ -215,17 +215,23 @@ class Model: def startMicTranscript(self, fnc): mic_audio_queue = Queue() + device = [device for device in getInputDevices()[config.CHOICE_MIC_HOST] if device["name"] == config.CHOICE_MIC_DEVICE][0] + record_timeout = config.INPUT_MIC_RECORD_TIMEOUT + phase_timeout = config.INPUT_MIC_PHRASE_TIMEOUT + if record_timeout > phase_timeout: + record_timeout = phase_timeout + self.mic_audio_recorder = SelectedMicRecorder( - [device for device in getInputDevices()[config.CHOICE_MIC_HOST] if device["name"] == config.CHOICE_MIC_DEVICE][0], - config.INPUT_MIC_ENERGY_THRESHOLD, - config.INPUT_MIC_DYNAMIC_ENERGY_THRESHOLD, - config.INPUT_MIC_RECORD_TIMEOUT, + device=device, + energy_threshold=config.INPUT_MIC_ENERGY_THRESHOLD, + dynamic_energy_threshold=config.INPUT_MIC_DYNAMIC_ENERGY_THRESHOLD, + record_timeout=record_timeout, ) self.mic_audio_recorder.recordIntoQueue(mic_audio_queue) mic_transcriber = AudioTranscriber( speaker=False, source=self.mic_audio_recorder.source, - phrase_timeout=config.INPUT_MIC_PHRASE_TIMEOUT, + phrase_timeout=phase_timeout, max_phrases=config.INPUT_MIC_MAX_PHRASES, ) def sendMicTranscript(): @@ -274,17 +280,23 @@ class Model: def startSpeakerTranscript(self, fnc): spk_audio_queue = Queue() spk_device = [device for device in getOutputDevices() if device["name"] == config.CHOICE_SPEAKER_DEVICE][0] + + record_timeout = config.INPUT_SPEAKER_RECORD_TIMEOUT + phase_timeout = config.INPUT_SPEAKER_PHRASE_TIMEOUT + if record_timeout > phase_timeout: + record_timeout = phase_timeout + self.spk_audio_recorder = SelectedSpeakerRecorder( - spk_device, - config.INPUT_SPEAKER_ENERGY_THRESHOLD, - config.INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD, - config.INPUT_SPEAKER_RECORD_TIMEOUT, + device=spk_device, + energy_threshold=config.INPUT_SPEAKER_ENERGY_THRESHOLD, + dynamic_energy_threshold=config.INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD, + record_timeout=record_timeout, ) self.spk_audio_recorder.recordIntoQueue(spk_audio_queue) spk_transcriber = AudioTranscriber( speaker=True, source=self.spk_audio_recorder.source, - phrase_timeout=config.INPUT_SPEAKER_PHRASE_TIMEOUT, + phrase_timeout=phase_timeout, max_phrases=config.INPUT_SPEAKER_MAX_PHRASES, ) def sendSpkTranscript(): From 6c88a541e13483dd11533b1f22956e9f91448387 Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Tue, 12 Sep 2023 10:34:48 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=90=9B[bugfix]=20model=20logger?= =?UTF-8?q?=E3=81=AE=E5=86=8D=E5=8B=95=E4=BD=9C=E6=99=82=E3=81=AB=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=8C=E7=94=9F=E6=88=90=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=80=81logs=E3=83=95=E3=82=A9=E3=83=AB=E3=83=80=E3=81=B8?= =?UTF-8?q?=E3=81=AE=E3=83=91=E3=82=B9=E3=82=82=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/model.py b/model.py index 6eb1e5a6..559306de 100644 --- a/model.py +++ b/model.py @@ -1,4 +1,6 @@ +import sys from os import makedirs +from os import path as os_path from datetime import datetime from logging import getLogger, FileHandler, Formatter, INFO from time import sleep @@ -82,15 +84,16 @@ class Model: return result def startLogger(self): - makedirs("./logs", exist_ok=True) + makedirs(os_path.join(os_path.dirname(sys.argv[0]), "logs"), exist_ok=True) logger = getLogger() logger.setLevel(INFO) - file_name = f"./logs/{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.log" + file_name = os_path.join(os_path.dirname(sys.argv[0]), "logs", f"{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.log") file_handler = FileHandler(file_name, encoding="utf-8", delay=True) formatter = Formatter("[%(asctime)s] %(message)s") file_handler.setFormatter(formatter) logger.addHandler(file_handler) self.logger = logger + self.logger.disabled = False def stopLogger(self): self.logger.disabled = True From 9975dc6ba0398d2e402e0d295c25b6b7e85ea0eb Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Tue, 12 Sep 2023 10:36:00 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=91=8D[Update]=20main=20logger?= =?UTF-8?q?=E3=81=AEcallback=E3=82=92=E8=A8=AD=E5=AE=9A/=E7=BF=BB=E8=A8=B3?= =?UTF-8?q?=E3=82=92=E4=BD=BF=E3=82=8F=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88?= =?UTF-8?q?=E3=81=AB=E7=BF=BB=E8=A8=B3=E9=83=A8=E5=88=86=E3=81=AE()?= =?UTF-8?q?=E3=82=92log=E3=81=AB=E6=AE=8B=E3=81=95=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index 7e049c3f..e830b054 100644 --- a/main.py +++ b/main.py @@ -33,7 +33,9 @@ def sendMicMessage(message): view.printToTextbox_SentMessage(message, translation) if config.ENABLE_LOGGER is True: - model.logger.info(f"[SEND] {message} ({translation})") + if len(translation) > 0: + translation = f" ({translation})" + model.logger.info(f"[SEND] {message}{translation}") def startTranscriptionSendMessage(): model.startMicTranscript(sendMicMessage) @@ -61,7 +63,9 @@ def receiveSpeakerMessage(message): model.notificationXSOverlay(xsoverlay_message) view.printToTextbox_ReceivedMessage(message, translation) if config.ENABLE_LOGGER is True: - model.logger.info(f"[RECEIVE] {message} ({translation})") + if len(translation) > 0: + translation = f" ({translation})" + model.logger.info(f"[RECEIVE] {message}{translation}") def startTranscriptionReceiveMessage(): model.startSpeakerTranscript(receiveSpeakerMessage) @@ -97,7 +101,9 @@ def sendChatMessage(message): # update textbox message log view.printToTextbox_SentMessage(message, translation) if config.ENABLE_LOGGER is True: - model.logger.info(f"[SEND] {message} ({translation})") + if len(translation) > 0: + translation = f" ({translation})" + model.logger.info(f"[SEND] {message}{translation}") # delete message in entry message box if config.ENABLE_AUTO_CLEAR_MESSAGE_BOX is True: @@ -386,6 +392,15 @@ def callbackSetEnableNoticeXsoverlay(value): print("callbackSetEnableNoticeXsoverlay", value) config.ENABLE_NOTICE_XSOVERLAY = value +def callbackSetEnableAutoExportMessageLogs(value): + print("callbackSetEnableAutoExportMessageLogs", value) + config.ENABLE_LOGGER = value + + if config.ENABLE_LOGGER is True: + model.startLogger() + else: + model.stopLogger() + def callbackSetMessageFormat(value): print("callbackSetMessageFormat", value) if len(value) > 0: @@ -487,6 +502,7 @@ view.register( # Others Tab "callback_set_enable_auto_clear_chatbox": callbackSetEnableAutoClearMessageBox, "callback_set_enable_notice_xsoverlay": callbackSetEnableNoticeXsoverlay, + "callback_set_enable_auto_export_message_logs": callbackSetEnableAutoExportMessageLogs, "callback_set_message_format": callbackSetMessageFormat, # Advanced Settings Tab