diff --git a/config.py b/config.py index 7160e48c..b1afae4f 100644 --- a/config.py +++ b/config.py @@ -458,6 +458,17 @@ class Config: self._ENABLE_AUTO_CLEAR_MESSAGE_BOX = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + @property + @json_serializable('ENABLE_SEND_ONLY_TRANSLATED_MESSAGES') + def ENABLE_SEND_ONLY_TRANSLATED_MESSAGES(self): + return self._ENABLE_SEND_ONLY_TRANSLATED_MESSAGES + + @ENABLE_SEND_ONLY_TRANSLATED_MESSAGES.setter + def ENABLE_SEND_ONLY_TRANSLATED_MESSAGES(self, value): + if isinstance(value, bool): + self._ENABLE_SEND_ONLY_TRANSLATED_MESSAGES = value + saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + @property @json_serializable('ENABLE_NOTICE_XSOVERLAY') def ENABLE_NOTICE_XSOVERLAY(self): @@ -655,6 +666,7 @@ class Config: self._RECEIVED_MESSAGE_FORMAT = "[message]" self._RECEIVED_MESSAGE_FORMAT_WITH_T = "[message]([translation])" self._ENABLE_AUTO_CLEAR_MESSAGE_BOX = True + self._ENABLE_SEND_ONLY_TRANSLATED_MESSAGES = False self._ENABLE_NOTICE_XSOVERLAY = False self._ENABLE_SEND_MESSAGE_TO_VRC = True self._ENABLE_SEND_RECEIVED_MESSAGE_TO_VRC = False # speaker2Chatbox diff --git a/controller.py b/controller.py index 7f4a0db4..d9b6dd89 100644 --- a/controller.py +++ b/controller.py @@ -58,9 +58,16 @@ def sendMicMessage(message): if config.ENABLE_TRANSCRIPTION_SEND is True: if config.ENABLE_SEND_MESSAGE_TO_VRC is True: - osc_message = messageFormatter("SEND", translation, message) + if config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES is True: + if config.ENABLE_TRANSLATION is False: + osc_message = messageFormatter("SEND", "", message) + else: + osc_message = messageFormatter("SEND", "", translation) + else: + osc_message = messageFormatter("SEND", translation, message) model.oscSendMessage(osc_message) + view.printToTextbox_SentMessage(message, translation) if config.ENABLE_LOGGER is True: if len(translation) > 0: @@ -187,7 +194,13 @@ def sendChatMessage(message): # send OSC message if config.ENABLE_SEND_MESSAGE_TO_VRC is True: - osc_message = messageFormatter("SEND", translation, message) + if config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES is True: + if config.ENABLE_TRANSLATION is False: + osc_message = messageFormatter("SEND", "", message) + else: + osc_message = messageFormatter("SEND", "", translation) + else: + osc_message = messageFormatter("SEND", translation, message) model.oscSendMessage(osc_message) # update textbox message log (Sent) @@ -650,6 +663,10 @@ def callbackSetEnableAutoClearMessageBox(value): print("callbackSetEnableAutoClearMessageBox", value) config.ENABLE_AUTO_CLEAR_MESSAGE_BOX = value +def callbackSetEnableSendOnlyTranslatedMessages(value): + print("callbackSetEnableSendOnlyTranslatedMessages", value) + config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES = value + def callbackSetEnableNoticeXsoverlay(value): print("callbackSetEnableNoticeXsoverlay", value) config.ENABLE_NOTICE_XSOVERLAY = value @@ -856,6 +873,7 @@ def createMainWindow(): # Others Tab "callback_set_enable_auto_clear_chatbox": callbackSetEnableAutoClearMessageBox, + "callback_set_send_only_translated_messages": callbackSetEnableSendOnlyTranslatedMessages, "callback_set_enable_notice_xsoverlay": callbackSetEnableNoticeXsoverlay, "callback_set_enable_auto_export_message_logs": callbackSetEnableAutoExportMessageLogs, "callback_set_enable_send_message_to_vrc": callbackSetEnableSendMessageToVrc, diff --git a/locales/en.yml b/locales/en.yml index a4b79641..f805540c 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -174,6 +174,9 @@ config_window: auto_clear_the_message_box: label: Auto Clear The Message Box + send_only_translated_messages: + label: Send Only Translated Messages + notice_xsoverlay: label: Notification XSOverlay (VR Only) desc: Notify received messages by using XSOverlay's notification feature. diff --git a/locales/ja.yml b/locales/ja.yml index 3b56cbcf..5cb6ef99 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -167,9 +167,13 @@ config_window: desc: 文字起こしされた単語数の下限値で、この数値を超えた場合のみ結果をログに表示します。 error_message: 0以上の数値を設定できます。 + auto_clear_the_message_box: label: 送信後はチャットボックスを空にする + send_only_translated_messages: + label: 翻訳後のメッセージのみ送信する + notice_xsoverlay: label: XSOverlayでの通知受け取り機能を有効 (VR限定) desc: 文字起こし(受信)されたメッセージをXSOverlayの機能を使って通知として受け取れます。 diff --git a/view.py b/view.py index 7b95a2f5..b1a89b26 100644 --- a/view.py +++ b/view.py @@ -334,6 +334,11 @@ class View(): CALLBACK_SET_ENABLE_AUTO_CLEAR_MESSAGE_BOX=None, VAR_ENABLE_AUTO_CLEAR_MESSAGE_BOX=BooleanVar(value=config.ENABLE_AUTO_CLEAR_MESSAGE_BOX), + VAR_LABEL_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES=StringVar(value=i18n.t("config_window.send_only_translated_messages.label")), + VAR_DESC_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES=None, + CALLBACK_SET_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES=None, + VAR_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES=BooleanVar(value=config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES), + VAR_LABEL_ENABLE_NOTICE_XSOVERLAY=StringVar(value=i18n.t("config_window.notice_xsoverlay.label")), VAR_DESC_ENABLE_NOTICE_XSOVERLAY=StringVar(value=i18n.t("config_window.notice_xsoverlay.desc")), CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY=None, @@ -546,6 +551,7 @@ class View(): # Others Tab 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_SEND_ONLY_TRANSLATED_MESSAGES = config_window_registers.get("callback_set_send_only_translated_messages", 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) 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 d129a05d..de2e4394 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 @@ -14,6 +14,9 @@ def createSettingBox_Others(setting_box_wrapper, config_window, settings, view_v def checkbox_auto_clear_message_box_callback(checkbox_box_widget): callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_AUTO_CLEAR_MESSAGE_BOX, checkbox_box_widget.get()) + def checkbox_send_only_translated_messages_callback(checkbox_box_widget): + callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES, checkbox_box_widget.get()) + def checkbox_notice_xsoverlay_callback(checkbox_box_widget): callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_NOTICE_XSOVERLAY, checkbox_box_widget.get()) @@ -41,6 +44,16 @@ def createSettingBox_Others(setting_box_wrapper, config_window, settings, view_v config_window.sb__auto_clear_message_box.grid(row=row) row+=1 + config_window.sb__send_only_translated_messages = createSettingBoxCheckbox( + for_var_label_text=view_variable.VAR_LABEL_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES, + for_var_desc_text=view_variable.VAR_DESC_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES, + checkbox_attr_name="sb__checkbox_send_only_translated_messages", + command=lambda: checkbox_send_only_translated_messages_callback(config_window.sb__checkbox_send_only_translated_messages), + variable=view_variable.VAR_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES, + ) + config_window.sb__send_only_translated_messages.grid(row=row) + row+=1 + config_window.sb__notice_xsoverlay = createSettingBoxCheckbox( for_var_label_text=view_variable.VAR_LABEL_ENABLE_NOTICE_XSOVERLAY,