From fde7ea6a75631052a1870e50387b1ce3bc5a3089 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Thu, 31 Aug 2023 00:19:19 +0900 Subject: [PATCH] =?UTF-8?q?main.py=E3=81=8B=E3=82=89view.py=E3=81=AB?= =?UTF-8?q?=E3=81=84=E3=81=8F=E3=81=A4=E3=81=8B=E9=96=A2=E6=95=B0=E7=A7=BB?= =?UTF-8?q?=E5=8B=95=20=E7=B6=9A=E3=81=8D(messageBoxPressKeyAny=E3=81=AF?= =?UTF-8?q?=E5=88=A5=E3=81=AE=E5=A0=B4=E6=89=80=E3=81=AB=E7=A7=BB=E5=8B=95?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=82=8B=E3=81=AE=E3=81=A7=E5=88=A5=E3=81=AE?= =?UTF-8?q?=E3=82=B3=E3=83=9F=E3=83=83=E3=83=88=E3=81=AB=E3=80=82=E3=81=9D?= =?UTF-8?q?=E3=82=8C=E4=BB=A5=E5=A4=96=E3=81=AF=E5=AE=8C=E4=BA=86)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 85 +++++++++++++++++++-------------------------------------- view.py | 74 +++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 90 insertions(+), 69 deletions(-) diff --git a/main.py b/main.py index c38a2161..27d81c3a 100644 --- a/main.py +++ b/main.py @@ -11,12 +11,12 @@ def sendMicMessage(message): if len(message) > 0: translation = "" if model.checkKeywords(message): - logDetectWordFilter(message) + view.printToTextbox_DetectedByWordFilter(detected_message=message) return elif config.ENABLE_TRANSLATION is False: pass elif model.getTranslatorStatus() is False: - logAuthenticationError() + view.printToTextbox_AuthenticationError() else: translation = model.getInputTranslate(message) @@ -29,9 +29,9 @@ def sendMicMessage(message): osc_message = message model.oscSendMessage(osc_message) else: - logOSCError() + view.printToTextbox_OSCError() - logSendMessage(message, translation) + view.printToTextbox_SentMessage(message, translation) def startTranscriptionSendMessage(): model.startMicTranscript(sendMicMessage) @@ -48,7 +48,7 @@ def receiveSpeakerMessage(message): if config.ENABLE_TRANSLATION is False: pass elif model.getTranslatorStatus() is False: - logAuthenticationError() + view.printToTextbox_AuthenticationError() else: translation = model.getOutputTranslate(message) @@ -57,7 +57,7 @@ def receiveSpeakerMessage(message): xsoverlay_message = config.MESSAGE_FORMAT.replace("[message]", message) xsoverlay_message = xsoverlay_message.replace("[translation]", translation) model.notificationXSOverlay(xsoverlay_message) - logReceiveMessage(message, translation) + view.printToTextbox_ReceivedMessage(message, translation) def startTranscriptionReceiveMessage(): model.startSpeakerTranscript(receiveSpeakerMessage) @@ -74,7 +74,7 @@ def sendChatMessage(message): if config.ENABLE_TRANSLATION is False: pass elif model.getTranslatorStatus() is False: - logAuthenticationError() + view.printToTextbox_AuthenticationError() else: translation = model.getInputTranslate(message) @@ -87,15 +87,14 @@ def sendChatMessage(message): osc_message = message model.oscSendMessage(osc_message) else: - logOSCError() + view.printToTextbox_OSCError() # update textbox message log - logSendMessage(message, translation) + view.printToTextbox_SentMessage(message, translation) # delete message in entry message box if config.ENABLE_AUTO_CLEAR_CHATBOX is True: - entry_message_box = getattr(vrct_gui, "entry_message_box") - entry_message_box.delete(0, customtkinter.END) + view.clearMessageBox() def messageBoxPressKeyEnter(e): model.oscStopSendTyping() @@ -131,8 +130,7 @@ def setTargetLanguageAndCountry(select): def callbackSelectedTabNo1(): config.SELECTED_TAB_NO = "1" - vrct_gui.YOUR_LANGUAGE = config.SELECTED_TAB_YOUR_LANGUAGES[config.SELECTED_TAB_NO] - vrct_gui.TARGET_LANGUAGE = config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO] + view.updateGuiVariableByPresetTabNo(config.SELECTED_TAB_NO) languages = config.SELECTED_TAB_YOUR_LANGUAGES select = languages[config.SELECTED_TAB_NO] language, country = model.getLanguageAndCountry(select) @@ -147,8 +145,7 @@ def callbackSelectedTabNo1(): def callbackSelectedTabNo2(): config.SELECTED_TAB_NO = "2" - vrct_gui.YOUR_LANGUAGE = config.SELECTED_TAB_YOUR_LANGUAGES[config.SELECTED_TAB_NO] - vrct_gui.TARGET_LANGUAGE = config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO] + view.updateGuiVariableByPresetTabNo(config.SELECTED_TAB_NO) languages = config.SELECTED_TAB_YOUR_LANGUAGES select = languages[config.SELECTED_TAB_NO] language, country = model.getLanguageAndCountry(select) @@ -163,8 +160,7 @@ def callbackSelectedTabNo2(): def callbackSelectedTabNo3(): config.SELECTED_TAB_NO = "3" - vrct_gui.YOUR_LANGUAGE = config.SELECTED_TAB_YOUR_LANGUAGES[config.SELECTED_TAB_NO] - vrct_gui.TARGET_LANGUAGE = config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO] + view.updateGuiVariableByPresetTabNo(config.SELECTED_TAB_NO) languages = config.SELECTED_TAB_YOUR_LANGUAGES select = languages[config.SELECTED_TAB_NO] language, country = model.getLanguageAndCountry(select) @@ -177,37 +173,6 @@ def callbackSelectedTabNo3(): config.TARGET_COUNTRY = country config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) -# func print textbox -def logSendMessage(message, translate): - textbox_all = getattr(vrct_gui, "textbox_all") - textbox_sent = getattr(vrct_gui, "textbox_sent") - vrct_gui.printToTextbox(textbox_all, message, translate, "SEND") - vrct_gui.printToTextbox(textbox_sent, message, translate, "SEND") - -def logReceiveMessage(message, translate): - textbox_all = getattr(vrct_gui, "textbox_all") - textbox_sent = getattr(vrct_gui, "textbox_received") - vrct_gui.printToTextbox(textbox_all, message, translate, "RECEIVE") - vrct_gui.printToTextbox(textbox_sent, message, translate, "RECEIVE") - -def logDetectWordFilter(message): - textbox_all = getattr(vrct_gui, "textbox_all") - textbox_system = getattr(vrct_gui, "textbox_system") - vrct_gui.printToTextbox(textbox_all, f"Detect WordFilter :{message}", "", "INFO") - vrct_gui.printToTextbox(textbox_system, f"Detect WordFilter :{message}", "", "INFO") - -def logAuthenticationError(): - textbox_all = getattr(vrct_gui, "textbox_all") - textbox_system = getattr(vrct_gui, "textbox_system") - vrct_gui.printToTextbox(textbox_all, "Auth Key or language setting is incorrect", "", "INFO") - vrct_gui.printToTextbox(textbox_system, "Auth Key or language setting is incorrect", "", "INFO") - -def logOSCError(): - textbox_all = getattr(vrct_gui, "textbox_all") - textbox_system = getattr(vrct_gui, "textbox_system") - vrct_gui.printToTextbox(textbox_all, "OSC is not enabled, please enable OSC and rejoin", "", "INFO") - vrct_gui.printToTextbox(textbox_system, "OSC is not enabled, please enable OSC and rejoin", "", "INFO") - # command func def callbackToggleTranslation(): @@ -249,18 +214,18 @@ def callbackToggleForeground(): config.ENABLE_FOREGROUND = view.getForegroundButtonStatus() if config.ENABLE_FOREGROUND is True: view.printToTextbox_enableForeground() - vrct_gui.attributes("-topmost", True) + view.foregroundOn() else: view.printToTextbox_disableForeground() - vrct_gui.attributes("-topmost", False) + view.foregroundOff() # create GUI -vrct_gui.createGUI() +view.createGUI() # init config if model.authenticationTranslator() is False: # error update Auth key - logAuthenticationError() + view.printToTextbox_AuthenticationError() # set word filter model.addKeywords() @@ -290,11 +255,17 @@ view.initializer( "callback_selected_tab_no_3": callbackSelectedTabNo3, }, - entry_message_box={ - "bind_Return": messageBoxPressKeyEnter, - "bind_Any_KeyPress": messageBoxPressKeyAny, - }, + # 辞書型で関数を渡しても上手く行かず、仕方なくタプルで渡してる。 + # 本当はコメントアウト(以下とview.py内33,34行目)しているようにできたらいいけど、 + # _tkinter.TclError: unknown option "-bind_Any_KeyPress"みたいにエラーがでる。 + entry_message_box=None, + # entry_message_box={ + # "bind_Return": messageBoxPressKeyEnter, + # "bind_Any_KeyPress": messageBoxPressKeyAny, + # }, + entry_message_box_bind_Return=messageBoxPressKeyEnter, + entry_message_box_bind_Any_KeyPress=messageBoxPressKeyAny, ) if __name__ == "__main__": - vrct_gui.startMainLoop() \ No newline at end of file + view.startMainLoop() \ No newline at end of file diff --git a/view.py b/view.py index e472f0d5..0f7c2590 100644 --- a/view.py +++ b/view.py @@ -1,14 +1,14 @@ -from customtkinter import StringVar +from customtkinter import StringVar, END as CTK_END from vrct_gui import vrct_gui from config import config -class view(): +class View(): def __init__(self): pass - def initializer(self, sidebar_features, language_presets, entry_message_box): + def initializer(self, sidebar_features, language_presets, entry_message_box, entry_message_box_bind_Return, entry_message_box_bind_Any_KeyPress): vrct_gui.CALLBACK_TOGGLE_TRANSLATION = sidebar_features["callback_toggle_translation"] vrct_gui.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = sidebar_features["callback_toggle_transcription_send"] @@ -30,8 +30,11 @@ class view(): entry_message_box = getattr(vrct_gui, "entry_message_box") - entry_message_box.bind("", lambda: entry_message_box["bind_Return"]) - entry_message_box.bind("", lambda: entry_message_box["bind_Any_KeyPress"]) + # entry_message_box.bind("", lambda e: entry_message_box["bind_Return"](e)) + # entry_message_box.bind("", lambda e: entry_message_box["bind_Any_KeyPress"](e)) + entry_message_box.bind("", entry_message_box_bind_Return) + entry_message_box.bind("", entry_message_box_bind_Any_KeyPress) + entry_message_box.bind("", self._foregroundOffForcefully) entry_message_box.bind("", self._foregroundOnForcefully) @@ -45,15 +48,25 @@ class view(): - def _foregroundOffForcefully(self, _e): - if config.ENABLE_FOREGROUND: - vrct_gui.attributes("-topmost", False) - def _foregroundOnForcefully(self, _e): if config.ENABLE_FOREGROUND: - vrct_gui.attributes("-topmost", True) + self.foregroundOn() + + def _foregroundOffForcefully(self, _e): + if config.ENABLE_FOREGROUND: + self.foregroundOff() + def foregroundOn(self): + vrct_gui.attributes("-topmost", True) + + def foregroundOff(self): + vrct_gui.attributes("-topmost", False) + + + def updateGuiVariableByPresetTabNo(self, tab_no:str): + vrct_gui.YOUR_LANGUAGE = config.SELECTED_TAB_YOUR_LANGUAGES[tab_no] + vrct_gui.TARGET_LANGUAGE = config.SELECTED_TAB_TARGET_LANGUAGES[tab_no] @@ -88,14 +101,51 @@ class view(): self._printToTextbox_Info("Stop foreground") + def printToTextbox_AuthenticationError(self): + self._printToTextbox_Info("Auth Key or language setting is incorrect") + + def printToTextbox_OSCError(self): + self._printToTextbox_Info("OSC is not enabled, please enable OSC and rejoin") + + def printToTextbox_DetectedByWordFilter(self, detected_message): + self._printToTextbox_Info(f"Detect WordFilter :{detected_message}") + + def _printToTextbox_Info(self, info_message): vrct_gui.printToTextbox(vrct_gui.textbox_all, info_message, "", "INFO") vrct_gui.printToTextbox(vrct_gui.textbox_system, info_message, "", "INFO") - pass + def printToTextbox_SentMessage(self, original_message, translated_message): + self._printToTextbox_Sent(original_message, translated_message) + + def _printToTextbox_Sent(self, original_message, translated_message): + vrct_gui.printToTextbox(vrct_gui.textbox_all, original_message, translated_message, "SEND") + vrct_gui.printToTextbox(vrct_gui.textbox_sent, original_message, translated_message, "SEND") + + + def printToTextbox_ReceivedMessage(self, original_message, translated_message): + self._printToTextbox_Received(original_message, translated_message) + + def _printToTextbox_Received(self, original_message, translated_message): + vrct_gui.printToTextbox(vrct_gui.textbox_all, original_message, translated_message, "RECEIVE") + vrct_gui.printToTextbox(vrct_gui.textbox_received, original_message, translated_message, "RECEIVE") + + def getTextFromMessageBox(self): return vrct_gui.entry_message_box.get() -view = view() \ No newline at end of file + def clearMessageBox(self): + vrct_gui.entry_message_box.delete(0, CTK_END) + + + + + def createGUI(self): + vrct_gui.createGUI() + + def startMainLoop(self): + vrct_gui.startMainLoop() + +view = View() \ No newline at end of file