From 419766a2fc3f70cca1e0f61eab07119040e599cf Mon Sep 17 00:00:00 2001 From: misygauziya Date: Sun, 27 Aug 2023 13:30:03 +0900 Subject: [PATCH] [Update] message box (only main window) --- main.py | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index 5a488009..f3f3d73d 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,5 @@ from threading import Thread +import customtkinter from vrct_gui import vrct_gui from config import config from model import model @@ -25,7 +26,7 @@ def sendMicMessage(message): else: logOSCError() - logTranscriptionSendMessage(message, translation) + logSendMessage(message, translation) def startTranscriptionSendMessage(): model.startMicTranscript(sendMicMessage) @@ -51,7 +52,7 @@ def receiveSpeakerMessage(message): xsoverlay_message = config.MESSAGE_FORMAT.replace("[message]", message) xsoverlay_message = xsoverlay_message.replace("[translation]", translation) model.notificationXSOverlay(xsoverlay_message) - logTranscriptionReceiveMessage(message, translation) + logReceiveMessage(message, translation) def startTranscriptionReceiveMessage(): model.startSpeakerTranscript(receiveSpeakerMessage) @@ -61,6 +62,55 @@ def stopTranscriptionReceiveMessage(): model.stopSpeakerTranscript() vrct_gui.changeMainWindowWidgetsStatus("normal", "All") +# func message box +def sendChatMessage(message): + if len(message) > 0: + translation = "" + if config.ENABLE_TRANSLATION is False: + pass + elif model.getTranslatorStatus() is False: + logAuthenticationError() + else: + translation = model.getInputTranslate(message) + + # send OSC message + if config.ENABLE_OSC is True: + osc_message = config.MESSAGE_FORMAT.replace("[message]", message) + osc_message = osc_message.replace("[translation]", translation) + model.oscSendMessage(osc_message) + else: + logOSCError() + + # update textbox message log + logSendMessage(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) + +def messageBoxPressKeyEnter(e): + model.oscStopSendTyping() + entry_message_box = getattr(vrct_gui, "entry_message_box") + message = entry_message_box.get() + sendChatMessage(message) + +def messageBoxPressKeyAny(e): + model.oscStartSendTyping() + entry_message_box = getattr(vrct_gui, "entry_message_box") + if e.keysym != "??": + if len(e.char) != 0 and e.keysym in config.BREAK_KEYSYM_LIST: + entry_message_box.insert("end", e.char) + return "break" + +def foregroundOffForcefully(e): + if config.ENABLE_FOREGROUND: + vrct_gui.attributes("-topmost", False) + +def foregroundOnForcefully(e): + if config.ENABLE_FOREGROUND: + vrct_gui.attributes("-topmost", True) + # func print textbox def logTranslationStatusChange(): textbox_all = getattr(vrct_gui, "textbox_all") @@ -82,13 +132,13 @@ def logTranscriptionSendStatusChange(): vrct_gui.printToTextbox(textbox_all, "Voice2chatbox機能をOFFにしました", "", "INFO") vrct_gui.printToTextbox(textbox_system, "Voice2chatbox機能をOFFにしました", "", "INFO") -def logTranscriptionSendMessage(message, translate): +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 logTranscriptionReceiveMessage(message, translate): +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") @@ -188,5 +238,11 @@ transcription_receive_switch_box.configure(command=toggleTranscriptionReceiveFea foreground_switch_box = getattr(vrct_gui, "foreground_switch_box") foreground_switch_box.configure(command=toggleForegroundFeature) +entry_message_box = getattr(vrct_gui, "entry_message_box") +entry_message_box.bind("", messageBoxPressKeyEnter) +entry_message_box.bind("", messageBoxPressKeyAny) +entry_message_box.bind("", foregroundOffForcefully) +entry_message_box.bind("", foregroundOnForcefully) + if __name__ == "__main__": vrct_gui.startMainLoop() \ No newline at end of file