From 19b29b4955190f805f66dbf66fb63810feb887d0 Mon Sep 17 00:00:00 2001 From: misygauziya Date: Wed, 16 Aug 2023 01:59:07 +0900 Subject: [PATCH] =?UTF-8?q?[Update]=20=E5=87=A6=E7=90=86=E3=82=92=E5=88=86?= =?UTF-8?q?=E5=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VRCT.py | 244 +++++++++++++++++++++++------------------------------- config.py | 25 ++++++ 2 files changed, 128 insertions(+), 141 deletions(-) diff --git a/VRCT.py b/VRCT.py index d52398eb..d62184f0 100644 --- a/VRCT.py +++ b/VRCT.py @@ -34,10 +34,6 @@ class App(CTk): customtkinter.set_appearance_mode(config.APPEARANCE_THEME) customtkinter.set_default_color_theme("blue") - ## flags - self.ENABLE_OSC = False - self.UPDATE_FLAG = False - # init main window self.iconbitmap(os_path.join(os_path.dirname(__file__), "img", "app.ico")) self.title("VRCT") @@ -45,82 +41,12 @@ class App(CTk): self.minsize(400, 175) self.grid_columnconfigure(1, weight=1) self.grid_rowconfigure(0, weight=1) + self.wm_attributes("-alpha", config.TRANSPARENCY/100) + customtkinter.set_widget_scaling(int(config.UI_SCALING.replace("%", "")) / 100) + self.protocol("WM_DELETE_WINDOW", self.delete_window) - # add sidebar left - self.sidebar_frame = CTkFrame(self, corner_radius=0) - self.sidebar_frame.grid(row=0, column=0, rowspan=4, sticky="nsw") - self.sidebar_frame.grid_rowconfigure(5, weight=1) - - init_lang_text = "Loading..." - - # add checkbox translation - self.checkbox_translation = CTkCheckBox( - self.sidebar_frame, - text=init_lang_text, - onvalue=True, - offvalue=False, - command=self.checkbox_translation_callback, - font=CTkFont(family=config.FONT_FAMILY) - ) - self.checkbox_translation.grid(row=0, column=0, columnspan=2, padx=10, pady=(5, 5), sticky="we") - - # add checkbox transcription send - self.checkbox_transcription_send = CTkCheckBox( - self.sidebar_frame, - text=init_lang_text, - onvalue=True, - offvalue=False, - command=self.checkbox_transcription_send_callback, - font=CTkFont(family=config.FONT_FAMILY) - ) - self.checkbox_transcription_send.grid(row=1, column=0, columnspan=2, padx=10, pady=(5, 5), sticky="we") - - # add checkbox transcription receive - self.checkbox_transcription_receive = CTkCheckBox( - self.sidebar_frame, - text=init_lang_text, - onvalue=True, - offvalue=False, - command=self.checkbox_transcription_receive_callback, - font=CTkFont(family=config.FONT_FAMILY) - ) - self.checkbox_transcription_receive.grid(row=2, column=0, columnspan=2, padx=10, pady=(5, 5), sticky="we") - - # add checkbox foreground - self.checkbox_foreground = CTkCheckBox( - self.sidebar_frame, - text=init_lang_text, - onvalue=True, - offvalue=False, - command=self.checkbox_foreground_callback, - font=CTkFont(family=config.FONT_FAMILY) - ) - self.checkbox_foreground.grid(row=3, column=0, columnspan=2, padx=10, pady=(5, 5), sticky="we") - - # add button information - self.button_information = CTkButton( - self.sidebar_frame, - text=None, - width=36, - command=self.button_information_callback, - image=CTkImage(Image_open(os_path.join(os_path.dirname(__file__), "img", "info-icon-white.png"))) - ) - self.button_information.grid(row=5, column=0, padx=(10, 5), pady=(5, 5), sticky="wse") - - # add button config - self.button_config = CTkButton( - self.sidebar_frame, - text=None, - width=36, - command=self.button_config_callback, - image=CTkImage(Image_open(os_path.join(os_path.dirname(__file__), "img", "config-icon-white.png"))) - ) - self.button_config.grid(row=5, column=1, padx=(5, 10), pady=(5, 5), sticky="wse") - - # load ui language data - language_yaml_data = get_localized_text(f"{config.UI_LANGUAGE}") - # add tabview textbox - self.add_tabview_logs(language_yaml_data) + # add sidebar + self.add_sidebar() # add entry message box self.entry_message_box = CTkEntry( @@ -129,64 +55,28 @@ class App(CTk): font=CTkFont(family=config.FONT_FAMILY), ) self.entry_message_box.grid(row=1, column=1, columnspan=2, padx=5, pady=(5, 10), sticky="nsew") + self.entry_message_box.bind("", self.entry_message_box_press_key_enter) + self.entry_message_box.bind("", self.entry_message_box_press_key_any) + self.entry_message_box.bind("", self.entry_message_box_leave) - # set default values - ## set translator + # add tabview textbox + self.add_tabview_logs(get_localized_text(f"{config.UI_LANGUAGE}")) + + self.config_window = ToplevelWindowConfig(self) + self.information_window = ToplevelWindowInformation(self) + self.init_process() + + def init_process(self): + # set translator if self.translator.authentication(config.CHOICE_TRANSLATOR, config.AUTH_KEYS[config.CHOICE_TRANSLATOR]) is False: # error update Auth key print_textbox(self.textbox_message_log, "Auth Key or language setting is incorrect", "ERROR") print_textbox(self.textbox_message_system_log, "Auth Key or language setting is incorrect", "ERROR") - # ## set checkbox enable translation - # if self.ENABLE_TRANSLATION: - # self.checkbox_translation.select() - # self.checkbox_translation_callback() - # else: - # self.checkbox_translation.deselect() - - # ## set checkbox enable transcription send - # if self.ENABLE_TRANSCRIPTION_SEND: - # self.checkbox_transcription_send.select() - # self.checkbox_transcription_send_callback() - # else: - # self.checkbox_transcription_send.deselect() - - # ## set checkbox enable transcription receive - # if self.ENABLE_TRANSCRIPTION_RECEIVE: - # self.checkbox_transcription_receive.select() - # self.checkbox_transcription_receive_callback() - # else: - # self.checkbox_transcription_receive.deselect() - - # ## set set checkbox enable foreground - # if self.ENABLE_FOREGROUND: - # self.checkbox_foreground.select() - # self.checkbox_foreground_callback() - # else: - # self.checkbox_foreground.deselect() - - ## set word filter + # set word filter for f in config.INPUT_MIC_WORD_FILTER: self.keyword_processor.add_keyword(f) - ## set bind entry message box - self.entry_message_box.bind("", self.entry_message_box_press_key_enter) - self.entry_message_box.bind("", self.entry_message_box_press_key_any) - self.entry_message_box.bind("", self.entry_message_box_leave) - - ## set transparency for main window - self.wm_attributes("-alpha", config.TRANSPARENCY/100) - - ## set UI scale - new_scaling_float = int(config.UI_SCALING.replace("%", "")) / 100 - customtkinter.set_widget_scaling(new_scaling_float) - - # delete window - self.protocol("WM_DELETE_WINDOW", self.delete_window) - - self.config_window = ToplevelWindowConfig(self) - self.information_window = ToplevelWindowInformation(self) - # start receive osc th_receive_osc_parameters = Thread(target=receive_osc_parameters, args=(self.check_osc_receive,)) th_receive_osc_parameters.daemon = True @@ -196,10 +86,10 @@ class App(CTk): send_test_action() # check update - response = requests_get("https://api.github.com/repos/misyaguziya/VRCT/releases/latest") + response = requests_get(config.GITHUB_URL) tag_name = response.json()["tag_name"] if tag_name != __version__: - self.UPDATE_FLAG = True + config.UPDATE_FLAG = True def button_config_callback(self): self.foreground_stop() @@ -277,7 +167,7 @@ class App(CTk): voice_message = config.MESSAGE_FORMAT.replace("[message]", message).replace("[translation]", result) if self.checkbox_transcription_send.get() is True: - if self.ENABLE_OSC is True: + if config.ENABLE_OSC is True: # send OSC message send_message(voice_message, config.OSC_IP_ADDRESS, config.OSC_PORT) else: @@ -492,7 +382,7 @@ class App(CTk): chat_message = config.MESSAGE_FORMAT.replace("[message]", message).replace("[translation]", result) # send OSC message - if self.ENABLE_OSC is True: + if config.ENABLE_OSC is True: send_message(chat_message, config.OSC_IP_ADDRESS, config.OSC_PORT) else: print_textbox(self.textbox_message_log, "OSC is not enabled, please enable OSC and rejoin.", "ERROR") @@ -531,6 +421,77 @@ class App(CTk): self.quit() self.destroy() + def add_sidebar(self): + init_lang_text = "Loading..." + self.sidebar_frame = CTkFrame(master=self, corner_radius=0) + + # add checkbox translation + self.checkbox_translation = CTkCheckBox( + self.sidebar_frame, + text=init_lang_text, + onvalue=True, + offvalue=False, + command=self.checkbox_translation_callback, + font=CTkFont(family=config.FONT_FAMILY) + ) + + # add checkbox transcription send + self.checkbox_transcription_send = CTkCheckBox( + self.sidebar_frame, + text=init_lang_text, + onvalue=True, + offvalue=False, + command=self.checkbox_transcription_send_callback, + font=CTkFont(family=config.FONT_FAMILY) + ) + + # add checkbox transcription receive + self.checkbox_transcription_receive = CTkCheckBox( + self.sidebar_frame, + text=init_lang_text, + onvalue=True, + offvalue=False, + command=self.checkbox_transcription_receive_callback, + font=CTkFont(family=config.FONT_FAMILY) + ) + + # add checkbox foreground + self.checkbox_foreground = CTkCheckBox( + self.sidebar_frame, + text=init_lang_text, + onvalue=True, + offvalue=False, + command=self.checkbox_foreground_callback, + font=CTkFont(family=config.FONT_FAMILY) + ) + + # add button information + self.button_information = CTkButton( + self.sidebar_frame, + text=None, + width=36, + command=self.button_information_callback, + image=CTkImage(Image_open(os_path.join(os_path.dirname(__file__), "img", "info-icon-white.png"))) + ) + + # add button config + self.button_config = CTkButton( + self.sidebar_frame, + text=None, + width=36, + command=self.button_config_callback, + image=CTkImage(Image_open(os_path.join(os_path.dirname(__file__), "img", "config-icon-white.png"))) + ) + + self.sidebar_frame.grid(row=0, column=0, rowspan=4, sticky="nsw") + self.sidebar_frame.grid_rowconfigure(5, weight=1) + self.checkbox_translation.grid(row=0, column=0, columnspan=2, padx=10, pady=(5, 5), sticky="we") + self.checkbox_transcription_send.grid(row=1, column=0, columnspan=2, padx=10, pady=(5, 5), sticky="we") + self.checkbox_transcription_receive.grid(row=2, column=0, columnspan=2, padx=10, pady=(5, 5), sticky="we") + self.checkbox_foreground.grid(row=3, column=0, columnspan=2, padx=10, pady=(5, 5), sticky="we") + self.button_information.grid(row=5, column=0, padx=(10, 5), pady=(5, 5), sticky="wse") + self.button_config.grid(row=5, column=1, padx=(5, 10), pady=(5, 5), sticky="wse") + def delete_tabview_logs(self, pre_language_yaml_data): self.tabview_logs.delete(pre_language_yaml_data["main_tab_title_log"]) self.tabview_logs.delete(pre_language_yaml_data["main_tab_title_send"]) @@ -567,39 +528,40 @@ class App(CTk): self.tabview_logs.tab(main_tab_title_log), font=CTkFont(family=config.FONT_FAMILY) ) - self.textbox_message_log.grid(row=0, column=0, padx=0, pady=0, sticky="nsew") - self.textbox_message_log.configure(state='disabled') # add textbox message send log self.textbox_message_send_log = CTkTextbox( self.tabview_logs.tab(main_tab_title_send), font=CTkFont(family=config.FONT_FAMILY) ) - self.textbox_message_send_log.grid(row=0, column=0, padx=0, pady=0, sticky="nsew") - self.textbox_message_send_log.configure(state='disabled') # add textbox message receive log self.textbox_message_receive_log = CTkTextbox( self.tabview_logs.tab(main_tab_title_receive), font=CTkFont(family=config.FONT_FAMILY) ) - self.textbox_message_receive_log.grid(row=0, column=0, padx=0, pady=0, sticky="nsew") - self.textbox_message_receive_log.configure(state='disabled') # add textbox message system log self.textbox_message_system_log = CTkTextbox( self.tabview_logs.tab(main_tab_title_system), font=CTkFont(family=config.FONT_FAMILY) ) + + self.textbox_message_log.grid(row=0, column=0, padx=0, pady=0, sticky="nsew") + self.textbox_message_send_log.grid(row=0, column=0, padx=0, pady=0, sticky="nsew") + self.textbox_message_receive_log.grid(row=0, column=0, padx=0, pady=0, sticky="nsew") self.textbox_message_system_log.grid(row=0, column=0, padx=0, pady=0, sticky="nsew") + self.textbox_message_log.configure(state='disabled') + self.textbox_message_send_log.configure(state='disabled') + self.textbox_message_receive_log.configure(state='disabled') self.textbox_message_system_log.configure(state='disabled') widget_main_window_label_setter(self, language_yaml_data) def check_osc_receive(self, address, osc_arguments): - if self.ENABLE_OSC is False: - self.ENABLE_OSC = True - # print(address, osc_arguments) + print(address, osc_arguments) + if config.ENABLE_OSC is False: + config.ENABLE_OSC = True if __name__ == "__main__": try: diff --git a/config.py b/config.py index cf5075b2..753cc7f2 100644 --- a/config.py +++ b/config.py @@ -349,6 +349,28 @@ class Config: self._ENABLE_NOTICE_XSOVERLAY = value save_json(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + @property + def ENABLE_OSC(self): + return self._ENABLE_OSC + + @ENABLE_OSC.setter + def ENABLE_OSC(self, value): + if type(value) is bool: + self._ENABLE_OSC = value + + @property + def UPDATE_FLAG(self): + return self._UPDATE_FLAG + + @UPDATE_FLAG.setter + def UPDATE_FLAG(self, value): + if type(value) is bool: + self._UPDATE_FLAG = value + + @property + def GITHUB_URL(self): + return self._GITHUB_URL + def init_config(self): self._PATH_CONFIG = "./config.json" self._TRANSPARENCY = 100 @@ -388,6 +410,9 @@ class Config: self._MESSAGE_FORMAT = "[message]([translation])" self._ENABLE_AUTO_CLEAR_CHATBOX = False self._ENABLE_NOTICE_XSOVERLAY = False + self._ENABLE_OSC = False + self._UPDATE_FLAG = False + self._GITHUB_URL = "https://api.github.com/repos/misyaguziya/VRCT/releases/latest" def load_config(self): if os_path.isfile(self.PATH_CONFIG) is not False: