diff --git a/config.py b/config.py index 0a7f2328..592a7d2a 100644 --- a/config.py +++ b/config.py @@ -80,7 +80,7 @@ class Config: @ENABLE_TRANSLATION.setter def ENABLE_TRANSLATION(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_TRANSLATION = value @property @@ -89,7 +89,7 @@ class Config: @ENABLE_TRANSCRIPTION_SEND.setter def ENABLE_TRANSCRIPTION_SEND(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_TRANSCRIPTION_SEND = value @property @@ -98,7 +98,7 @@ class Config: @ENABLE_TRANSCRIPTION_RECEIVE.setter def ENABLE_TRANSCRIPTION_RECEIVE(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_TRANSCRIPTION_RECEIVE = value @property @@ -107,7 +107,7 @@ class Config: @ENABLE_FOREGROUND.setter def ENABLE_FOREGROUND(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_FOREGROUND = value @property @@ -116,7 +116,7 @@ class Config: @SOURCE_COUNTRY.setter def SOURCE_COUNTRY(self, value): - if type(value) is str: + if isinstance(value, str): self._SOURCE_COUNTRY = value @property @@ -125,7 +125,7 @@ class Config: @SOURCE_LANGUAGE.setter def SOURCE_LANGUAGE(self, value): - if type(value) is str: + if isinstance(value, str): self._SOURCE_LANGUAGE = value @property @@ -134,7 +134,7 @@ class Config: @TARGET_COUNTRY.setter def TARGET_COUNTRY(self, value): - if type(value) is str: + if isinstance(value, str): self._TARGET_COUNTRY = value @property @@ -143,7 +143,7 @@ class Config: @TARGET_LANGUAGE.setter def TARGET_LANGUAGE(self, value): - if type(value) is str: + if isinstance(value, str): self._TARGET_LANGUAGE = value @property @@ -164,7 +164,7 @@ class Config: @SELECTED_TAB_NO.setter def SELECTED_TAB_NO(self, value): - if type(value) is str: + if isinstance(value, str): self._SELECTED_TAB_NO = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -175,7 +175,7 @@ class Config: @SELECTED_TAB_YOUR_LANGUAGES.setter def SELECTED_TAB_YOUR_LANGUAGES(self, value): - if type(value) is dict: + if isinstance(value, dict): self._SELECTED_TAB_YOUR_LANGUAGES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -186,7 +186,7 @@ class Config: @SELECTED_TAB_TARGET_LANGUAGES.setter def SELECTED_TAB_TARGET_LANGUAGES(self, value): - if type(value) is dict: + if isinstance(value, dict): self._SELECTED_TAB_TARGET_LANGUAGES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -197,7 +197,7 @@ class Config: @IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE.setter def IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE(self, value): - if type(value) is bool: + if isinstance(value, bool): self._IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -209,7 +209,7 @@ class Config: @TRANSPARENCY.setter def TRANSPARENCY(self, value): - if type(value) is int and 0 <= value <= 100: + if isinstance(value, int) and 0 <= value <= 100: self._TRANSPARENCY = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -242,7 +242,7 @@ class Config: @TEXTBOX_UI_SCALING.setter def TEXTBOX_UI_SCALING(self, value): - if type(value) is int and 50 <= value <= 200: + if isinstance(value, int) and 50 <= value <= 200: self._TEXTBOX_UI_SCALING = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -300,7 +300,7 @@ class Config: @INPUT_MIC_ENERGY_THRESHOLD.setter def INPUT_MIC_ENERGY_THRESHOLD(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_MIC_ENERGY_THRESHOLD = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -311,7 +311,7 @@ class Config: @INPUT_MIC_DYNAMIC_ENERGY_THRESHOLD.setter def INPUT_MIC_DYNAMIC_ENERGY_THRESHOLD(self, value): - if type(value) is bool: + if isinstance(value, bool): self._INPUT_MIC_DYNAMIC_ENERGY_THRESHOLD = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -322,7 +322,7 @@ class Config: @INPUT_MIC_RECORD_TIMEOUT.setter def INPUT_MIC_RECORD_TIMEOUT(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_MIC_RECORD_TIMEOUT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -333,7 +333,7 @@ class Config: @INPUT_MIC_PHRASE_TIMEOUT.setter def INPUT_MIC_PHRASE_TIMEOUT(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_MIC_PHRASE_TIMEOUT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -344,7 +344,7 @@ class Config: @INPUT_MIC_MAX_PHRASES.setter def INPUT_MIC_MAX_PHRASES(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_MIC_MAX_PHRASES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -355,7 +355,7 @@ class Config: @INPUT_MIC_WORD_FILTER.setter def INPUT_MIC_WORD_FILTER(self, value): - if type(value) is list: + if isinstance(value, list): self._INPUT_MIC_WORD_FILTER = sorted(set(value), key=value.index) saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -366,7 +366,7 @@ class Config: @INPUT_SPEAKER_ENERGY_THRESHOLD.setter def INPUT_SPEAKER_ENERGY_THRESHOLD(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_SPEAKER_ENERGY_THRESHOLD = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -377,7 +377,7 @@ class Config: @INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD.setter def INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD(self, value): - if type(value) is bool: + if isinstance(value, bool): self._INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -388,7 +388,7 @@ class Config: @INPUT_SPEAKER_RECORD_TIMEOUT.setter def INPUT_SPEAKER_RECORD_TIMEOUT(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_SPEAKER_RECORD_TIMEOUT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -399,7 +399,7 @@ class Config: @INPUT_SPEAKER_PHRASE_TIMEOUT.setter def INPUT_SPEAKER_PHRASE_TIMEOUT(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_SPEAKER_PHRASE_TIMEOUT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -410,7 +410,7 @@ class Config: @INPUT_SPEAKER_MAX_PHRASES.setter def INPUT_SPEAKER_MAX_PHRASES(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_SPEAKER_MAX_PHRASES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -421,7 +421,7 @@ class Config: @OSC_IP_ADDRESS.setter def OSC_IP_ADDRESS(self, value): - if type(value) is str: + if isinstance(value, str): self._OSC_IP_ADDRESS = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -432,7 +432,7 @@ class Config: @OSC_PORT.setter def OSC_PORT(self, value): - if type(value) is int: + if isinstance(value, int): self._OSC_PORT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -443,9 +443,9 @@ class Config: @AUTH_KEYS.setter def AUTH_KEYS(self, value): - if type(value) is dict and set(value.keys()) == set(self.AUTH_KEYS.keys()): + if isinstance(value, dict) and set(value.keys()) == set(self.AUTH_KEYS.keys()): for key, value in value.items(): - if type(value) is str: + if isinstance(value, str): self._AUTH_KEYS[key] = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, self.AUTH_KEYS) @@ -456,7 +456,7 @@ class Config: @MESSAGE_FORMAT.setter def MESSAGE_FORMAT(self, value): - if type(value) is str: + if isinstance(value, str): if isUniqueStrings(["[message]", "[translation]"], value) is False: value = "[message]([translation])" self._MESSAGE_FORMAT = value @@ -469,7 +469,7 @@ class Config: @ENABLE_AUTO_CLEAR_MESSAGE_BOX.setter def ENABLE_AUTO_CLEAR_MESSAGE_BOX(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_AUTO_CLEAR_MESSAGE_BOX = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -480,7 +480,7 @@ class Config: @ENABLE_NOTICE_XSOVERLAY.setter def ENABLE_NOTICE_XSOVERLAY(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_NOTICE_XSOVERLAY = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -491,7 +491,7 @@ class Config: @ENABLE_SEND_MESSAGE_TO_VRC.setter def ENABLE_SEND_MESSAGE_TO_VRC(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_SEND_MESSAGE_TO_VRC = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -503,7 +503,7 @@ class Config: # @STARTUP_OSC_ENABLED_CHECK.setter # def STARTUP_OSC_ENABLED_CHECK(self, value): - # if type(value) is bool: + # if isinstance(value, bool): # self._STARTUP_OSC_ENABLED_CHECK = value # saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -514,7 +514,7 @@ class Config: @ENABLE_LOGGER.setter def ENABLE_LOGGER(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_LOGGER = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -525,7 +525,7 @@ class Config: @IS_CONFIG_WINDOW_COMPACT_MODE.setter def IS_CONFIG_WINDOW_COMPACT_MODE(self, value): - if type(value) is bool: + if isinstance(value, bool): self._IS_CONFIG_WINDOW_COMPACT_MODE = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) diff --git a/controller.py b/controller.py index 421330a8..19743805 100644 --- a/controller.py +++ b/controller.py @@ -30,7 +30,7 @@ def sendMicMessage(message): pass else: translation = model.getInputTranslate(message) - if translation == False: + if translation is False: config.ENABLE_TRANSLATION = False translation = "" view.translationEngineLimitErrorProcess() @@ -94,7 +94,7 @@ def receiveSpeakerMessage(message): pass else: translation = model.getOutputTranslate(message) - if translation == False: + if translation is False: config.ENABLE_TRANSLATION = False translation = "" view.translationEngineLimitErrorProcess() @@ -160,7 +160,7 @@ def sendChatMessage(message): pass else: translation = model.getInputTranslate(message) - if translation == False: + if translation is False: config.ENABLE_TRANSLATION = False translation = "" view.translationEngineLimitErrorProcess() @@ -426,7 +426,8 @@ def callbackSetMicDevice(value): def callbackSetMicEnergyThreshold(value): print("callbackSetMicEnergyThreshold", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value <= config.MAX_MIC_ENERGY_THRESHOLD: @@ -435,7 +436,7 @@ def callbackSetMicEnergyThreshold(value): view.setGuiVariable_MicEnergyThreshold(config.INPUT_MIC_ENERGY_THRESHOLD) else: raise ValueError() - except: + except Exception: view.showErrorMessage_MicEnergyThreshold() def callbackSetMicDynamicEnergyThreshold(value): @@ -462,7 +463,8 @@ def callbackCheckMicThreshold(is_turned_on): def callbackSetMicRecordTimeout(value): print("callbackSetMicRecordTimeout", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value <= config.INPUT_MIC_PHRASE_TIMEOUT: @@ -471,12 +473,13 @@ def callbackSetMicRecordTimeout(value): view.setGuiVariable_MicRecordTimeout(config.INPUT_MIC_RECORD_TIMEOUT) else: raise ValueError() - except: + except Exception: view.showErrorMessage_MicRecordTimeout() def callbackSetMicPhraseTimeout(value): print("callbackSetMicPhraseTimeout", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value >= config.INPUT_MIC_RECORD_TIMEOUT: @@ -485,12 +488,13 @@ def callbackSetMicPhraseTimeout(value): view.setGuiVariable_MicPhraseTimeout(config.INPUT_MIC_PHRASE_TIMEOUT) else: raise ValueError() - except: + except Exception: view.showErrorMessage_MicPhraseTimeout() def callbackSetMicMaxPhrases(value): print("callbackSetMicMaxPhrases", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value: @@ -499,7 +503,7 @@ def callbackSetMicMaxPhrases(value): view.setGuiVariable_MicMaxPhrases(config.INPUT_MIC_MAX_PHRASES) else: raise ValueError() - except: + except Exception: view.showErrorMessage_MicMaxPhrases() def callbackSetMicWordFilter(values): @@ -532,13 +536,14 @@ def callbackDeleteMicWordFilter(value): new_input_mic_word_filter_list.remove(str(value)) config.INPUT_MIC_WORD_FILTER = new_input_mic_word_filter_list view.setLatestConfigVariable("MicMicWordFilter") - except: + except Exception: print("There was no the target word in config.INPUT_MIC_WORD_FILTER") def callbackSetSpeakerEnergyThreshold(value): print("callbackSetSpeakerEnergyThreshold", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value <= config.MAX_SPEAKER_ENERGY_THRESHOLD: @@ -547,7 +552,7 @@ def callbackSetSpeakerEnergyThreshold(value): view.setGuiVariable_SpeakerEnergyThreshold(config.INPUT_SPEAKER_ENERGY_THRESHOLD) else: raise ValueError() - except: + except Exception: view.showErrorMessage_SpeakerEnergyThreshold() def callbackSetSpeakerDynamicEnergyThreshold(value): @@ -580,7 +585,8 @@ def callbackCheckSpeakerThreshold(is_turned_on): def callbackSetSpeakerRecordTimeout(value): print("callbackSetSpeakerRecordTimeout", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value <= config.INPUT_SPEAKER_PHRASE_TIMEOUT: @@ -589,12 +595,13 @@ def callbackSetSpeakerRecordTimeout(value): view.setGuiVariable_SpeakerRecordTimeout(config.INPUT_SPEAKER_RECORD_TIMEOUT) else: raise ValueError() - except: + except Exception: view.showErrorMessage_SpeakerRecordTimeout() def callbackSetSpeakerPhraseTimeout(value): print("callbackSetSpeakerPhraseTimeout", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value >= config.INPUT_SPEAKER_RECORD_TIMEOUT: @@ -603,12 +610,13 @@ def callbackSetSpeakerPhraseTimeout(value): view.setGuiVariable_SpeakerPhraseTimeout(config.INPUT_SPEAKER_PHRASE_TIMEOUT) else: raise ValueError() - except: + except Exception: view.showErrorMessage_SpeakerPhraseTimeout() def callbackSetSpeakerMaxPhrases(value): print("callbackSetSpeakerMaxPhrases", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value: @@ -617,7 +625,7 @@ def callbackSetSpeakerMaxPhrases(value): view.setGuiVariable_SpeakerMaxPhrases(config.INPUT_SPEAKER_MAX_PHRASES) else: raise ValueError() - except: + except Exception: view.showErrorMessage_SpeakerMaxPhrases() @@ -662,12 +670,14 @@ def callbackSetEnableSendMessageToVrc(value): # Advanced Settings Tab def callbackSetOscIpAddress(value): - if value == "": return + if value == "": + return print("callbackSetOscIpAddress", str(value)) config.OSC_IP_ADDRESS = str(value) def callbackSetOscPort(value): - if value == "": return + if value == "": + return print("callbackSetOscPort", int(value)) config.OSC_PORT = int(value) diff --git a/img/app.ico b/img/app.ico deleted file mode 100644 index eca32ce7..00000000 Binary files a/img/app.ico and /dev/null differ diff --git a/img/arrow_left_black.png b/img/arrow_left_black.png new file mode 100644 index 00000000..5e3f8dfb Binary files /dev/null and b/img/arrow_left_black.png differ diff --git a/img/config-icon-white.png b/img/config-icon-white.png deleted file mode 100644 index 1222f167..00000000 Binary files a/img/config-icon-white.png and /dev/null differ diff --git a/img/configuration_icon_black.png b/img/configuration_icon_black.png new file mode 100644 index 00000000..c97dfefe Binary files /dev/null and b/img/configuration_icon_black.png differ diff --git a/img/folder_open_icon_black.png b/img/folder_open_icon_black.png new file mode 100644 index 00000000..988184b3 Binary files /dev/null and b/img/folder_open_icon_black.png differ diff --git a/img/folder_open_icon.png b/img/folder_open_icon_white.png similarity index 100% rename from img/folder_open_icon.png rename to img/folder_open_icon_white.png diff --git a/img/foreground_icon_black.png b/img/foreground_icon_black.png new file mode 100644 index 00000000..ff3594c2 Binary files /dev/null and b/img/foreground_icon_black.png differ diff --git a/img/headphones_icon_black.png b/img/headphones_icon_black.png new file mode 100644 index 00000000..2cb97ec2 Binary files /dev/null and b/img/headphones_icon_black.png differ diff --git a/img/help_icon_black.png b/img/help_icon_black.png new file mode 100644 index 00000000..156ca026 Binary files /dev/null and b/img/help_icon_black.png differ diff --git a/img/help_icon_disabled.png b/img/help_icon_disabled.png deleted file mode 100644 index 03e1c086..00000000 Binary files a/img/help_icon_disabled.png and /dev/null differ diff --git a/img/info-icon-white.png b/img/info-icon-white.png deleted file mode 100644 index 210613e0..00000000 Binary files a/img/info-icon-white.png and /dev/null differ diff --git a/img/mic_icon_black.png b/img/mic_icon_black.png new file mode 100644 index 00000000..1210b069 Binary files /dev/null and b/img/mic_icon_black.png differ diff --git a/img/narrow_arrow_down_black.png b/img/narrow_arrow_down_black.png new file mode 100644 index 00000000..21e2ea0b Binary files /dev/null and b/img/narrow_arrow_down_black.png differ diff --git a/img/narrow_arrow_down.png b/img/narrow_arrow_down_white.png similarity index 100% rename from img/narrow_arrow_down.png rename to img/narrow_arrow_down_white.png diff --git a/img/redo_icon_black.png b/img/redo_icon_black.png new file mode 100644 index 00000000..989581a3 Binary files /dev/null and b/img/redo_icon_black.png differ diff --git a/img/redo_white.png b/img/redo_icon_white.png similarity index 100% rename from img/redo_white.png rename to img/redo_icon_white.png diff --git a/img/save-icon.png b/img/save-icon.png deleted file mode 100644 index b74423f8..00000000 Binary files a/img/save-icon.png and /dev/null differ diff --git a/img/swap_icon_black.png b/img/swap_icon_black.png new file mode 100644 index 00000000..eec6f830 Binary files /dev/null and b/img/swap_icon_black.png differ diff --git a/img/swap_icon.png b/img/swap_icon_white.png similarity index 100% rename from img/swap_icon.png rename to img/swap_icon_white.png diff --git a/img/translation_icon_black.png b/img/translation_icon_black.png new file mode 100644 index 00000000..3e184a72 Binary files /dev/null and b/img/translation_icon_black.png differ diff --git a/img/xsoverlay.png b/img/xsoverlay.png deleted file mode 100644 index 35c793ea..00000000 Binary files a/img/xsoverlay.png and /dev/null differ diff --git a/main.py b/main.py index 5db42c69..def1cb0b 100644 --- a/main.py +++ b/main.py @@ -12,7 +12,7 @@ if __name__ == "__main__": splash.destroySplash() controller.showMainWindow() - except Exception as e: + except Exception: import traceback with open('error.log', 'a') as f: traceback.print_exc(file=f) \ No newline at end of file diff --git a/model.py b/model.py index ab5f49ce..538b8bb1 100644 --- a/model.py +++ b/model.py @@ -83,9 +83,9 @@ class Model: self.keyword_processor = KeywordProcessor() def authenticationTranslator(self, choice_translator=None, auth_key=None): - if choice_translator == None: + if choice_translator is None: choice_translator = config.CHOICE_TRANSLATOR - if auth_key == None: + if auth_key is None: auth_key = config.AUTH_KEYS[choice_translator] result = self.translator.authentication(choice_translator, auth_key) @@ -131,10 +131,10 @@ class Model: compatible_engines.append(engine) engine_name = compatible_engines[0] - if engine_name == "DeepL" and config.AUTH_KEYS["DeepL_API"] != None: + if engine_name == "DeepL" and config.AUTH_KEYS["DeepL_API"] is not None: if self.authenticationTranslator(engine_name, config.AUTH_KEYS["DeepL_API"]) is True: engine_name = "DeepL_API" - elif engine_name == "DeepL_API" and config.AUTH_KEYS["DeepL_API"] == None: + elif engine_name == "DeepL_API" and config.AUTH_KEYS["DeepL_API"] is None: engine_name = "DeepL" return engine_name @@ -289,8 +289,7 @@ class Model: move(os_path.join(current_directory, folder_name, "batch", batch_name), os_path.join(current_directory, batch_name)) command = [os_path.join(current_directory, batch_name), program_name, folder_name, tmp_directory_name, str(restart)] Popen(command, cwd=current_directory) - except Exception as e: - print(e) + except Exception: webbrowser.open(config.BOOTH_URL, new=2, autoraise=True) @staticmethod @@ -323,7 +322,7 @@ class Model: if config.CHOICE_MIC_HOST == "NoHost" or config.CHOICE_MIC_DEVICE == "NoDevice": try: error_fnc() - except: + except Exception: pass return @@ -352,7 +351,7 @@ class Model: message = mic_transcriber.getTranscript() try: fnc(message) - except: + except Exception: pass self.mic_print_transcript = threadFnc(sendMicTranscript) @@ -371,7 +370,7 @@ class Model: if config.CHOICE_MIC_HOST == "NoHost" or config.CHOICE_MIC_DEVICE == "NoDevice": try: error_fnc() - except: + except Exception: pass return @@ -380,7 +379,7 @@ class Model: energy = mic_energy_queue.get() try: fnc(energy) - except: + except Exception: pass sleep(0.01) @@ -405,7 +404,7 @@ class Model: if speaker_device["name"] == "NoDevice": try: error_fnc() - except: + except Exception: pass return @@ -433,7 +432,7 @@ class Model: message = speaker_transcriber.getTranscript() try: fnc(message) - except: + except Exception: pass self.speaker_print_transcript = threadFnc(sendSpeakerTranscript) @@ -453,7 +452,7 @@ class Model: if speaker_device["name"] == "NoDevice": try: error_fnc() - except: + except Exception: pass return @@ -462,7 +461,7 @@ class Model: energy = speaker_energy_queue.get() try: fnc(energy) - except: + except Exception: pass sleep(0.01) diff --git a/models/osc/osc_tools.py b/models/osc/osc_tools.py index 7cb926c2..80f2b785 100644 --- a/models/osc/osc_tools.py +++ b/models/osc/osc_tools.py @@ -1,5 +1,4 @@ from time import sleep -from typing import List from pythonosc import osc_message_builder from pythonosc import udp_client from pythonosc import dispatcher @@ -15,7 +14,7 @@ def sendTyping(flag=False, ip_address="127.0.0.1", port=9000): # send OSC message def sendMessage(message=None, ip_address="127.0.0.1", port=9000): - if message != None: + if message is not None: msg = osc_message_builder.OscMessageBuilder(address="/chatbox/input") msg.add_arg(f"{message}") msg.add_arg(True) diff --git a/models/transcription/transcription_transcriber.py b/models/transcription/transcription_transcriber.py index b058f4ec..bf78566e 100644 --- a/models/transcription/transcription_transcriber.py +++ b/models/transcription/transcription_transcriber.py @@ -38,7 +38,7 @@ class AudioTranscriber: # os.close(fd) audio_data = self.audio_sources["process_data_func"]() text = self.audio_recognizer.recognize_google(audio_data, language=transcription_lang[language][country]) - except Exception as e: + except Exception: pass finally: pass diff --git a/models/translation/translation_translator.py b/models/translation/translation_translator.py index 18d2c394..c3a5682b 100644 --- a/models/translation/translation_translator.py +++ b/models/translation/translation_translator.py @@ -1,7 +1,7 @@ from deepl import Translator as deepl_Translator from deepl_translate import translate as deepl_web_Translator from translators import translate_text as other_web_Translator -from .translation_languages import translatorEngine, translation_lang +from .translation_languages import translation_lang # Translator class Translator(): @@ -16,7 +16,7 @@ class Translator(): try: self.deepl_client = deepl_Translator(authkey) self.deepl_client.translate_text(" ", target_lang="EN-US") - except: + except Exception: result = False return result @@ -52,7 +52,7 @@ class Translator(): from_language=source_language, to_language=target_language, ) - except Exception as e: + except Exception: import traceback with open('error.log', 'a') as f: traceback.print_exc(file=f) diff --git a/models/xsoverlay/notification.py b/models/xsoverlay/notification.py index 7c179f5a..cb2c03b5 100644 --- a/models/xsoverlay/notification.py +++ b/models/xsoverlay/notification.py @@ -33,7 +33,7 @@ def XSOverlay( with open(icon, "rb") as f: icon_data_bytes = f.read() icon_data = base64.b64encode(icon_data_bytes).decode("utf-8") - except: + except Exception: icon_data = "default" else: icon_data = icon diff --git a/utils.py b/utils.py index 9cb0dc94..a5e38fda 100644 --- a/utils.py +++ b/utils.py @@ -13,7 +13,8 @@ def get_key_by_value(dictionary, value): return None def callFunctionIfCallable(function, *args): - if callable(function) is True: function(*args) + if callable(function) is True: + function(*args) def isEven(number): return number % 2 == 0 diff --git a/view.py b/view.py index f7250b9f..de8b66f1 100644 --- a/view.py +++ b/view.py @@ -33,8 +33,7 @@ class View(): ) self.settings = SimpleNamespace() - # theme = get_appearance_mode() if config.APPEARANCE_THEME == "System" else config.APPEARANCE_THEME - theme = "Dark" + theme = get_appearance_mode() if config.APPEARANCE_THEME == "System" else config.APPEARANCE_THEME all_ctm = ColorThemeManager(theme) all_uism = UiScalingManager(config.UI_SCALING) @@ -203,11 +202,9 @@ class View(): VAR_LABEL_APPEARANCE_THEME=StringVar(value=i18n.t("config_window.appearance_theme.label")), VAR_DESC_APPEARANCE_THEME=StringVar(value=i18n.t("config_window.appearance_theme.desc")), - LIST_APPEARANCE_THEME=["Dark"], - # LIST_APPEARANCE_THEME=["Light", "Dark", "System"], + LIST_APPEARANCE_THEME=["Light", "Dark", "System"], CALLBACK_SET_APPEARANCE_THEME=None, - VAR_APPEARANCE_THEME=StringVar(value="Dark"), - # VAR_APPEARANCE_THEME=StringVar(value=config.APPEARANCE_THEME), + VAR_APPEARANCE_THEME=StringVar(value=config.APPEARANCE_THEME), VAR_LABEL_UI_SCALING=StringVar(value=i18n.t("config_window.ui_size.label")), VAR_DESC_UI_SCALING=None, @@ -513,13 +510,6 @@ class View(): self.enableConfigWindowCompactMode() vrct_gui.config_window.setting_box_compact_mode_switch_box.select() - vrct_gui._changeConfigWindowWidgetsStatus( - status="disabled", - target_names=[ - "sb__optionmenu_appearance_theme", - ] - ) - if config.CHOICE_MIC_HOST == "NoHost": self.view_variable.VAR_MIC_HOST.set("No Mic Host Detected") diff --git a/vrct_gui/_CreateConfirmationModal.py b/vrct_gui/_CreateConfirmationModal.py index 1d7a5de4..935f0447 100644 --- a/vrct_gui/_CreateConfirmationModal.py +++ b/vrct_gui/_CreateConfirmationModal.py @@ -233,7 +233,8 @@ class _CreateConfirmationModal(CTkToplevel): self.grab_release() def focusOutFunction(self, e): - if str(e.widget) != ".!_createconfirmationmodal": return + if str(e.widget) != ".!_createconfirmationmodal": + return callFunctionIfCallable(self._view_variable.CALLBACK_HIDE_CONFIRMATION_MODAL) def _grab_set(self): diff --git a/vrct_gui/_CreateDropdownMenuWindow.py b/vrct_gui/_CreateDropdownMenuWindow.py index 948e00e1..b0f459dd 100644 --- a/vrct_gui/_CreateDropdownMenuWindow.py +++ b/vrct_gui/_CreateDropdownMenuWindow.py @@ -262,7 +262,8 @@ class _CreateDropdownMenuWindow(CTkToplevel): def show(self, dropdown_menu_widget_id): - if self.hide is False: return + if self.hide is False: + return self.wm_attributes("-alpha", 0) diff --git a/vrct_gui/_CreateErrorWindow.py b/vrct_gui/_CreateErrorWindow.py index 4b00047a..ef7ff5fb 100644 --- a/vrct_gui/_CreateErrorWindow.py +++ b/vrct_gui/_CreateErrorWindow.py @@ -80,7 +80,8 @@ class _CreateErrorWindow(CTkToplevel): def show(self, target_widget): - if self.hide is False: return + if self.hide is False: + return self.attach_widget = target_widget diff --git a/vrct_gui/_CreateSelectableLanguagesWindow.py b/vrct_gui/_CreateSelectableLanguagesWindow.py index daa369c0..8c666a20 100644 --- a/vrct_gui/_CreateSelectableLanguagesWindow.py +++ b/vrct_gui/_CreateSelectableLanguagesWindow.py @@ -178,5 +178,6 @@ class _CreateSelectableLanguagesWindow(CTkToplevel): def focusOutFunction(self, e): - if str(e.widget) != ".!_createselectablelanguageswindow": return + if str(e.widget) != ".!_createselectablelanguageswindow": + return self.vrct_gui._closeSelectableLanguagesWindow() \ No newline at end of file diff --git a/vrct_gui/_CreateWindowCover.py b/vrct_gui/_CreateWindowCover.py index 0ee3b606..600619be 100644 --- a/vrct_gui/_CreateWindowCover.py +++ b/vrct_gui/_CreateWindowCover.py @@ -18,13 +18,13 @@ class _CreateWindowCover(CTkToplevel): self.title("") self.overrideredirect(True) self.wm_attributes("-toolwindow", True) - self.configure(fg_color="black") + self.configure(fg_color=self.settings.ctm.BG_COLOR) self.protocol("WM_DELETE_WINDOW", lambda: self.withdraw()) self.grid_rowconfigure(0,weight=1) self.grid_columnconfigure(0,weight=1) - self.cover_container = CTkFrame(self, corner_radius=0, fg_color="black", width=0, height=0) + self.cover_container = CTkFrame(self, corner_radius=0, fg_color=self.settings.ctm.BG_COLOR, width=0, height=0) self.cover_container.grid(row=0, column=0, sticky="nsew") diff --git a/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py index 7c0ec386..199a12fb 100644 --- a/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py +++ b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py @@ -16,9 +16,4 @@ def _createSettingBoxTitle(parent_widget, config_window, settings, view_variable font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.TOP_BAR_MAIN__TITLE_FONT_SIZE, weight="bold"), text_color=settings.ctm.LABELS_TEXT_COLOR ) - config_window.main_current_active_config_title.grid(row=0, column=0, padx=0, pady=settings.uism.TOP_BAR__IPADY) - - - # for fixing 1px bug - sls__box_optionmenu_wrapper_fix_1px_bug = CTkFrame(config_window.main_current_active_config_title, corner_radius=0, width=0, height=0) - sls__box_optionmenu_wrapper_fix_1px_bug.grid(row=0, column=column_num, sticky="ns") \ No newline at end of file + config_window.main_current_active_config_title.grid(row=0, column=0, padx=0, pady=settings.uism.TOP_BAR__IPADY) \ No newline at end of file diff --git a/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/_SettingBoxGenerator.py b/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/_SettingBoxGenerator.py index cb04cf8d..d8b31a39 100644 --- a/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/_SettingBoxGenerator.py +++ b/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/_SettingBoxGenerator.py @@ -2,7 +2,7 @@ from functools import partial from types import SimpleNamespace from typing import Union -from customtkinter import CTkOptionMenu, CTkFont, CTkFrame, CTkLabel, CTkRadioButton, CTkEntry, CTkSlider, CTkSwitch, CTkCheckBox, CTkProgressBar, CTkImage +from customtkinter import CTkFont, CTkFrame, CTkLabel, CTkEntry, CTkSlider, CTkSwitch, CTkCheckBox, CTkProgressBar, CTkImage from CTkToolTip import * from vrct_gui.ui_utils import createButtonWithImage, getLatestWidth, createOptionMenuBox, getLatestHeight, bindButtonFunctionAndColor @@ -587,7 +587,7 @@ class _SettingBoxGenerator(): wraplength=self.settings.uism.SB__MESSAGE_FORMAT__EXAMPLE_WRAP_LENGTH, height=0, font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.SB__MESSAGE_FORMAT__REQUIRED_TEXT_FONT_SIZE, weight="normal"), - text_color=self.settings.ctm.LABELS_TEXT_COLOR, + text_color=self.settings.ctm.SB__MESSAGE_FORMAT__EXAMPLE_TEXT_COLOR, ) example_label_widget.grid(row=1, column=1, padx=self.settings.uism.SB__MESSAGE_FORMAT__EXAMPLE_IPADXY, pady=self.settings.uism.SB__MESSAGE_FORMAT__EXAMPLE_IPADXY, sticky="ew") @@ -1068,7 +1068,8 @@ class _SettingBoxGenerator(): items[i] = item_data is_replaced = True break - if is_replaced is False: items.append(item_data) + if is_replaced is False: + items.append(item_data) return mic_word_filter_item_wrapper diff --git a/vrct_gui/main_window/createMainWindowWidgets.py b/vrct_gui/main_window/createMainWindowWidgets.py index 65661216..54ce6a6a 100644 --- a/vrct_gui/main_window/createMainWindowWidgets.py +++ b/vrct_gui/main_window/createMainWindowWidgets.py @@ -92,9 +92,9 @@ def createMainWindowWidgets(vrct_gui, settings, view_variable): vrct_gui.update_available_label, vrct_gui.update_available_icon, ], - enter_color=settings.ctm.UPDATE_AVAILABLE_BUTTON_HOVERED_BG_COLOR, - leave_color=settings.ctm.UPDATE_AVAILABLE_BUTTON_BG_COLOR, - clicked_color=settings.ctm.UPDATE_AVAILABLE_BUTTON_CLICKED_BG_COLOR, + enter_color=settings.ctm.TOP_BAR_BUTTON_HOVERED_BG_COLOR, + leave_color=settings.ctm.TOP_BAR_BUTTON_BG_COLOR, + clicked_color=settings.ctm.TOP_BAR_BUTTON_CLICKED_BG_COLOR, buttonReleasedFunction=lambda e: callFunctionIfCallable(view_variable.CALLBACK_CLICKED_UPDATE_AVAILABLE), ) @@ -105,9 +105,9 @@ def createMainWindowWidgets(vrct_gui, settings, view_variable): # Help and Info button vrct_gui.help_and_info_button_container = createButtonWithImage( parent_widget=vrct_gui.main_topbar_container, - button_fg_color=settings.ctm.HELP_AND_INFO_BUTTON_BG_COLOR, - button_enter_color=settings.ctm.HELP_AND_INFO_BUTTON_HOVERED_BG_COLOR, - button_clicked_color=settings.ctm.HELP_AND_INFO_BUTTON_CLICKED_BG_COLOR, + button_fg_color=settings.ctm.TOP_BAR_BUTTON_BG_COLOR, + button_enter_color=settings.ctm.TOP_BAR_BUTTON_HOVERED_BG_COLOR, + button_clicked_color=settings.ctm.TOP_BAR_BUTTON_CLICKED_BG_COLOR, button_image_file=settings.image_file.HELP_ICON, button_image_size=settings.uism.HELP_AND_INFO_BUTTON_SIZE, button_ipadxy=settings.uism.HELP_AND_INFO_BUTTON_IPADXY, diff --git a/vrct_gui/main_window/widgets/_create_sidebar/createSidebarFeatures.py b/vrct_gui/main_window/widgets/_create_sidebar/createSidebarFeatures.py index b46ab3cc..bce4113f 100644 --- a/vrct_gui/main_window/widgets/_create_sidebar/createSidebarFeatures.py +++ b/vrct_gui/main_window/widgets/_create_sidebar/createSidebarFeatures.py @@ -2,7 +2,7 @@ from functools import partial from customtkinter import CTkFont, CTkFrame, CTkLabel, CTkSwitch, CTkImage -from ....ui_utils import openImageKeepAspectRatio, retag, getLatestHeight, bindEnterAndLeaveFunction, bindButtonReleaseFunction, bindButtonPressAndReleaseFunction +from ....ui_utils import openImageKeepAspectRatio, retag, bindEnterAndLeaveFunction, bindButtonReleaseFunction, bindButtonPressAndReleaseFunction from utils import callFunctionIfCallable diff --git a/vrct_gui/ui_managers/ColorThemeManager.py b/vrct_gui/ui_managers/ColorThemeManager.py index 707bc9a8..c9793403 100644 --- a/vrct_gui/ui_managers/ColorThemeManager.py +++ b/vrct_gui/ui_managers/ColorThemeManager.py @@ -10,8 +10,11 @@ class ColorThemeManager(): self.base_color = SimpleNamespace( PRIMARY_100_COLOR = "#b7ded8", + PRIMARY_150_COLOR = "#A1D4CC", PRIMARY_200_COLOR = "#8acac0", + PRIMARY_250_COLOR = "#76BFB4", PRIMARY_300_COLOR = "#61b4a7", + PRIMARY_350_COLOR = "#55AC9E", PRIMARY_400_COLOR = "#48a495", # Source PRIMARY_450_COLOR = "#429c8c", PRIMARY_500_COLOR = "#3b9483", @@ -25,12 +28,12 @@ class ColorThemeManager(): SENT_400_COLOR = "#6197b4", # Source PRIMARY_300_COLOR #61b4a7. ANALOGOUS' Second one. RECEIVED_300_COLOR = "#a861b4", # Source PRIMARY_300_COLOR #61b4a7. TRIADIC' Second one. - DARK_BASIC_TEXT_COLOR = "#f2f2f2", + DARK_BASIC_TEXT_COLOR = "#f2f2f2", # Icon normal color too DARK_100_COLOR = "#f5f7fb", # THE LIGHTEST BG COLOR DARK_200_COLOR = "#f1f2f6", DARK_300_COLOR = "#e9eaee", DARK_350_COLOR = "#d8d9dd", - DARK_400_COLOR = "#c7c8cc", + DARK_400_COLOR = "#c7c8cc", # Icon second color DARK_450_COLOR = "#b8b9bd", DARK_500_COLOR = "#a9aaae", DARK_600_COLOR = "#7f8084", @@ -52,27 +55,30 @@ class ColorThemeManager(): DARK_1000_COLOR = "#151517", # THE DARKEST BG COLOR - LIGHT_100_COLOR = "#f2f2f2", # THE LIGHTEST BG COLOR - LIGHT_200_COLOR = "#e9e9e9", - LIGHT_250_COLOR = "#e1e1e1", - LIGHT_300_COLOR = "#d9d9d9", - LIGHT_325_COLOR = "#d0d0d0", - LIGHT_350_COLOR = "#c7c7c7", - LIGHT_375_COLOR = "#bebebe", - LIGHT_400_COLOR = "#b5b5b5", - LIGHT_450_COLOR = "#a5a5a5", - LIGHT_500_COLOR = "#959595", - LIGHT_600_COLOR = "#6d6d6d", - LIGHT_700_COLOR = "#5a5a5a", - LIGHT_750_COLOR = "#515151", - LIGHT_800_COLOR = "#3b3b3b", - LIGHT_850_COLOR = "#323232", - LIGHT_875_COLOR = "#2b2b2b", - LIGHT_900_COLOR = "#1b1b1b", - # LIGHT_925_COLOR = "#121212", - # LIGHT_950_COLOR = "#0c0c0c", - # LIGHT_975_COLOR = "#070707", - LIGHT_1000_COLOR = "#010101", # THE DARKEST BG COLOR + LIGHT_BASIC_TEXT_COLOR = "#050505", + LIGHT_100_COLOR = "#f5f7fb", # THE LIGHTEST BG COLOR + LIGHT_125_COLOR = "#F4F6FA", + LIGHT_150_COLOR = "#F2F4F8", + LIGHT_175_COLOR = "#F1F3F7", + LIGHT_200_COLOR = "#eff1f5", + LIGHT_225_COLOR = "#ECEEF2", + LIGHT_250_COLOR = "#E9EBEF", + LIGHT_275_COLOR = "#E6E8EC", + LIGHT_300_COLOR = "#e2e4e8", + LIGHT_313_COLOR = "#DEE0E4", + LIGHT_325_COLOR = "#DADCE0", + LIGHT_333_COLOR = "#D6D8DC", + LIGHT_350_COLOR = "#D1D3D7", + LIGHT_375_COLOR = "#C9CBCF", + LIGHT_400_COLOR = "#c0c2c6", + LIGHT_450_COLOR = "#B1B3B7", + LIGHT_500_COLOR = "#a2a3a7", + LIGHT_550_COLOR = "#8D8F93", + LIGHT_600_COLOR = "#787a7e", + LIGHT_700_COLOR = "#646669", # Icon second color + LIGHT_800_COLOR = "#45464a", + LIGHT_900_COLOR = "#242528", # Icon normal color + LIGHT_1000_COLOR = "#1b1b1b", # THE DARKEST BG COLOR ) diff --git a/vrct_gui/ui_managers/Themes/_darkTheme.py b/vrct_gui/ui_managers/Themes/_darkTheme.py index e1b42ed2..ed3c7cd8 100644 --- a/vrct_gui/ui_managers/Themes/_darkTheme.py +++ b/vrct_gui/ui_managers/Themes/_darkTheme.py @@ -134,6 +134,7 @@ def _darkTheme(base_color): # Modal Window (Main Window) main_window_cover = SimpleNamespace( TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR, + BG_COLOR = "#000", ), @@ -249,6 +250,7 @@ def _darkTheme(base_color): SB__MESSAGE_FORMAT__EXAMPLE_BG_COLOR = "#3a4554", # from VRChat' chat display color + SB__MESSAGE_FORMAT__EXAMPLE_TEXT_COLOR = base_color.DARK_100_COLOR, SB__MESSAGE_FORMAT__SWAP_BUTTON_COLOR = base_color.DARK_875_COLOR, SB__MESSAGE_FORMAT__SWAP_BUTTON_HOVERED_COLOR = base_color.DARK_800_COLOR, SB__MESSAGE_FORMAT__SWAP_BUTTON_CLICKED_COLOR = base_color.DARK_888_COLOR, @@ -290,7 +292,7 @@ def _darkTheme(base_color): FOREGROUND_ICON = getImageFileFromUiUtils("foreground_icon_white.png"), FOREGROUND_ICON_DISABLED = getImageFileFromUiUtils("foreground_icon_disabled.png"), - NARROW_ARROW_DOWN = getImageFileFromUiUtils("narrow_arrow_down.png"), + NARROW_ARROW_DOWN = getImageFileFromUiUtils("narrow_arrow_down_white.png"), CONFIGURATION_ICON = getImageFileFromUiUtils("configuration_icon_white.png"), CONFIGURATION_ICON_DISABLED = getImageFileFromUiUtils("configuration_icon_disabled.png"), @@ -303,9 +305,9 @@ def _darkTheme(base_color): HELP_ICON = getImageFileFromUiUtils("help_icon_white.png"), CANCEL_ICON = getImageFileFromUiUtils("cancel_icon.png"), - REDO_ICON = getImageFileFromUiUtils("redo_white.png"), - SWAP_ICON = getImageFileFromUiUtils("swap_icon.png"), - FOLDER_OPEN_ICON = getImageFileFromUiUtils("folder_open_icon.png"), + REDO_ICON = getImageFileFromUiUtils("redo_icon_white.png"), + SWAP_ICON = getImageFileFromUiUtils("swap_icon_white.png"), + FOLDER_OPEN_ICON = getImageFileFromUiUtils("folder_open_icon_white.png"), ), ) diff --git a/vrct_gui/ui_managers/Themes/_lightTheme.py b/vrct_gui/ui_managers/Themes/_lightTheme.py index d861711a..95accf92 100644 --- a/vrct_gui/ui_managers/Themes/_lightTheme.py +++ b/vrct_gui/ui_managers/Themes/_lightTheme.py @@ -5,42 +5,303 @@ def _lightTheme(base_color): theme_settings = SimpleNamespace( main = SimpleNamespace( # Common - BASIC_TEXT_COLOR = base_color.LIGHT_100_COLOR, - LABELS_TEXT_COLOR = base_color.LIGHT_100_COLOR, + BASIC_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + LABELS_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, # Main - MAIN_BG_COLOR = base_color.DARK_888_COLOR, + MAIN_BG_COLOR = base_color.LIGHT_175_COLOR, + + + TEXTBOX_BG_COLOR = base_color.LIGHT_100_COLOR, + TEXTBOX_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + TEXTBOX_TEXT_SUB_COLOR = base_color.LIGHT_600_COLOR, + TEXTBOX_SYSTEM_TAG_TEXT_COLOR = base_color.PRIMARY_300_COLOR, + TEXTBOX_SENT_TAG_TEXT_COLOR = base_color.SENT_400_COLOR, + TEXTBOX_RECEIVED_TAG_TEXT_COLOR = base_color.RECEIVED_300_COLOR, + # TEXTBOX_ERROR_TAG_TEXT_COLOR = "#c27583", + TEXTBOX_TIMESTAMP_TEXT_COLOR = base_color.LIGHT_500_COLOR, + + TEXTBOX_TAB_BG_PASSIVE_COLOR = base_color.LIGHT_300_COLOR, + TEXTBOX_TAB_BG_ACTIVE_COLOR = base_color.LIGHT_125_COLOR, + TEXTBOX_TAB_BG_HOVERED_COLOR = base_color.LIGHT_250_COLOR, + TEXTBOX_TAB_BG_CLICKED_COLOR = base_color.LIGHT_100_COLOR, + TEXTBOX_TAB_TEXT_ACTIVE_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + TEXTBOX_TAB_TEXT_PASSIVE_COLOR = base_color.LIGHT_600_COLOR, + + TEXTBOX_ENTRY_TEXT_COLOR = base_color.LIGHT_800_COLOR, + TEXTBOX_ENTRY_TEXT_DISABLED_COLOR = base_color.LIGHT_500_COLOR, + TEXTBOX_ENTRY_BG_COLOR = base_color.LIGHT_250_COLOR, + TEXTBOX_ENTRY_BORDER_COLOR = base_color.LIGHT_400_COLOR, + TEXTBOX_ENTRY_PLACEHOLDER_COLOR = base_color.LIGHT_600_COLOR, + TEXTBOX_ENTRY_PLACEHOLDER_DISABLED_COLOR = base_color.LIGHT_400_COLOR, + + + # Sidebar + SIDEBAR_BG_COLOR = base_color.LIGHT_250_COLOR, + + # Sidebar Features + SF__BG_COLOR = base_color.LIGHT_313_COLOR, + SF__HOVERED_BG_COLOR = base_color.LIGHT_333_COLOR, + SF__CLICKED_BG_COLOR = base_color.LIGHT_400_COLOR, + SF__TEXT_DISABLED_COLOR = base_color.LIGHT_600_COLOR, + + SF__SWITCH_BOX_BG_COLOR = base_color.LIGHT_375_COLOR, + SF__SWITCH_BOX_HOVERED_BG_COLOR = base_color.LIGHT_400_COLOR, + SF__SWITCH_BOX_CLICKED_BG_COLOR = base_color.LIGHT_450_COLOR, + SF__SWITCH_BOX_ACTIVE_BG_COLOR = base_color.PRIMARY_350_COLOR, + SF__SWITCH_BOX_ACTIVE_HOVERED_BG_COLOR = base_color.PRIMARY_400_COLOR, + SF__SWITCH_BOX_ACTIVE_CLICKED_BG_COLOR = base_color.PRIMARY_500_COLOR, + SF__SWITCH_BOX_DISABLE_BG_COLOR = base_color.PRIMARY_200_COLOR, + + SF__SWITCH_BOX_BUTTON_COLOR = base_color.LIGHT_150_COLOR, + # It's not working because It overrode internally. + SF__SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.LIGHT_300_COLOR, + + SF__SELECTED_MARK_ACTIVE_BG_COLOR = base_color.PRIMARY_350_COLOR, + SF__SELECTED_MARK_ACTIVE_HOVERED_BG_COLOR = base_color.PRIMARY_400_COLOR, + SF__SELECTED_MARK_ACTIVE_CLICKED_BG_COLOR = base_color.PRIMARY_500_COLOR, + SF__SELECTED_MARK_DISABLE_BG_COLOR = base_color.PRIMARY_200_COLOR, + + + # Sidebar Languages Settings + SLS__TITLE_TEXT_COLOR = base_color.LIGHT_800_COLOR, + + SLS__BG_COLOR = base_color.LIGHT_313_COLOR, + + SLS__PRESETS_TAB_BG_HOVERED_COLOR = base_color.LIGHT_300_COLOR, + SLS__PRESETS_TAB_BG_CLICKED_COLOR = base_color.LIGHT_350_COLOR, + SLS__PRESETS_TAB_BG_PASSIVE_COLOR = base_color.LIGHT_250_COLOR, + SLS__PRESETS_TAB_BG_ACTIVE_COLOR = base_color.LIGHT_313_COLOR, + SLS__PRESETS_TAB_ACTIVE_TEXT_COLOR_PASSIVE = base_color.LIGHT_400_COLOR, + SLS__PRESETS_TAB_ACTIVE_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + + SLS__BOX_BG_COLOR = base_color.LIGHT_333_COLOR, + SLS__BOX_SECTION_TITLE_TEXT_COLOR = base_color.LIGHT_800_COLOR, + SLS__BOX_ARROWS_TEXT_COLOR = base_color.LIGHT_700_COLOR, + SLS__BOX_ARROWS_SWAP_BUTTON_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + SLS__BOX_ARROWS_SWAP_BUTTON_HOVERED_COLOR = base_color.LIGHT_200_COLOR, + SLS__BOX_ARROWS_SWAP_BUTTON_CLICKED_COLOR = base_color.LIGHT_350_COLOR, + + SLS__OPTIONMENU_BG_COLOR = base_color.LIGHT_200_COLOR, + SLS__OPTIONMENU_HOVERED_BG_COLOR = base_color.LIGHT_250_COLOR, + SLS__OPTIONMENU_CLICKED_BG_COLOR = base_color.LIGHT_400_COLOR, + + + CONFIG_BUTTON_BG_COLOR = base_color.LIGHT_250_COLOR, + CONFIG_BUTTON_HOVERED_BG_COLOR = base_color.LIGHT_350_COLOR, + CONFIG_BUTTON_CLICKED_BG_COLOR = base_color.LIGHT_400_COLOR, + + MINIMIZE_SIDEBAR_BUTTON_BG_COLOR = base_color.LIGHT_250_COLOR, + MINIMIZE_SIDEBAR_BUTTON_HOVERED_BG_COLOR = base_color.LIGHT_350_COLOR, + MINIMIZE_SIDEBAR_BUTTON_CLICKED_BG_COLOR = base_color.LIGHT_400_COLOR, + + + + TOP_BAR_BUTTON_BG_COLOR = base_color.LIGHT_175_COLOR, + TOP_BAR_BUTTON_HOVERED_BG_COLOR = base_color.LIGHT_300_COLOR, + TOP_BAR_BUTTON_CLICKED_BG_COLOR = base_color.LIGHT_350_COLOR, + + UPDATE_AVAILABLE_BUTTON_TEXT_COLOR = base_color.PRIMARY_400_COLOR, ), + + selectable_language_window = SimpleNamespace( + # Selectable Language Window + BASIC_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + + MAIN_BG_COLOR = base_color.LIGHT_175_COLOR, + + GO_BACK_BUTTON_BG_COLOR = base_color.LIGHT_325_COLOR, + GO_BACK_BUTTON_BG_HOVERED_COLOR = base_color.LIGHT_400_COLOR, + GO_BACK_BUTTON_BG_CLICKED_COLOR = base_color.LIGHT_500_COLOR, + + TOP_BG_COLOR = base_color.LIGHT_250_COLOR, + TITLE_TEXT_COLOR = base_color.LIGHT_700_COLOR, + LANGUAGE_BUTTON_BG_COLOR = base_color.LIGHT_175_COLOR, + LANGUAGE_BUTTON_BG_HOVERED_COLOR = base_color.LIGHT_275_COLOR, + LANGUAGE_BUTTON_BG_CLICKED_COLOR = base_color.LIGHT_325_COLOR, + ), + + + + # Modal Window (Main Window) + main_window_cover = SimpleNamespace( + TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + BG_COLOR = "#fff", + ), + + + confirmation_modal = SimpleNamespace( + MESSAGE_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + FAKE_BORDER_COLOR = base_color.LIGHT_500_COLOR, + BG_COLOR = base_color.LIGHT_350_COLOR, + CONFIRMATION_BUTTONS_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + + ACCEPT_BUTTON_BG_COLOR = base_color.PRIMARY_250_COLOR, + ACCEPT_BUTTON_HOVERED_BG_COLOR = base_color.PRIMARY_200_COLOR, + ACCEPT_BUTTON_CLICKED_BG_COLOR = base_color.PRIMARY_300_COLOR, + DENY_BUTTON_BG_COLOR = base_color.LIGHT_200_COLOR, + DENY_BUTTON_HOVERED_BG_COLOR = base_color.LIGHT_100_COLOR, + DENY_BUTTON_CLICKED_BG_COLOR = base_color.LIGHT_300_COLOR, + ), + + config_window = SimpleNamespace( # Common - BASIC_TEXT_COLOR = base_color.LIGHT_100_COLOR, + BASIC_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + LABELS_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + LABELS_DESC_TEXT_COLOR = base_color.LIGHT_600_COLOR, + + LABELS_TEXT_DISABLED_COLOR = base_color.LIGHT_500_COLOR, + + SB__BUTTON_COLOR = base_color.LIGHT_100_COLOR, + SB__BUTTON_HOVERED_COLOR = base_color.LIGHT_200_COLOR, + SB__BUTTON_CLICKED_COLOR = base_color.LIGHT_300_COLOR, + + + # Top bar + TOP_BAR_BG_COLOR = base_color.LIGHT_150_COLOR, + + # Restart Button + RESTART_BUTTON_BG_COLOR = base_color.PRIMARY_300_COLOR, + RESTART_BUTTON_HOVERED_BG_COLOR = base_color.PRIMARY_250_COLOR, + RESTART_BUTTON_CLICKED_BG_COLOR = base_color.PRIMARY_400_COLOR, + + + # Compact Mode + COMPACT_MODE_SWITCH_BOX_BG_COLOR = base_color.LIGHT_500_COLOR, + COMPACT_MODE_SWITCH_BOX_ACTIVE_BG_COLOR = base_color.PRIMARY_300_COLOR, + COMPACT_MODE_SWITCH_BOX_BUTTON_COLOR = base_color.LIGHT_300_COLOR, + COMPACT_MODE_SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.LIGHT_250_COLOR, + + # Main + MAIN_BG_COLOR = base_color.LIGHT_300_COLOR, + + # This is for fake border color + SB__WRAPPER_BG_COLOR = base_color.LIGHT_400_COLOR, + + SB__BG_COLOR = base_color.LIGHT_100_COLOR, + + SB__OPTIONMENU_BG_COLOR = base_color.LIGHT_300_COLOR, + SB__OPTIONMENU_HOVERED_BG_COLOR = base_color.LIGHT_250_COLOR, + SB__OPTIONMENU_CLICKED_BG_COLOR = base_color.LIGHT_350_COLOR, + SB__DROPDOWN_MENU_WINDOW_BG_COLOR = base_color.LIGHT_300_COLOR, + SB__DROPDOWN_MENU_WINDOW_BORDER_COLOR = base_color.LIGHT_800_COLOR, + SB__DROPDOWN_MENU_BG_COLOR = base_color.LIGHT_200_COLOR, + SB__DROPDOWN_MENU_HOVERED_BG_COLOR = base_color.LIGHT_100_COLOR, + SB__DROPDOWN_MENU_CLICKED_BG_COLOR = base_color.LIGHT_300_COLOR, + + SB__SLIDER_BG_COLOR = base_color.LIGHT_400_COLOR, + SB__SLIDER_PROGRESS_BG_COLOR = base_color.LIGHT_550_COLOR, + SB__SLIDER_BUTTON_COLOR = base_color.LIGHT_500_COLOR, + SB__SLIDER_BUTTON_HOVERED_COLOR = base_color.LIGHT_600_COLOR, + SB__SLIDER_TOOLTIP_BG_COLOR = base_color.LIGHT_200_COLOR, + SB__SLIDER_TOOLTIP_TEXT_COLOR = base_color.LIGHT_800_COLOR, + + SB__SWITCH_BOX_BG_COLOR = base_color.LIGHT_400_COLOR, + SB__SWITCH_BOX_ACTIVE_BG_COLOR = base_color.PRIMARY_300_COLOR, + SB__SWITCH_BOX_BUTTON_COLOR = base_color.LIGHT_300_COLOR, + SB__SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.LIGHT_200_COLOR, + + SB__CHECKBOX_BORDER_COLOR = base_color.LIGHT_600_COLOR, + SB__CHECKBOX_HOVER_COLOR = base_color.LIGHT_350_COLOR, + SB__CHECKBOX_CHECKED_COLOR = base_color.PRIMARY_250_COLOR, + SB__CHECKBOX_CHECKMARK_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, + + SB__ENTRY_TEXT_COLOR = base_color.LIGHT_900_COLOR, + SB__ENTRY_BG_COLOR = base_color.LIGHT_300_COLOR, + SB__ENTRY_BORDER_COLOR = base_color.LIGHT_400_COLOR, + + + SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_BG_COLOR = base_color.LIGHT_350_COLOR, + SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_PROGRESS_BG_COLOR = base_color.PRIMARY_500_COLOR, + SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_PROGRESS_EXCEED_THRESHOLD_BG_COLOR = base_color.PRIMARY_300_COLOR, + + SB__PROGRESSBAR_X_SLIDER__SLIDER_BUTTON_COLOR = base_color.PRIMARY_300_COLOR, + SB__PROGRESSBAR_X_SLIDER__SLIDER_BUTTON_HOVERED_COLOR = base_color.PRIMARY_450_COLOR, + + SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_COLOR = base_color.LIGHT_300_COLOR, + SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_HOVERED_COLOR = base_color.LIGHT_250_COLOR, + SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_CLICKED_COLOR = base_color.LIGHT_350_COLOR, + SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_DISABLED_COLOR = base_color.LIGHT_150_COLOR, + + SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_COLOR = base_color.PRIMARY_250_COLOR, + SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_HOVERED_COLOR = base_color.PRIMARY_300_COLOR, + SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_CLICKED_COLOR = base_color.PRIMARY_400_COLOR, + + SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_COLOR = base_color.PRIMARY_250_COLOR, + SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_HOVERED_COLOR = base_color.PRIMARY_300_COLOR, + SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_CLICKED_COLOR = base_color.PRIMARY_400_COLOR, + SB__ADD_AND_DELETE_ABLE_LIST_BG_COLOR = base_color.LIGHT_300_COLOR, + + SB__ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_HOVERED_BG_COLOR = base_color.LIGHT_375_COLOR, + SB__ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_CLICKED_BG_COLOR = base_color.LIGHT_450_COLOR, + + SB__ADD_AND_DELETE_ABLE_LIST_DELETED_BG_COLOR = base_color.LIGHT_200_COLOR, + SB__ADD_AND_DELETE_ABLE_LIST__VALUES_DELETED_BUTTON_HOVERED_BG_COLOR = base_color.LIGHT_300_COLOR, + SB__ADD_AND_DELETE_ABLE_LIST__VALUES_DELETED_BUTTON_CLICKED_BG_COLOR = base_color.LIGHT_400_COLOR, + + + SB__MESSAGE_FORMAT__EXAMPLE_BG_COLOR = "#5a6b81", # from VRChat' chat display color + # source #3a4554 (800). and this one is 600 (https://m2.material.io/design/color/the-color-system.html#tools-for-picking-colors) + SB__MESSAGE_FORMAT__EXAMPLE_TEXT_COLOR = base_color.LIGHT_100_COLOR, + SB__MESSAGE_FORMAT__SWAP_BUTTON_COLOR = base_color.LIGHT_200_COLOR, + SB__MESSAGE_FORMAT__SWAP_BUTTON_HOVERED_COLOR = base_color.LIGHT_250_COLOR, + SB__MESSAGE_FORMAT__SWAP_BUTTON_CLICKED_COLOR = base_color.LIGHT_300_COLOR, + + + + + # Side menu + SIDE_MENU_BG_COLOR = base_color.LIGHT_300_COLOR, + + SIDE_MENU_LABELS_BG_COLOR = base_color.LIGHT_300_COLOR, + SIDE_MENU_LABELS_BG_FOR_FAKE_BORDER_COLOR = base_color.LIGHT_300_COLOR, + SIDE_MENU_LABELS_HOVERED_BG_COLOR = base_color.LIGHT_350_COLOR, + SIDE_MENU_LABELS_CLICKED_BG_COLOR = base_color.PRIMARY_200_COLOR, + SIDE_MENU_LABELS_SELECTED_TEXT_COLOR = base_color.PRIMARY_350_COLOR, + + SIDE_MENU_SELECTED_MARK_ACTIVE_BG_COLOR = base_color.PRIMARY_350_COLOR, + + NOW_VERSION_TEXT_COLOR = base_color.LIGHT_800_COLOR, + + # Error Message Window for Config Window + # Check DarkTheme's this part. Based on the color bb4448, used to source, and pick up the number 600 by the generator (https://m2.material.io/design/color/the-color-system.html#tools-for-picking-colors) + SB__ERROR_MESSAGE_BG_COLOR = "#cd4c4f", + SB__ERROR_MESSAGE_TEXT_COLOR = "#fff", ), + image_file = SimpleNamespace( VRCT_LOGO = getImageFileFromUiUtils("vrct_logo_for_light_mode.png"), VRCT_LOGO_MARK = getImageFileFromUiUtils("vrct_logo_mark_black.png"), - - TRANSLATION_ICON = getImageFileFromUiUtils("translation_icon_white.png"), + TRANSLATION_ICON = getImageFileFromUiUtils("translation_icon_black.png"), TRANSLATION_ICON_DISABLED = getImageFileFromUiUtils("translation_icon_disabled.png"), - MIC_ICON = getImageFileFromUiUtils("mic_icon_white.png"), + MIC_ICON = getImageFileFromUiUtils("mic_icon_black.png"), MIC_ICON_DISABLED = getImageFileFromUiUtils("mic_icon_disabled.png"), - HEADPHONES_ICON = getImageFileFromUiUtils("headphones_icon_white.png"), + HEADPHONES_ICON = getImageFileFromUiUtils("headphones_icon_black.png"), HEADPHONES_ICON_DISABLED = getImageFileFromUiUtils("headphones_icon_disabled.png"), - FOREGROUND_ICON = getImageFileFromUiUtils("foreground_icon_white.png"), + FOREGROUND_ICON = getImageFileFromUiUtils("foreground_icon_black.png"), FOREGROUND_ICON_DISABLED = getImageFileFromUiUtils("foreground_icon_disabled.png"), - NARROW_ARROW_DOWN = getImageFileFromUiUtils("narrow_arrow_down.png"), + NARROW_ARROW_DOWN = getImageFileFromUiUtils("narrow_arrow_down_black.png"), - CONFIGURATION_ICON = getImageFileFromUiUtils("configuration_icon_white.png"), + CONFIGURATION_ICON = getImageFileFromUiUtils("configuration_icon_black.png"), CONFIGURATION_ICON_DISABLED = getImageFileFromUiUtils("configuration_icon_disabled.png"), - ARROW_LEFT = getImageFileFromUiUtils("arrow_left_white.png"), + ARROW_LEFT = getImageFileFromUiUtils("arrow_left_black.png"), ARROW_LEFT_DISABLED = getImageFileFromUiUtils("arrow_left_disabled.png"), - HELP_ICON = getImageFileFromUiUtils("help_icon_white.png"), + REFRESH_UPDATE_ICON = getImageFileFromUiUtils("refresh_update_icon.png"), + REFRESH_ICON = getImageFileFromUiUtils("refresh_icon.png"), + HELP_ICON = getImageFileFromUiUtils("help_icon_black.png"), + + CANCEL_ICON = getImageFileFromUiUtils("cancel_icon.png"), + REDO_ICON = getImageFileFromUiUtils("redo_icon_black.png"), + SWAP_ICON = getImageFileFromUiUtils("swap_icon_black.png"), + FOLDER_OPEN_ICON = getImageFileFromUiUtils("folder_open_icon_black.png"), ), ) diff --git a/vrct_gui/ui_utils/ui_utils.py b/vrct_gui/ui_utils/ui_utils.py index 5138fb5c..bd6e5a9c 100644 --- a/vrct_gui/ui_utils/ui_utils.py +++ b/vrct_gui/ui_utils/ui_utils.py @@ -162,10 +162,12 @@ def createOptionMenuBox(parent_widget, optionmenu_bg_color, optionmenu_hovered_b option_menu_box = CTkFrame(parent_widget, corner_radius=6, fg_color=optionmenu_bg_color, cursor="hand2") option_menu_box.grid_rowconfigure(0, weight=1) - if optionmenu_min_height is not None: option_menu_box.grid_rowconfigure(0, minsize=optionmenu_min_height) + if optionmenu_min_height is not None: + option_menu_box.grid_rowconfigure(0, minsize=optionmenu_min_height) option_menu_box.grid_columnconfigure(0, weight=1) - if optionmenu_min_width is not None: option_menu_box.grid_columnconfigure(0, minsize=optionmenu_min_width) + if optionmenu_min_width is not None: + option_menu_box.grid_columnconfigure(0, minsize=optionmenu_min_width) optionmenu_label_wrapper = CTkFrame(option_menu_box, corner_radius=0, fg_color=optionmenu_bg_color) optionmenu_label_wrapper.grid(row=0, column=0, padx=(optionmenu_ipadx[0],0), pady=optionmenu_ipady, sticky="ew") diff --git a/vrct_gui/vrct_gui.py b/vrct_gui/vrct_gui.py index da9939dd..a0926150 100644 --- a/vrct_gui/vrct_gui.py +++ b/vrct_gui/vrct_gui.py @@ -269,7 +269,7 @@ class VRCT_GUI(CTk): def _clearErrorMessage(self): try: self.error_message_window._withdraw() - except: + except Exception: pass