From 18275b5700a5b3ca336dc32317600cc01f2bcbc7 Mon Sep 17 00:00:00 2001 From: misygauziya Date: Mon, 28 Aug 2023 23:25:13 +0900 Subject: [PATCH 1/6] [Change] transcription_languages.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 言語の階層構造を変更 --- .../transcription/transcription_languages.py | 264 ++++++++++++------ 1 file changed, 175 insertions(+), 89 deletions(-) diff --git a/models/transcription/transcription_languages.py b/models/transcription/transcription_languages.py index 2cf6ebd3..26f2c3f6 100644 --- a/models/transcription/transcription_languages.py +++ b/models/transcription/transcription_languages.py @@ -1,91 +1,177 @@ transcription_lang = { - "Japanese (Japan)":"ja-JP", - "English (United States)":"en-US", - "English (United Kingdom)":"en-GB", - "Afrikaans (South Africa)":"af-ZA", - "Arabic (Algeria)":"ar-DZ", - "Arabic (Bahrain)":"ar-BH", - "Arabic (Egypt)":"ar-EG", - "Arabic (Israel)":"ar-IL", - "Arabic (Iraq)":"ar-IQ", - "Arabic (Jordan)":"ar-JO", - "Arabic (Kuwait)":"ar-KW", - "Arabic (Lebanon)":"ar-LB", - "Arabic (Morocco)":"ar-MA", - "Arabic (Oman)":"ar-OM", - "Arabic (State of Palestine)":"ar-PS", - "Arabic (Qatar)":"ar-QA", - "Arabic (Saudi Arabia)":"ar-SA", - "Arabic (Tunisia)":"ar-TN", - "Arabic (United Arab Emirates)":"ar-AE", - "Basque (Spain)":"eu-ES", - "Bulgarian (Bulgaria)":"bg-BG", - "Catalan (Spain)":"ca-ES", - "Chinese, Mandarin (Simplified, China)":"cmn-Hans-CN", - "Chinese, Mandarin (Simplified, Hong Kong)":"cmn-Hans-HK", - "Chinese, Mandarin (Traditional, Taiwan)":"cmn-Hant-TW", - "Chinese, Cantonese (Traditional Hong Kong)":"yue-Hant-HK", - "Croatian (Croatia)":"hr-HR", - "Czech (Czech Republic)":"cs-CZ", - "Danish (Denmark)":"da-DK", - "English (Australia)":"en-AU", - "English (Canada)":"en-CA", - "English (India)":"en-IN", - "English (Ireland)":"en-IE", - "English (New Zealand)":"en-NZ", - "English (Philippines)":"en-PH", - "English (South Africa)":"en-ZA", - "Persian (Iran)":"fa-IR", - "French (France)":"fr-FR", - "Filipino (Philippines)":"fil-PH", - "Galician (Spain)":"gl-ES", - "German (Germany)":"de-DE", - "Greek (Greece)":"el-GR", - "Finnish (Finland)":"fi-FI", - "Hebrew (Israel)":"he-IL", - "Hindi (India)":"hi-IN", - "Hungarian (Hungary)":"hu-HU", - "Indonesian (Indonesia)":"id-ID", - "Icelandic (Iceland)":"is-IS", - "Italian (Italy)":"it-IT", - "Italian (Switzerland)":"it-CH", - "Korean (South Korea)":"ko-KR", - "Lithuanian (Lithuania)":"lt-LT", - "Malay (Malaysia)":"ms-MY", - "Dutch (Netherlands)":"nl-NL", - "Norwegian Bokmål (Norway)":"nb-NO", - "Polish (Poland)":"pl-PL", - "Portuguese (Brazil)":"pt-BR", - "Portuguese (Portugal)":"pt-PT", - "Romanian (Romania)":"ro-RO", - "Russian (Russia)":"ru-RU", - "Serbian (Serbia)":"sr-RS", - "Slovak (Slovakia)":"sk-SK", - "Slovenian (Slovenia)":"sl-SI", - "Spanish (Argentina)":"es-AR", - "Spanish (Bolivia)":"es-BO", - "Spanish (Chile)":"es-CL", - "Spanish (Colombia)":"es-CO", - "Spanish (Costa Rica)":"es-CR", - "Spanish (Dominican Republic)":"es-DO", - "Spanish (Ecuador)":"es-EC", - "Spanish (El Salvador)":"es-SV", - "Spanish (Guatemala)":"es-GT", - "Spanish (Honduras)":"es-HN", - "Spanish (Mexico)":"es-MX", - "Spanish (Nicaragua)":"es-NI", - "Spanish (Panama)":"es-PA", - "Spanish (Paraguay)":"es-PY", - "Spanish (Peru)":"es-PE", - "Spanish (Puerto Rico)":"es-PR", - "Spanish (Spain)":"es-ES", - "Spanish (Uruguay)":"es-UY", - "Spanish (United States)":"es-US", - "Spanish (Venezuela)":"es-VE", - "Swedish (Sweden)":"sv-SE", - "Thai (Thailand)":"th-TH", - "Turkish (Turkey)":"tr-TR", - "Ukrainian (Ukraine)":"uk-UA", - "Vietnamese (Vietnam)":"vi-VN", - "Zulu (South Africa)":"zu-ZA" + "Afrikaans":{ + "South Africa":"af-ZA", + }, + "Arabic":{ + "Algeria":"ar-DZ", + "Bahrain":"ar-BH", + "Egypt":"ar-EG", + "Israel":"ar-IL", + "Iraq":"ar-IQ", + "Jordan":"ar-JO", + "Kuwait":"ar-KW", + "Lebanon":"ar-LB", + "Morocco":"ar-MA", + "Oman":"ar-OM", + "State of Palestine":"ar-PS", + "Qatar":"ar-QA", + "Saudi Arabia":"ar-SA", + "Tunisia":"ar-TN", + "United Arab Emirates":"ar-AE", + }, + "Basque":{ + "Spain":"eu-ES", + }, + "Bulgarian":{ + "Bulgaria":"bg-BG", + }, + "Catalan":{ + "Spain":"ca-ES", + }, + "Chinese":{ + "Mandarin (Simplified, China)":"cmn-Hans-CN", + "Mandarin (Simplified, Hong Kong)":"cmn-Hans-HK", + "Mandarin (Traditional, Taiwan)":"cmn-Hant-TW", + "Cantonese (Traditional Hong Kong)":"yue-Hant-HK", + }, + "Croatian":{ + "Croatia":"hr-HR", + }, + "Czech":{ + "Czech Republic":"cs-CZ", + }, + "Danish":{ + "Denmark":"da-DK", + }, + "Dutch":{ + "Netherlands":"nl-NL", + }, + "English": { + "United States":"en-US", + "United Kingdom":"en-GB", + "Australia":"en-AU", + "Canada":"en-CA", + "India":"en-IN", + "Ireland":"en-IE", + "New Zealand":"en-NZ", + "Philippines":"en-PH", + "South Africa":"en-ZA", + }, + "Filipino":{ + "Philippines":"fil-PH", + }, + "Finnish":{ + "Finland":"fi-FI", + }, + "French":{ + "France":"fr-FR", + }, + "Galician":{ + "Spain":"gl-ES", + }, + "German":{ + "Germany":"de-DE", + }, + "Greek":{ + "Greece":"el-GR", + }, + "Hebrew":{ + "Israel":"he-IL", + }, + "Hindi": { + "India":"hi-IN", + }, + "Hungarian":{ + "Hungary":"hu-HU", + }, + "Indonesian":{ + "Indonesia":"id-ID", + }, + "Icelandic":{ + "Iceland":"is-IS", + }, + "Italian":{ + "Italy":"it-IT", + "Switzerland":"it-CH", + }, + "Japanese":{ + "Japan":"ja-JP", + }, + "Korean":{ + "South Korea":"ko-KR", + }, + "Lithuanian":{ + "Lithuania":"lt-LT", + }, + "Malay":{ + "Malaysia":"ms-MY", + }, + "Norwegian":{ + "Norway":"nb-NO", + }, + "Persian":{ + "Iran":"fa-IR", + }, + "Polish":{ + "Poland":"pl-PL", + }, + "Portuguese":{ + "Brazil":"pt-BR", + "Portugal":"pt-PT", + }, + "Romanian":{ + "Romania":"ro-RO", + }, + "Russian":{ + "Russia":"ru-RU", + }, + "Serbian":{ + "Serbia":"sr-RS", + }, + "Slovak":{ + "Slovakia":"sk-SK", + }, + "Slovenian":{ + "Slovenia":"sl-SI", + }, + "Spanish":{ + "Argentina":"es-AR", + "Bolivia":"es-BO", + "Chile":"es-CL", + "Colombia":"es-CO", + "Costa Rica":"es-CR", + "Dominican Republic":"es-DO", + "Ecuador":"es-EC", + "El Salvador":"es-SV", + "Guatemala":"es-GT", + "Honduras":"es-HN", + "Mexico":"es-MX", + "Nicaragua":"es-NI", + "Panama":"es-PA", + "Paraguay":"es-PY", + "Peru":"es-PE", + "Puerto Rico":"es-PR", + "Spain":"es-ES", + "Uruguay":"es-UY", + "United States":"es-US", + "Venezuela":"es-VE", + }, + "Swedish":{ + "Sweden":"sv-SE", + }, + "Thai":{ + "Thailand":"th-TH", + }, + "Turkish":{ + "Turkey":"tr-TR", + }, + "Ukrainian":{ + "Ukraine":"uk-UA", + }, + "Vietnamese":{ + "Vietnam":"vi-VN", + }, + "Zulu":{ + "South Africa":"zu-ZA" + }, } \ No newline at end of file From c8e4df034949edaed4e7b6ee6599d56ba31d3c62 Mon Sep 17 00:00:00 2001 From: misygauziya Date: Tue, 29 Aug 2023 04:48:44 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E9=80=94=E4=B8=AD=E3=81=BE=E3=81=A7?= =?UTF-8?q?=E7=BF=BB=E8=A8=B3Engine=E9=83=A8=E5=88=86=E3=81=8C=E3=81=BE?= =?UTF-8?q?=E3=81=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 119 ++++++++++-------- main.py | 95 ++++++++++++++ model.py | 17 ++- .../transcription_transcriber.py | 4 +- .../main_window/widgets/create_sidebar.py | 18 ++- vrct_gui/vrct_gui.py | 3 + 6 files changed, 194 insertions(+), 62 deletions(-) diff --git a/config.py b/config.py index 2b99e4dc..f90f5785 100644 --- a/config.py +++ b/config.py @@ -135,43 +135,43 @@ class Config: saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @property - def INPUT_SOURCE_LANG(self): - return self._INPUT_SOURCE_LANG + def SOURCE_LANGUAGE(self): + return self._SOURCE_LANGUAGE - @INPUT_SOURCE_LANG.setter - def INPUT_SOURCE_LANG(self, value): - if value in list(translation_lang[self.CHOICE_TRANSLATOR]["source"].keys()): - self._INPUT_SOURCE_LANG = value + @SOURCE_LANGUAGE.setter + def SOURCE_LANGUAGE(self, value): + if type(value) is str: + self._SOURCE_LANGUAGE = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @property - def INPUT_TARGET_LANG(self): - return self._INPUT_TARGET_LANG + def SOURCE_COUNTRY(self): + return self._SOURCE_COUNTRY - @INPUT_TARGET_LANG.setter - def INPUT_TARGET_LANG(self, value): - if value in list(translation_lang[self.CHOICE_TRANSLATOR]["target"].keys()): - self._INPUT_TARGET_LANG = value + @SOURCE_COUNTRY.setter + def SOURCE_COUNTRY(self, value): + if type(value) is str: + self._SOURCE_COUNTRY = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @property - def OUTPUT_SOURCE_LANG(self): - return self._OUTPUT_SOURCE_LANG + def TARGET_LANGUAGE(self): + return self._TARGET_LANGUAGE - @OUTPUT_SOURCE_LANG.setter - def OUTPUT_SOURCE_LANG(self, value): - if value in list(translation_lang[self.CHOICE_TRANSLATOR]["source"].keys()): - self._OUTPUT_SOURCE_LANG = value + @TARGET_LANGUAGE.setter + def TARGET_LANGUAGE(self, value): + if type(value) is str: + self._TARGET_LANGUAGE = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @property - def OUTPUT_TARGET_LANG(self): - return self._OUTPUT_TARGET_LANG + def TARGET_COUNTRY(self): + return self._TARGET_COUNTRY - @OUTPUT_TARGET_LANG.setter - def OUTPUT_TARGET_LANG(self, value): - if value in list(translation_lang[self.CHOICE_TRANSLATOR]["target"].keys()): - self._OUTPUT_TARGET_LANG = value + @TARGET_COUNTRY.setter + def TARGET_COUNTRY(self, value): + if type(value) is str: + self._TARGET_COUNTRY = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @property @@ -194,16 +194,6 @@ class Config: self._CHOICE_MIC_DEVICE = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) - @property - def INPUT_MIC_VOICE_LANGUAGE(self): - return self._INPUT_MIC_VOICE_LANGUAGE - - @INPUT_MIC_VOICE_LANGUAGE.setter - def INPUT_MIC_VOICE_LANGUAGE(self, value): - if value in list(transcription_lang.keys()): - self._INPUT_MIC_VOICE_LANGUAGE = value - saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) - @property def INPUT_MIC_ENERGY_THRESHOLD(self): return self._INPUT_MIC_ENERGY_THRESHOLD @@ -276,16 +266,6 @@ class Config: self._CHOICE_SPEAKER_DEVICE = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) - @property - def INPUT_SPEAKER_VOICE_LANGUAGE(self): - return self._INPUT_SPEAKER_VOICE_LANGUAGE - - @INPUT_SPEAKER_VOICE_LANGUAGE.setter - def INPUT_SPEAKER_VOICE_LANGUAGE(self, value): - if value in list(transcription_lang.keys()): - self._INPUT_SPEAKER_VOICE_LANGUAGE = value - saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) - @property def INPUT_SPEAKER_ENERGY_THRESHOLD(self): return self._INPUT_SPEAKER_ENERGY_THRESHOLD @@ -432,6 +412,36 @@ class Config: def MAX_SPEAKER_ENERGY_THRESHOLD(self): return self._MAX_SPEAKER_ENERGY_THRESHOLD + @property + def SELECTED_TAB_NO(self): + return self._SELECTED_TAB_NO + + @SELECTED_TAB_NO.setter + def SELECTED_TAB_NO(self, value): + if type(value) is str: + self._SELECTED_TAB_NO = value + saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + + @property + def SELECTED_TAB_YOUR_LANGUAGES(self): + return self._SELECTED_TAB_YOUR_LANGUAGES + + @SELECTED_TAB_YOUR_LANGUAGES.setter + def SELECTED_TAB_YOUR_LANGUAGES(self, value): + if type(value) is dict: + self._SELECTED_TAB_YOUR_LANGUAGES = value + saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + + @property + def SELECTED_TAB_TARGET_LANGUAGES(self): + return self._SELECTED_TAB_TARGET_LANGUAGES + + @SELECTED_TAB_TARGET_LANGUAGES.setter + def SELECTED_TAB_TARGET_LANGUAGES(self, value): + if type(value) is dict: + self._SELECTED_TAB_TARGET_LANGUAGES = value + saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + def init_config(self): self._VERSION = "1.3.2" self._PATH_CONFIG = "./config.json" @@ -445,13 +455,12 @@ class Config: self._FONT_FAMILY = "Yu Gothic UI" self._UI_LANGUAGE = "en" self._CHOICE_TRANSLATOR = translatorEngine[0] - self._INPUT_SOURCE_LANG = list(translation_lang[self.CHOICE_TRANSLATOR]["source"].keys())[0] - self._INPUT_TARGET_LANG = list(translation_lang[self.CHOICE_TRANSLATOR]["target"].keys())[1] - self._OUTPUT_SOURCE_LANG = list(translation_lang[self.CHOICE_TRANSLATOR]["source"].keys())[1] - self._OUTPUT_TARGET_LANG = list(translation_lang[self.CHOICE_TRANSLATOR]["target"].keys())[0] + self._SOURCE_LANGUAGE = "Japanese" + self._SOURCE_COUNTRY = "Japan" + self._TARGET_LANGUAGE = "English" + self._TARGET_COUNTRY = "United States" self._CHOICE_MIC_HOST = getDefaultInputDevice()["host"]["name"] self._CHOICE_MIC_DEVICE = getDefaultInputDevice()["device"]["name"] - self._INPUT_MIC_VOICE_LANGUAGE = list(transcription_lang.keys())[0] self._INPUT_MIC_ENERGY_THRESHOLD = 300 self._INPUT_MIC_DYNAMIC_ENERGY_THRESHOLD = True self._INPUT_MIC_RECORD_TIMEOUT = 3 @@ -459,7 +468,6 @@ class Config: self._INPUT_MIC_MAX_PHRASES = 10 self._INPUT_MIC_WORD_FILTER = [] self._CHOICE_SPEAKER_DEVICE = getDefaultOutputDevice()["name"] - self._INPUT_SPEAKER_VOICE_LANGUAGE = list(transcription_lang.keys())[1] self._INPUT_SPEAKER_ENERGY_THRESHOLD = 300 self._INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD = True self._INPUT_SPEAKER_RECORD_TIMEOUT = 3 @@ -485,6 +493,17 @@ class Config: ] self._MAX_MIC_ENERGY_THRESHOLD = 2000 self._MAX_SPEAKER_ENERGY_THRESHOLD = 4000 + self._SELECTED_TAB_NO = "tab_1" + self._SELECTED_TAB_YOUR_LANGUAGES = { + "tab_1":"Japanese\n(Japan)", + "tab_2":"Japanese\n(Japan)", + "tab_3":"Japanese\n(Japan)", + } + self._SELECTED_TAB_TARGET_LANGUAGES = { + "tab_1":"English\n(United States)", + "tab_2":"English\n(United States)", + "tab_3":"English\n(United States)", + } def load_config(self): if os_path.isfile(self.PATH_CONFIG) is not False: diff --git a/main.py b/main.py index 9e3eb8c7..3c98b8de 100644 --- a/main.py +++ b/main.py @@ -3,6 +3,8 @@ import customtkinter from vrct_gui import vrct_gui from config import config from model import model +from models.translation.translation_languages import translatorEngine, translation_lang +from models.transcription.transcription_languages import transcription_lang # func transcription send message def sendMicMessage(message): @@ -117,6 +119,86 @@ def foregroundOnForcefully(e): if config.ENABLE_FOREGROUND: vrct_gui.attributes("-topmost", True) +# func select languages +def getListLanguageAndCountry(): + langs = [] + for lang in model.SUPPORTED_LANGUAGES: + for country in transcription_lang[lang]: + langs.append(f"{lang}\n({country})") + return langs + +def getLanguageAndState(select): + parts = select.split("\n") + language = parts[0] + country = parts[1][1:-1] + return language, country + +def setYourLanguageAndCountry(select): + languages = config.SELECTED_TAB_YOUR_LANGUAGES + languages[config.SELECTED_TAB_NO] = select + config.SELECTED_TAB_YOUR_LANGUAGES = languages + + language, country = getLanguageAndState(select) + config.SOURCE_LANGUAGE = language + config.SOURCE_COUNTRY = country + +def setTargetLanguageAndCountry(select): + languages = config.SELECTED_TAB_TARGET_LANGUAGES + languages[config.SELECTED_TAB_NO] = select + config.SELECTED_TAB_TARGET_LANGUAGES = languages + + language, country = getLanguageAndState(select) + config.TARGET_LANGUAGE = language + config.TARGET_COUNTRY = country + +def callbackSelectedTabNo1(): + config.SELECTED_TAB_NO = "tab_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] + + languages = config.SELECTED_TAB_YOUR_LANGUAGES + select = languages[config.SELECTED_TAB_NO] + language, country = getLanguageAndState(select) + config.SOURCE_LANGUAGE = language + config.SOURCE_COUNTRY = country + languages = config.SELECTED_TAB_TARGET_LANGUAGES + select = languages[config.SELECTED_TAB_NO] + language, country = getLanguageAndState(select) + config.TARGET_LANGUAGE = language + config.TARGET_COUNTRY = country + +def callbackSelectedTabNo2(): + config.SELECTED_TAB_NO = "tab_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] + + languages = config.SELECTED_TAB_YOUR_LANGUAGES + select = languages[config.SELECTED_TAB_NO] + language, country = getLanguageAndState(select) + config.SOURCE_LANGUAGE = language + config.SOURCE_COUNTRY = country + languages = config.SELECTED_TAB_TARGET_LANGUAGES + select = languages[config.SELECTED_TAB_NO] + language, country = getLanguageAndState(select) + config.TARGET_LANGUAGE = language + config.TARGET_COUNTRY = country + +def callbackSelectedTabNo3(): + config.SELECTED_TAB_NO = "tab_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] + + languages = config.SELECTED_TAB_YOUR_LANGUAGES + select = languages[config.SELECTED_TAB_NO] + language, country = getLanguageAndState(select) + config.SOURCE_LANGUAGE = language + config.SOURCE_COUNTRY = country + languages = config.SELECTED_TAB_TARGET_LANGUAGES + select = languages[config.SELECTED_TAB_NO] + language, country = getLanguageAndState(select) + config.TARGET_LANGUAGE = language + config.TARGET_COUNTRY = country + # func print textbox def logTranslationStatusChange(): textbox_all = getattr(vrct_gui, "textbox_all") @@ -250,5 +332,18 @@ entry_message_box.bind("", messageBoxPressKeyAny) entry_message_box.bind("", foregroundOffForcefully) entry_message_box.bind("", foregroundOnForcefully) +sqls__optionmenu_your_language = getattr(vrct_gui, "sqls__optionmenu_your_language") +sqls__optionmenu_your_language.configure(values=getListLanguageAndCountry()) +sqls__optionmenu_your_language.configure(command=setYourLanguageAndCountry) + +sqls__optionmenu_target_language = getattr(vrct_gui, "sqls__optionmenu_target_language") +sqls__optionmenu_target_language.configure(values=getListLanguageAndCountry()) +sqls__optionmenu_target_language.configure(command=setTargetLanguageAndCountry) + +vrct_gui.CALLBACK_SELECTED_TAB_NO_1 = callbackSelectedTabNo1 +vrct_gui.CALLBACK_SELECTED_TAB_NO_2 = callbackSelectedTabNo2 +vrct_gui.CALLBACK_SELECTED_TAB_NO_3 = callbackSelectedTabNo3 + + if __name__ == "__main__": vrct_gui.startMainLoop() \ No newline at end of file diff --git a/model.py b/model.py index f9b9060b..eabcd022 100644 --- a/model.py +++ b/model.py @@ -29,6 +29,15 @@ class threadFnc(Thread): self.fnc(*self._args, **self._kwargs) class Model: + # Languages available for both transcription and translation + SUPPORTED_LANGUAGES = [ + 'Afrikaans', 'Arabic', 'Basque', 'Bulgarian', 'Catalan', 'Chinese', 'Croatian', + 'Czech', 'Danish', 'Dutch', 'English', 'Filipino', 'Finnish', 'French', 'German', + 'Greek', 'Hebrew', 'Hindi', 'Hungarian', 'Indonesian', 'Italian', 'Japanese', + 'Korean', 'Lithuanian', 'Malay', 'Norwegian', 'Polish', 'Portuguese', 'Romanian', + 'Russian', 'Serbian', 'Slovak', 'Slovenian', 'Spanish', 'Swedish', 'Thai', 'Turkish', + 'Ukrainian', 'Vietnamese' + ] _instance = None def __new__(cls): @@ -75,8 +84,8 @@ class Model: def getInputTranslate(self, message): translation = self.translator.translate( translator_name=config.CHOICE_TRANSLATOR, - source_language=config.INPUT_SOURCE_LANG, - target_language=config.INPUT_TARGET_LANG, + source_language=config.SOURCE_LANGUAGE, + target_language=config.TARGET_LANGUAGE, message=message ) return translation @@ -170,7 +179,7 @@ class Model: max_phrases=config.INPUT_MIC_MAX_PHRASES, ) def sendMicTranscript(): - mic_transcriber.transcribeAudioQueue(mic_audio_queue, config.INPUT_MIC_VOICE_LANGUAGE) + mic_transcriber.transcribeAudioQueue(mic_audio_queue, config.SOURCE_LANGUAGE, config.SOURCE_COUNTRY) message = mic_transcriber.getTranscript() fnc(message) @@ -222,7 +231,7 @@ class Model: max_phrases=config.INPUT_SPEAKER_MAX_PHRASES, ) def sendSpkTranscript(): - spk_transcriber.transcribeAudioQueue(spk_audio_queue, config.INPUT_SPEAKER_VOICE_LANGUAGE) + spk_transcriber.transcribeAudioQueue(spk_audio_queue, config.TARGET_LANGUAGE, config.TARGET_COUNTRY) message = spk_transcriber.getTranscript() fnc(message) diff --git a/models/transcription/transcription_transcriber.py b/models/transcription/transcription_transcriber.py index e0b0eb6f..b058f4ec 100644 --- a/models/transcription/transcription_transcriber.py +++ b/models/transcription/transcription_transcriber.py @@ -27,7 +27,7 @@ class AudioTranscriber: "process_data_func": self.processSpeakerData if speaker else self.processSpeakerData } - def transcribeAudioQueue(self, audio_queue, language): + def transcribeAudioQueue(self, audio_queue, language, country): # while True: audio, time_spoken = audio_queue.get() self.updateLastSampleAndPhraseStatus(audio, time_spoken) @@ -37,7 +37,7 @@ class AudioTranscriber: # fd, path = tempfile.mkstemp(suffix=".wav") # os.close(fd) audio_data = self.audio_sources["process_data_func"]() - text = self.audio_recognizer.recognize_google(audio_data, language=transcription_lang[language]) + text = self.audio_recognizer.recognize_google(audio_data, language=transcription_lang[language][country]) except Exception as e: pass finally: diff --git a/vrct_gui/main_window/widgets/create_sidebar.py b/vrct_gui/main_window/widgets/create_sidebar.py index f58ecb8f..ed8fb9fb 100644 --- a/vrct_gui/main_window/widgets/create_sidebar.py +++ b/vrct_gui/main_window/widgets/create_sidebar.py @@ -120,22 +120,28 @@ def createSidebar(settings, main_window): def switchToPreset1(e): print("1") - main_window.YOUR_LANGUAGE = "Japanese\n(Japan)" - main_window.TARGET_LANGUAGE = "English\n(United States)" + if callable(main_window.CALLBACK_SELECTED_TAB_NO_1) is True: + main_window.CALLBACK_SELECTED_TAB_NO_1() + # main_window.YOUR_LANGUAGE = "Japanese\n(Japan)" + # main_window.TARGET_LANGUAGE = "English\n(United States)" target_active_widget = getattr(main_window, "sqls__presets_button_1") switchPresetTabFunction(target_active_widget) def switchToPreset2(e): print("2") - main_window.YOUR_LANGUAGE = "English\n(United States)" - main_window.TARGET_LANGUAGE = "Japanese\n(Japan)" + if callable(main_window.CALLBACK_SELECTED_TAB_NO_2) is True: + main_window.CALLBACK_SELECTED_TAB_NO_2() + # main_window.YOUR_LANGUAGE = "English\n(United States)" + # main_window.TARGET_LANGUAGE = "Japanese\n(Japan)" target_active_widget = getattr(main_window, "sqls__presets_button_2") switchPresetTabFunction(target_active_widget) def switchToPreset3(e): print("3") - main_window.YOUR_LANGUAGE = "Japanese\n(Japan)" - main_window.TARGET_LANGUAGE = "Chinese, Cantonese\n(Traditional Hong Kong)" + if callable(main_window.CALLBACK_SELECTED_TAB_NO_3) is True: + main_window.CALLBACK_SELECTED_TAB_NO_3() + # main_window.YOUR_LANGUAGE = "Japanese\n(Japan)" + # main_window.TARGET_LANGUAGE = "Chinese, Cantonese\n(Traditional Hong Kong)" target_active_widget = getattr(main_window, "sqls__presets_button_3") switchPresetTabFunction(target_active_widget) diff --git a/vrct_gui/vrct_gui.py b/vrct_gui/vrct_gui.py index 245527a1..c1b05610 100644 --- a/vrct_gui/vrct_gui.py +++ b/vrct_gui/vrct_gui.py @@ -47,6 +47,9 @@ class VRCT_GUI(CTk): self.YOUR_LANGUAGE = "Japanese\n(Japan)" self.TARGET_LANGUAGE = "English\n(United States)" + self.CALLBACK_SELECTED_TAB_NO_1 = None + self.CALLBACK_SELECTED_TAB_NO_2 = None + self.CALLBACK_SELECTED_TAB_NO_3 = None self.config_window = ConfigWindow(vrct_gui=self, settings=self.settings.config_window) # self.information_window = ToplevelWindowInformation(self) From f5049b3f659036e6a2c544fdc64ff55469b864db Mon Sep 17 00:00:00 2001 From: misygauziya Date: Tue, 29 Aug 2023 12:12:51 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[Update]=20=E7=BF=BB=E8=A8=B3=E3=82=A8?= =?UTF-8?q?=E3=83=B3=E3=82=B8=E3=83=B3=E3=82=92=E8=87=AA=E5=8B=95=E3=81=A7?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 45 +++++++++++++++------------------------------ model.py | 31 +++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 32 deletions(-) diff --git a/main.py b/main.py index 3c98b8de..8ef83a7f 100644 --- a/main.py +++ b/main.py @@ -3,8 +3,6 @@ import customtkinter from vrct_gui import vrct_gui from config import config from model import model -from models.translation.translation_languages import translatorEngine, translation_lang -from models.transcription.transcription_languages import transcription_lang # func transcription send message def sendMicMessage(message): @@ -120,84 +118,71 @@ def foregroundOnForcefully(e): vrct_gui.attributes("-topmost", True) # func select languages -def getListLanguageAndCountry(): - langs = [] - for lang in model.SUPPORTED_LANGUAGES: - for country in transcription_lang[lang]: - langs.append(f"{lang}\n({country})") - return langs - -def getLanguageAndState(select): - parts = select.split("\n") - language = parts[0] - country = parts[1][1:-1] - return language, country - def setYourLanguageAndCountry(select): languages = config.SELECTED_TAB_YOUR_LANGUAGES languages[config.SELECTED_TAB_NO] = select config.SELECTED_TAB_YOUR_LANGUAGES = languages - - language, country = getLanguageAndState(select) + language, country = model.getLanguageAndCountry(select) config.SOURCE_LANGUAGE = language config.SOURCE_COUNTRY = country + config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) def setTargetLanguageAndCountry(select): languages = config.SELECTED_TAB_TARGET_LANGUAGES languages[config.SELECTED_TAB_NO] = select config.SELECTED_TAB_TARGET_LANGUAGES = languages - - language, country = getLanguageAndState(select) + language, country = model.getLanguageAndCountry(select) config.TARGET_LANGUAGE = language config.TARGET_COUNTRY = country + config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) def callbackSelectedTabNo1(): config.SELECTED_TAB_NO = "tab_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] - languages = config.SELECTED_TAB_YOUR_LANGUAGES select = languages[config.SELECTED_TAB_NO] - language, country = getLanguageAndState(select) + language, country = model.getLanguageAndCountry(select) config.SOURCE_LANGUAGE = language config.SOURCE_COUNTRY = country languages = config.SELECTED_TAB_TARGET_LANGUAGES select = languages[config.SELECTED_TAB_NO] - language, country = getLanguageAndState(select) + language, country = model.getLanguageAndCountry(select) config.TARGET_LANGUAGE = language config.TARGET_COUNTRY = country + config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) def callbackSelectedTabNo2(): config.SELECTED_TAB_NO = "tab_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] - languages = config.SELECTED_TAB_YOUR_LANGUAGES select = languages[config.SELECTED_TAB_NO] - language, country = getLanguageAndState(select) + language, country = model.getLanguageAndCountry(select) config.SOURCE_LANGUAGE = language config.SOURCE_COUNTRY = country languages = config.SELECTED_TAB_TARGET_LANGUAGES select = languages[config.SELECTED_TAB_NO] - language, country = getLanguageAndState(select) + language, country = model.getLanguageAndCountry(select) config.TARGET_LANGUAGE = language config.TARGET_COUNTRY = country + config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) def callbackSelectedTabNo3(): config.SELECTED_TAB_NO = "tab_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] - languages = config.SELECTED_TAB_YOUR_LANGUAGES select = languages[config.SELECTED_TAB_NO] - language, country = getLanguageAndState(select) + language, country = model.getLanguageAndCountry(select) config.SOURCE_LANGUAGE = language config.SOURCE_COUNTRY = country languages = config.SELECTED_TAB_TARGET_LANGUAGES select = languages[config.SELECTED_TAB_NO] - language, country = getLanguageAndState(select) + language, country = model.getLanguageAndCountry(select) config.TARGET_LANGUAGE = language config.TARGET_COUNTRY = country + config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) # func print textbox def logTranslationStatusChange(): @@ -333,11 +318,11 @@ entry_message_box.bind("", foregroundOffForcefully) entry_message_box.bind("", foregroundOnForcefully) sqls__optionmenu_your_language = getattr(vrct_gui, "sqls__optionmenu_your_language") -sqls__optionmenu_your_language.configure(values=getListLanguageAndCountry()) +sqls__optionmenu_your_language.configure(values=model.getListLanguageAndCountry()) sqls__optionmenu_your_language.configure(command=setYourLanguageAndCountry) sqls__optionmenu_target_language = getattr(vrct_gui, "sqls__optionmenu_target_language") -sqls__optionmenu_target_language.configure(values=getListLanguageAndCountry()) +sqls__optionmenu_target_language.configure(values=model.getListLanguageAndCountry()) sqls__optionmenu_target_language.configure(command=setTargetLanguageAndCountry) vrct_gui.CALLBACK_SELECTED_TAB_NO_1 = callbackSelectedTabNo1 diff --git a/model.py b/model.py index eabcd022..19bb3820 100644 --- a/model.py +++ b/model.py @@ -11,6 +11,8 @@ from models.transcription.transcription_recorder import SelectedMicRecorder, Sel from models.transcription.transcription_recorder import SelectedMicEnergyRecorder, SelectedSpeakeEnergyRecorder from models.transcription.transcription_transcriber import AudioTranscriber from models.xsoverlay.notification import xsoverlayForVRCT +from models.translation.translation_languages import translatorEngine, translation_lang +from models.transcription.transcription_languages import transcription_lang from config import config class threadFnc(Thread): @@ -75,6 +77,31 @@ class Model: config.AUTH_KEYS = auth_keys return result + @staticmethod + def getListLanguageAndCountry(): + langs = [] + for lang in model.SUPPORTED_LANGUAGES: + for country in transcription_lang[lang]: + langs.append(f"{lang}\n({country})") + return langs + + @staticmethod + def getLanguageAndCountry(select): + parts = select.split("\n") + language = parts[0] + country = parts[1][1:-1] + return language, country + + @staticmethod + def findTranslationEngine(source_lang, target_lang): + compatible_engines = [] + for engine in translatorEngine: + source_languages = translation_lang.get(engine, {}).get("source", {}) + target_languages = translation_lang.get(engine, {}).get("target", {}) + if source_lang in source_languages and target_lang in target_languages: + compatible_engines.append(engine) + return compatible_engines[0] + def getTranslatorStatus(self): return self.translator.translator_status[config.CHOICE_TRANSLATOR] @@ -93,8 +120,8 @@ class Model: def getOutputTranslate(self, message): translation = self.translator.translate( translator_name=config.CHOICE_TRANSLATOR, - source_language=config.OUTPUT_SOURCE_LANG, - target_language=config.OUTPUT_TARGET_LANG, + source_language=config.TARGET_LANGUAGE, + target_language=config.SOURCE_LANGUAGE, message=message ) return translation From bcc2f69b83eac9dd0e8a47a1ccdbc779ce082438 Mon Sep 17 00:00:00 2001 From: misygauziya Date: Tue, 29 Aug 2023 12:43:29 +0900 Subject: [PATCH 4/6] [Update] remove DeepL(auth) --- models/translation/translation_languages.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models/translation/translation_languages.py b/models/translation/translation_languages.py index 1b68bf81..a18eb5a1 100644 --- a/models/translation/translation_languages.py +++ b/models/translation/translation_languages.py @@ -1,4 +1,5 @@ -translatorEngine = ["DeepL(web)", "DeepL(auth)", "Google(web)", "Bing(web)"] +# translatorEngine = ["DeepL(web)", "DeepL(auth)", "Google(web)", "Bing(web)"] +translatorEngine = ["DeepL(web)", "Google(web)", "Bing(web)"] translation_lang = {} dict_deepl_web_languages = { "Japanese":"JA", From 78ef7404aa7fb68879fcbc881537cc06739931e5 Mon Sep 17 00:00:00 2001 From: misygauziya Date: Tue, 29 Aug 2023 15:25:56 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[Update]=20=E8=B5=B7=E5=8B=95=E6=99=82?= =?UTF-8?q?=E3=81=AB=E5=89=8D=E5=9B=9E=E3=81=AEtab=E3=82=92=E9=81=B8?= =?UTF-8?q?=E6=8A=9E=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 14 +++++++------- main.py | 16 +++++++++++++--- vrct_gui/main_window/widgets/create_sidebar.py | 12 ++++++------ 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/config.py b/config.py index f90f5785..9d8d2ae0 100644 --- a/config.py +++ b/config.py @@ -493,16 +493,16 @@ class Config: ] self._MAX_MIC_ENERGY_THRESHOLD = 2000 self._MAX_SPEAKER_ENERGY_THRESHOLD = 4000 - self._SELECTED_TAB_NO = "tab_1" + self._SELECTED_TAB_NO = "1" self._SELECTED_TAB_YOUR_LANGUAGES = { - "tab_1":"Japanese\n(Japan)", - "tab_2":"Japanese\n(Japan)", - "tab_3":"Japanese\n(Japan)", + "1":"Japanese\n(Japan)", + "2":"Japanese\n(Japan)", + "3":"Japanese\n(Japan)", } self._SELECTED_TAB_TARGET_LANGUAGES = { - "tab_1":"English\n(United States)", - "tab_2":"English\n(United States)", - "tab_3":"English\n(United States)", + "1":"English\n(United States)", + "2":"English\n(United States)", + "3":"English\n(United States)", } def load_config(self): diff --git a/main.py b/main.py index 8ef83a7f..a1ca52b8 100644 --- a/main.py +++ b/main.py @@ -1,8 +1,10 @@ from threading import Thread import customtkinter +from customtkinter import StringVar from vrct_gui import vrct_gui from config import config from model import model +from vrct_gui.ui_utils import setDefaultActiveTab # func transcription send message def sendMicMessage(message): @@ -137,7 +139,7 @@ def setTargetLanguageAndCountry(select): config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) def callbackSelectedTabNo1(): - config.SELECTED_TAB_NO = "tab_1" + 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] languages = config.SELECTED_TAB_YOUR_LANGUAGES @@ -153,7 +155,7 @@ def callbackSelectedTabNo1(): config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) def callbackSelectedTabNo2(): - config.SELECTED_TAB_NO = "tab_2" + 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] languages = config.SELECTED_TAB_YOUR_LANGUAGES @@ -169,7 +171,7 @@ def callbackSelectedTabNo2(): config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) def callbackSelectedTabNo3(): - config.SELECTED_TAB_NO = "tab_3" + 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] languages = config.SELECTED_TAB_YOUR_LANGUAGES @@ -320,15 +322,23 @@ entry_message_box.bind("", foregroundOnForcefully) sqls__optionmenu_your_language = getattr(vrct_gui, "sqls__optionmenu_your_language") sqls__optionmenu_your_language.configure(values=model.getListLanguageAndCountry()) sqls__optionmenu_your_language.configure(command=setYourLanguageAndCountry) +sqls__optionmenu_your_language.configure(variable=StringVar(value=config.SELECTED_TAB_YOUR_LANGUAGES[config.SELECTED_TAB_NO])) sqls__optionmenu_target_language = getattr(vrct_gui, "sqls__optionmenu_target_language") sqls__optionmenu_target_language.configure(values=model.getListLanguageAndCountry()) sqls__optionmenu_target_language.configure(command=setTargetLanguageAndCountry) +sqls__optionmenu_target_language.configure(variable=StringVar(value=config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO])) vrct_gui.CALLBACK_SELECTED_TAB_NO_1 = callbackSelectedTabNo1 vrct_gui.CALLBACK_SELECTED_TAB_NO_2 = callbackSelectedTabNo2 vrct_gui.CALLBACK_SELECTED_TAB_NO_3 = callbackSelectedTabNo3 +vrct_gui.current_active_preset_tab = getattr(vrct_gui, f"sqls__presets_button_{config.SELECTED_TAB_NO}") +setDefaultActiveTab( + active_tab_widget=vrct_gui.current_active_preset_tab, + active_bg_color=vrct_gui.settings.main.ctm.SQLS__PRESETS_TAB_BG_ACTIVE_COLOR, + active_text_color=vrct_gui.settings.main.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR +) if __name__ == "__main__": vrct_gui.startMainLoop() \ No newline at end of file diff --git a/vrct_gui/main_window/widgets/create_sidebar.py b/vrct_gui/main_window/widgets/create_sidebar.py index ed8fb9fb..1ac12a85 100644 --- a/vrct_gui/main_window/widgets/create_sidebar.py +++ b/vrct_gui/main_window/widgets/create_sidebar.py @@ -513,12 +513,12 @@ def createSidebar(settings, main_window): column+=1 # Set default active preset tab - main_window.current_active_preset_tab = getattr(main_window, "sqls__presets_button_1") - setDefaultActiveTab( - active_tab_widget=main_window.current_active_preset_tab, - active_bg_color=settings.ctm.SQLS__PRESETS_TAB_BG_ACTIVE_COLOR, - active_text_color=settings.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR - ) + # main_window.current_active_preset_tab = getattr(main_window, "sqls__presets_button_1") + # setDefaultActiveTab( + # active_tab_widget=main_window.current_active_preset_tab, + # active_bg_color=settings.ctm.SQLS__PRESETS_TAB_BG_ACTIVE_COLOR, + # active_text_color=settings.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR + # ) # Quick Language settings BOX From 957c48caeb4be52798c4dece06680c9864a3c4fd Mon Sep 17 00:00:00 2001 From: misygauziya Date: Tue, 29 Aug 2023 16:15:54 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[Update]=20main=20window=E3=81=AE=E3=81=BF?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=81=AE=E5=AE=9F=E8=A3=85=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 34 +++++++++++-------- vrct_gui/_changeMainWindowWidgetsStatus.py | 8 +++-- .../main_window/widgets/create_sidebar.py | 16 ++++----- vrct_gui/vrct_gui.py | 4 +++ 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/main.py b/main.py index a1ca52b8..cfd6c49d 100644 --- a/main.py +++ b/main.py @@ -207,6 +207,16 @@ def logTranscriptionSendStatusChange(): vrct_gui.printToTextbox(textbox_all, "Voice2chatbox機能をOFFにしました", "", "INFO") vrct_gui.printToTextbox(textbox_system, "Voice2chatbox機能をOFFにしました", "", "INFO") +def logTranscriptionReceiveStatusChange(): + textbox_all = getattr(vrct_gui, "textbox_all") + textbox_system = getattr(vrct_gui, "textbox_system") + if config.ENABLE_TRANSCRIPTION_RECEIVE is True: + vrct_gui.printToTextbox(textbox_all, "Speaker2chatbox機能をONにしました", "", "INFO") + vrct_gui.printToTextbox(textbox_system, "Speaker2chatbox機能をONにしました", "", "INFO") + else: + vrct_gui.printToTextbox(textbox_all, "Speaker2chatbox機能をOFFにしました", "", "INFO") + vrct_gui.printToTextbox(textbox_system, "Speaker2chatbox機能をOFFにしました", "", "INFO") + def logSendMessage(message, translate): textbox_all = getattr(vrct_gui, "textbox_all") textbox_sent = getattr(vrct_gui, "textbox_sent") @@ -248,11 +258,11 @@ def logForegroundStatusChange(): vrct_gui.printToTextbox(textbox_system, "Stop foreground", "", "INFO") # command func -def toggleTranslationFeature(): +def callbackToggleTranslation(): config.ENABLE_TRANSLATION = getattr(vrct_gui, "translation_switch_box").get() logTranslationStatusChange() -def toggleTranscriptionSendFeature(): +def callbackToggleTranscriptionSend(): vrct_gui.changeMainWindowWidgetsStatus("disabled", "All") config.ENABLE_TRANSCRIPTION_SEND = getattr(vrct_gui, "transcription_send_switch_box").get() if config.ENABLE_TRANSCRIPTION_SEND is True: @@ -265,7 +275,7 @@ def toggleTranscriptionSendFeature(): th_stopTranscriptionSendMessage.start() logTranscriptionSendStatusChange() -def toggleTranscriptionReceiveFeature(): +def callbackToggleTranscriptionReceive(): vrct_gui.changeMainWindowWidgetsStatus("disabled", "All") config.ENABLE_TRANSCRIPTION_RECEIVE = getattr(vrct_gui, "transcription_receive_switch_box").get() if config.ENABLE_TRANSCRIPTION_RECEIVE is True: @@ -276,9 +286,9 @@ def toggleTranscriptionReceiveFeature(): th_stopTranscriptionReceiveMessage = Thread(target=stopTranscriptionReceiveMessage) th_stopTranscriptionReceiveMessage.daemon = True th_stopTranscriptionReceiveMessage.start() - logTranscriptionSendStatusChange() + logTranscriptionReceiveStatusChange() -def toggleForegroundFeature(): +def callbackToggleForeground(): config.ENABLE_FOREGROUND = getattr(vrct_gui, "foreground_switch_box").get() if config.ENABLE_FOREGROUND is True: vrct_gui.attributes("-topmost", True) @@ -303,15 +313,11 @@ model.checkOSCStarted() # check Software Updated model.checkSoftwareUpdated() -# set commands -translation_switch_box = getattr(vrct_gui, "translation_switch_box") -translation_switch_box.configure(command=toggleTranslationFeature) -transcription_send_switch_box = getattr(vrct_gui, "transcription_send_switch_box") -transcription_send_switch_box.configure(command=toggleTranscriptionSendFeature) -transcription_receive_switch_box = getattr(vrct_gui, "transcription_receive_switch_box") -transcription_receive_switch_box.configure(command=toggleTranscriptionReceiveFeature) -foreground_switch_box = getattr(vrct_gui, "foreground_switch_box") -foreground_switch_box.configure(command=toggleForegroundFeature) +# set UI and callback +vrct_gui.CALLBACK_TOGGLE_TRANSLATION = callbackToggleTranslation +vrct_gui.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = callbackToggleTranscriptionSend +vrct_gui.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE = callbackToggleTranscriptionReceive +vrct_gui.CALLBACK_TOGGLE_FOREGROUND = callbackToggleForeground entry_message_box = getattr(vrct_gui, "entry_message_box") entry_message_box.bind("", messageBoxPressKeyEnter) diff --git a/vrct_gui/_changeMainWindowWidgetsStatus.py b/vrct_gui/_changeMainWindowWidgetsStatus.py index 602555c2..facca16a 100644 --- a/vrct_gui/_changeMainWindowWidgetsStatus.py +++ b/vrct_gui/_changeMainWindowWidgetsStatus.py @@ -85,7 +85,8 @@ def _changeMainWindowWidgetsStatus(vrct_gui, settings, status, target_names): vrct_gui.sqls__container_title.configure(text_color=settings.ctm.SF__TEXT_DISABLED_COLOR) vrct_gui.sqls__title_text_your_language.configure(text_color=settings.ctm.SF__TEXT_DISABLED_COLOR) vrct_gui.sqls__title_text_target_language.configure(text_color=settings.ctm.SF__TEXT_DISABLED_COLOR) - vrct_gui.current_active_preset_tab.children["!ctklabel"].configure(text_color=settings.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR_PASSIVE) + if settings.IS_SIDEBAR_COMPACT_MODE is False: + vrct_gui.current_active_preset_tab.children["!ctklabel"].configure(text_color=settings.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR_PASSIVE) vrct_gui.sqls__optionmenu_your_language.configure(state="disabled") vrct_gui.sqls__optionmenu_target_language.configure(state="disabled") @@ -93,8 +94,9 @@ def _changeMainWindowWidgetsStatus(vrct_gui, settings, status, target_names): vrct_gui.sqls__container_title.configure(text_color=settings.ctm.LABELS_TEXT_COLOR) vrct_gui.sqls__title_text_your_language.configure(text_color=settings.ctm.LABELS_TEXT_COLOR) vrct_gui.sqls__title_text_target_language.configure(text_color=settings.ctm.LABELS_TEXT_COLOR) - vrct_gui.current_active_preset_tab.children["!ctklabel"].configure(text_color=settings.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR) - vrct_gui.current_active_preset_tab.children["!ctklabel"].configure(text_color=settings.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR) + if settings.IS_SIDEBAR_COMPACT_MODE is False: + vrct_gui.current_active_preset_tab.children["!ctklabel"].configure(text_color=settings.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR) + vrct_gui.current_active_preset_tab.children["!ctklabel"].configure(text_color=settings.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR) vrct_gui.sqls__optionmenu_your_language.configure(state="normal") vrct_gui.sqls__optionmenu_target_language.configure(state="normal") diff --git a/vrct_gui/main_window/widgets/create_sidebar.py b/vrct_gui/main_window/widgets/create_sidebar.py index 1ac12a85..0a24336b 100644 --- a/vrct_gui/main_window/widgets/create_sidebar.py +++ b/vrct_gui/main_window/widgets/create_sidebar.py @@ -18,30 +18,30 @@ def createSidebar(settings, main_window): def toggleTranslationFeature(): + if callable(main_window.CALLBACK_TOGGLE_TRANSLATION) is True: + main_window.CALLBACK_TOGGLE_TRANSLATION() is_turned_on = getattr(main_window, "translation_switch_box").get() print(is_turned_on) toggleSidebarFeatureSelectedMarkIfTurnedOn(is_turned_on, main_window.translation_selected_mark) def toggleTranscriptionSendFeature(): + if callable(main_window.CALLBACK_TOGGLE_TRANSCRIPTION_SEND) is True: + main_window.CALLBACK_TOGGLE_TRANSCRIPTION_SEND() is_turned_on = getattr(main_window, "transcription_send_switch_box").get() print(is_turned_on) toggleSidebarFeatureSelectedMarkIfTurnedOn(is_turned_on, main_window.transcription_send_selected_mark) - if is_turned_on is True: - changeMainWindowWidgetsStatus("disabled", "All") - sleep(1.5) - changeMainWindowWidgetsStatus("normal", "All") def toggleTranscriptionReceiveFeature(): + if callable(main_window.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE) is True: + main_window.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE() is_turned_on = getattr(main_window, "transcription_receive_switch_box").get() print(is_turned_on) toggleSidebarFeatureSelectedMarkIfTurnedOn(is_turned_on, main_window.transcription_receive_selected_mark) - if is_turned_on is True: - changeMainWindowWidgetsStatus("disabled", "All") - sleep(1.5) - changeMainWindowWidgetsStatus("normal", "All") def toggleForegroundFeature(): + if callable(main_window.CALLBACK_TOGGLE_FOREGROUND) is True: + main_window.CALLBACK_TOGGLE_FOREGROUND() is_turned_on = getattr(main_window, "foreground_switch_box").get() print(is_turned_on) toggleSidebarFeatureSelectedMarkIfTurnedOn(is_turned_on, main_window.foreground_selected_mark) diff --git a/vrct_gui/vrct_gui.py b/vrct_gui/vrct_gui.py index c1b05610..29fb5bc2 100644 --- a/vrct_gui/vrct_gui.py +++ b/vrct_gui/vrct_gui.py @@ -47,6 +47,10 @@ class VRCT_GUI(CTk): self.YOUR_LANGUAGE = "Japanese\n(Japan)" self.TARGET_LANGUAGE = "English\n(United States)" + self.CALLBACK_TOGGLE_TRANSLATION = None + self.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = None + self.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE = None + self.CALLBACK_TOGGLE_FOREGROUND = None self.CALLBACK_SELECTED_TAB_NO_1 = None self.CALLBACK_SELECTED_TAB_NO_2 = None self.CALLBACK_SELECTED_TAB_NO_3 = None