diff --git a/view.py b/view.py index f3e783e1..e7f72a0e 100644 --- a/view.py +++ b/view.py @@ -70,6 +70,7 @@ class View(): VAR_LABEL_YOUR_LANGUAGE=StringVar(value="Your Language"), # JA: あなたの言語 VAR_YOUR_LANGUAGE = StringVar(value="Japanese\n(Japan)"), CALLBACK_OPEN_SELECTABLE_YOUR_LANGUAGE_WINDOW=None, + IS_OPENED_SELECTABLE_YOUR_LANGUAGE_WINDOW=False, CALLBACK_SELECTED_YOUR_LANGUAGE=None, VAR_LABEL_BOTH_DIRECTION_DESC=StringVar(value="Translate Each Other"), # JA: 双方向に翻訳 @@ -77,6 +78,7 @@ class View(): VAR_LABEL_TARGET_LANGUAGE=StringVar(value="Target Language"), # JA: 相手の言語 VAR_TARGET_LANGUAGE = StringVar(value="English\n(United States)"), CALLBACK_OPEN_SELECTABLE_TARGET_LANGUAGE_WINDOW=None, + IS_OPENED_SELECTABLE_TARGET_LANGUAGE_WINDOW=False, CALLBACK_SELECTED_TARGET_LANGUAGE=None, @@ -86,6 +88,9 @@ class View(): VAR_LABEL_TEXTBOX_SYSTEM=StringVar(value="System"), # JA: システム + # Selectable Language Window + VAR_TITLE_LABEL_SELECTABLE_LANGUAGE=StringVar(value=""), + VAR_GO_BACK_LABEL_SELECTABLE_LANGUAGE=StringVar(value="Go Back"), @@ -381,8 +386,10 @@ class View(): vrct_gui.recreateMainWindowSidebar() def openSelectableLanguagesWindow_YourLanguage(self, _e): + self.view_variable.VAR_TITLE_LABEL_SELECTABLE_LANGUAGE.set("Your Language") vrct_gui.openSelectableLanguagesWindow("your_language") def openSelectableLanguagesWindow_TargetLanguage(self, _e): + self.view_variable.VAR_TITLE_LABEL_SELECTABLE_LANGUAGE.set("Target Language") vrct_gui.openSelectableLanguagesWindow("target_language") @@ -430,8 +437,11 @@ class View(): @staticmethod def _printToTextbox_Info(info_message): - vrct_gui.printToTextbox(vrct_gui.textbox_all, info_message, "", "INFO") - vrct_gui.printToTextbox(vrct_gui.textbox_system, info_message, "", "INFO") + vrct_gui.printToTextbox( + target_type="INFO", + original_message=info_message, + translated_message="", + ) @@ -440,8 +450,11 @@ class View(): @staticmethod def _printToTextbox_Sent(original_message, translated_message): - vrct_gui.printToTextbox(vrct_gui.textbox_all, original_message, translated_message, "SEND") - vrct_gui.printToTextbox(vrct_gui.textbox_sent, original_message, translated_message, "SEND") + vrct_gui.printToTextbox( + target_type="SEND", + original_message=original_message, + translated_message=translated_message, + ) def printToTextbox_ReceivedMessage(self, original_message, translated_message): @@ -449,8 +462,11 @@ class View(): @staticmethod def _printToTextbox_Received(original_message, translated_message): - vrct_gui.printToTextbox(vrct_gui.textbox_all, original_message, translated_message, "RECEIVE") - vrct_gui.printToTextbox(vrct_gui.textbox_received, original_message, translated_message, "RECEIVE") + vrct_gui.printToTextbox( + target_type="RECEIVE", + original_message=original_message, + translated_message=translated_message, + ) @staticmethod diff --git a/vrct_gui/_CreateSelectableLanguagesWindow.py b/vrct_gui/_CreateSelectableLanguagesWindow.py index ee5a0ea5..e0c8d6ce 100644 --- a/vrct_gui/_CreateSelectableLanguagesWindow.py +++ b/vrct_gui/_CreateSelectableLanguagesWindow.py @@ -37,13 +37,15 @@ class _CreateSelectableLanguagesWindow(CTkToplevel): def createContainer(self, selectable_language_window_type): self.selectable_language_window_type = selectable_language_window_type + self.attach.update_idletasks() self.x_pos = self.attach.winfo_rootx() self.y_pos = self.attach.winfo_rooty() - self.width_new = self.attach.winfo_width() - 16 - self.height_new = self.attach.winfo_height() - 50 + self.width_new = self.attach.winfo_width() + self.height_new = self.attach.winfo_height() - self.geometry('+{}+{}'.format(self.x_pos, self.y_pos)) + self.geometry('{}x{}+{}+{}'.format(self.width_new, self.height_new, self.x_pos, self.y_pos)) + if self.is_created is True: @@ -69,16 +71,15 @@ class _CreateSelectableLanguagesWindow(CTkToplevel): def _createContainer(self): - # self.geometry('{}x{}+{}+{}'.format(self.width_new, self.height_new, self.x_pos, self.y_pos)) - # self.geometry('{}x{}+{}+{}'.format(self.width_new, self.height_new, self.x_pos, self.y_pos)) - - self.rowconfigure(0, minsize=50) - self.top_container = CTkFrame(self, corner_radius=0, fg_color=self.settings.ctm.MAIN_BG_COLOR, width=0, height=0) + self.rowconfigure(1, weight=1) + self.columnconfigure(0, weight=1) + self.top_container = CTkFrame(self, corner_radius=0, fg_color=self.settings.ctm.TOP_BG_COLOR, width=0, height=0) self.top_container.grid(row=0, column=0, sticky="nsew") self.top_container.rowconfigure((0,2), weight=1) + self.top_container.columnconfigure(1, weight=1) self.go_back_button_container = CTkFrame(self.top_container, corner_radius=0, fg_color=self.settings.ctm.GO_BACK_BUTTON_BG_COLOR, width=0, height=0) self.go_back_button_container.grid(row=1, column=0) @@ -88,19 +89,37 @@ class _CreateSelectableLanguagesWindow(CTkToplevel): self.go_back_button_label = CTkLabel( self.go_back_button_label_wrapper, - text="Go back", + textvariable=self._view_variable.VAR_GO_BACK_LABEL_SELECTABLE_LANGUAGE, height=0, corner_radius=0, font=CTkFont(family=self.settings.FONT_FAMILY, size=14, weight="normal"), anchor="w", text_color=self.settings.ctm.BASIC_TEXT_COLOR, ) - self.go_back_button_label.grid(row=1, column=0, padx=10, pady=10) + self.go_back_button_label.grid(row=0, column=0, padx=10, pady=8) bindButtonReleaseFunction([self.go_back_button_label_wrapper, self.go_back_button_label], lambda _e: self.vrct_gui.closeSelectableLanguagesWindow()) + self.title_container = CTkFrame(self.top_container, corner_radius=0, fg_color=self.settings.ctm.TOP_BG_COLOR, width=0, height=0) + self.title_container.grid(row=1, column=1, sticky="nsew") + + self.title_container.columnconfigure((0,2), weight=1) + self.title_container.rowconfigure((0,2), weight=1) + self.title_label = CTkLabel( + self.title_container, + textvariable=self._view_variable.VAR_TITLE_LABEL_SELECTABLE_LANGUAGE, + height=0, + corner_radius=0, + font=CTkFont(family=self.settings.FONT_FAMILY, size=18, weight="normal"), + anchor="w", + text_color=self.settings.ctm.TITLE_TEXT_COLOR, + ) + self.title_label.grid(row=1, column=1) + + + self.scroll_frame_container = CTkScrollableFrame(self, corner_radius=0, fg_color=self.settings.ctm.MAIN_BG_COLOR, width=self.width_new, height=self.height_new) self.scroll_frame_container.grid(row=1, column=0, sticky="nsew") diff --git a/vrct_gui/_printToTextbox.py b/vrct_gui/_printToTextbox.py index 88bcc87b..9becc64d 100644 --- a/vrct_gui/_printToTextbox.py +++ b/vrct_gui/_printToTextbox.py @@ -1,7 +1,7 @@ from datetime import datetime from customtkinter import CTkFont -def _printToTextbox(settings, target_textbox, original_message, translated_message, tags=None): +def _printToTextbox(settings, target_textbox, original_message=None, translated_message=None, tags=None): now_raw_data = datetime.now() now = now_raw_data.strftime('%H:%M:%S') now_hm = now_raw_data.strftime('%H:%M') diff --git a/vrct_gui/main_window/widgets/_create_sidebar/createSidebarLanguagesSettings.py b/vrct_gui/main_window/widgets/_create_sidebar/createSidebarLanguagesSettings.py index 493092b6..08dd9c70 100644 --- a/vrct_gui/main_window/widgets/_create_sidebar/createSidebarLanguagesSettings.py +++ b/vrct_gui/main_window/widgets/_create_sidebar/createSidebarLanguagesSettings.py @@ -51,29 +51,7 @@ def createSidebarLanguagesSettings(settings, main_window, view_variable): - - - def createOption_DropdownMenu_for_languageSettings(setattr_obj, parent_widget, optionmenu_attr_name, dropdown_menu_values, command, width:int = 200, font_size:int = 10, text_color="white", variable=""): - setattr(setattr_obj, optionmenu_attr_name, CTkOptionMenu( - parent_widget, - height=30, - width=width, - values=dropdown_menu_values, - button_color=settings.ctm.SLS__DROPDOWN_MENU_BG_COLOR, - fg_color=settings.ctm.SLS__DROPDOWN_MENU_BG_COLOR, - text_color=text_color, - font=CTkFont(family=settings.FONT_FAMILY, size=font_size, weight="normal"), - variable=variable, - anchor="center", - command=command, - )) - target_optionmenu_attr = getattr(setattr_obj, optionmenu_attr_name) - target_optionmenu_attr.grid(row=0, column=0, sticky="e") - - - - - def createLanguageSettingBox(parent_widget, var_title_text, title_text_attr_name, arrow_img_attr_name, dropdown_menu_values, open_selectable_language_window_command, variable): + def createLanguageSettingBox(parent_widget, var_title_text, title_text_attr_name, arrow_img_attr_name, open_selectable_language_window_command, variable): sls__box = CTkFrame(parent_widget, corner_radius=0, fg_color=settings.ctm.SLS__BOX_BG_COLOR, width=0, height=0) sls__box.columnconfigure((0,2), weight=1) @@ -102,11 +80,11 @@ def createSidebarLanguagesSettings(settings, main_window, view_variable): sls__selected_language_box.columnconfigure(0, minsize=200) sls__selected_language_box.rowconfigure(0, minsize=30) - sls__selected_language_label = CTkFrame(sls__selected_language_box, corner_radius=0, fg_color=settings.ctm.SLS__DROPDOWN_MENU_BG_COLOR) - sls__selected_language_label.grid(row=0, column=0) + sls__selected_language_label_frame = CTkFrame(sls__selected_language_box, corner_radius=0, fg_color=settings.ctm.SLS__DROPDOWN_MENU_BG_COLOR) + sls__selected_language_label_frame.grid(row=0, column=0) sls__selected_language_label = CTkLabel( - sls__selected_language_label, + sls__selected_language_label_frame, textvariable=variable, height=0, # anchor="center", @@ -133,12 +111,12 @@ def createSidebarLanguagesSettings(settings, main_window, view_variable): - # bindEnterAndLeaveColor([self.wrapper, label_widget], self.settings.ctm.LANGUAGE_BUTTON_BG_HOVERED_COLOR, self.settings.ctm.LANGUAGE_BUTTON_BG_COLOR) - # bindButtonPressColor([self.wrapper, label_widget], self.settings.ctm.LANGUAGE_BUTTON_BG_CLICKED_COLOR, self.settings.ctm.LANGUAGE_BUTTON_BG_COLOR) + bindEnterAndLeaveColor([sls__selected_language_label_frame, sls__selected_language_box, sls__selected_language_label], settings.ctm.SLS__DROPDOWN_MENU_HOVERED_BG_COLOR, settings.ctm.SLS__DROPDOWN_MENU_BG_COLOR) + bindButtonPressColor([sls__selected_language_label_frame, sls__selected_language_box, sls__selected_language_label], settings.ctm.SLS__DROPDOWN_MENU_CLICKED_BG_COLOR, settings.ctm.SLS__DROPDOWN_MENU_HOVERED_BG_COLOR) - bindButtonReleaseFunction([sls__selected_language_box, sls__selected_language_label, sls__selected_language_arrow_img], open_selectable_language_window_command) + bindButtonReleaseFunction([sls__selected_language_label_frame, sls__selected_language_box, sls__selected_language_label, sls__selected_language_arrow_img], open_selectable_language_window_command) return sls__box @@ -251,7 +229,6 @@ def createSidebarLanguagesSettings(settings, main_window, view_variable): var_title_text=view_variable.VAR_LABEL_YOUR_LANGUAGE, title_text_attr_name="sls__title_text_your_language", arrow_img_attr_name="sls__arrow_img_your_language", - dropdown_menu_values=view_variable.LIST_SELECTABLE_LANGUAGES, open_selectable_language_window_command=callbackOpenSelectableYourLanguageWindow, variable=view_variable.VAR_YOUR_LANGUAGE ) @@ -299,7 +276,6 @@ def createSidebarLanguagesSettings(settings, main_window, view_variable): var_title_text=view_variable.VAR_LABEL_TARGET_LANGUAGE, title_text_attr_name="sls__title_text_target_language", arrow_img_attr_name="sls__arrow_img_target_language", - dropdown_menu_values=view_variable.LIST_SELECTABLE_LANGUAGES, open_selectable_language_window_command=callbackOpenSelectableTargetLanguageWindow, variable=view_variable.VAR_TARGET_LANGUAGE ) diff --git a/vrct_gui/ui_managers/ColorThemeManager.py b/vrct_gui/ui_managers/ColorThemeManager.py index 85600f13..2f980de4 100644 --- a/vrct_gui/ui_managers/ColorThemeManager.py +++ b/vrct_gui/ui_managers/ColorThemeManager.py @@ -151,6 +151,8 @@ class ColorThemeManager(): self.main.SLS__BOX_ARROWS_TEXT_COLOR = self.DARK_500_COLOR self.main.SLS__DROPDOWN_MENU_BG_COLOR = self.DARK_888_COLOR + self.main.SLS__DROPDOWN_MENU_HOVERED_BG_COLOR = self.DARK_875_COLOR + self.main.SLS__DROPDOWN_MENU_CLICKED_BG_COLOR = self.DARK_900_COLOR self.main.CONFIG_BUTTON_BG_COLOR = self.main.SIDEBAR_BG_COLOR @@ -179,6 +181,8 @@ class ColorThemeManager(): self.selectable_language_window.GO_BACK_BUTTON_BG_COLOR = self.DARK_800_COLOR + self.selectable_language_window.TOP_BG_COLOR = self.main.SIDEBAR_BG_COLOR + self.selectable_language_window.TITLE_TEXT_COLOR = self.DARK_400_COLOR self.selectable_language_window.LANGUAGE_BUTTON_BG_HOVERED_COLOR = self.DARK_825_COLOR self.selectable_language_window.LANGUAGE_BUTTON_BG_CLICKED_COLOR = self.DARK_888_COLOR diff --git a/vrct_gui/vrct_gui.py b/vrct_gui/vrct_gui.py index c4720fb6..f525ff4a 100644 --- a/vrct_gui/vrct_gui.py +++ b/vrct_gui/vrct_gui.py @@ -64,13 +64,28 @@ class VRCT_GUI(CTk): self.config_window.grab_release() + + def openSelectableLanguagesWindow(self, selectable_language_window_type): if selectable_language_window_type == "your_language": - self.sls__arrow_img_your_language.configure(image=CTkImage((self.settings.main.image_file.ARROW_LEFT),size=(20,20))) - elif selectable_language_window_type == "target_language": - self.sls__arrow_img_target_language.configure(image=CTkImage((self.settings.main.image_file.ARROW_LEFT),size=(20,20))) + if self._view_variable.IS_OPENED_SELECTABLE_YOUR_LANGUAGE_WINDOW is False: + self.sls__arrow_img_your_language.configure(image=CTkImage((self.settings.main.image_file.ARROW_LEFT),size=(20,20))) + self._view_variable.IS_OPENED_SELECTABLE_YOUR_LANGUAGE_WINDOW = True + self._view_variable.IS_OPENED_SELECTABLE_TARGET_LANGUAGE_WINDOW = False + else: + self._view_variable.IS_OPENED_SELECTABLE_YOUR_LANGUAGE_WINDOW = False + return + + elif selectable_language_window_type == "target_language": + if self._view_variable.IS_OPENED_SELECTABLE_TARGET_LANGUAGE_WINDOW is False: + self.sls__arrow_img_target_language.configure(image=CTkImage((self.settings.main.image_file.ARROW_LEFT),size=(20,20))) + self._view_variable.IS_OPENED_SELECTABLE_TARGET_LANGUAGE_WINDOW = True + self._view_variable.IS_OPENED_SELECTABLE_YOUR_LANGUAGE_WINDOW = False + else: + self._view_variable.IS_OPENED_SELECTABLE_TARGET_LANGUAGE_WINDOW = False + return + - self.sls__arrow_img_target_language self.selectable_languages_window.createContainer(selectable_language_window_type) self.selectable_languages_window.deiconify() self.selectable_languages_window.focus_set() @@ -81,6 +96,8 @@ class VRCT_GUI(CTk): self.sls__arrow_img_your_language.configure(image=CTkImage((self.settings.main.image_file.ARROW_LEFT).rotate(180),size=(20,20))) self.sls__arrow_img_target_language.configure(image=CTkImage((self.settings.main.image_file.ARROW_LEFT).rotate(180),size=(20,20))) self.selectable_languages_window.withdraw() + self._view_variable.IS_OPENED_SELECTABLE_TARGET_LANGUAGE_WINDOW = False + self._view_variable.IS_OPENED_SELECTABLE_YOUR_LANGUAGE_WINDOW = False @@ -108,13 +125,30 @@ class VRCT_GUI(CTk): target_names=target_names, ) - def printToTextbox(self, target_textbox, original_message, translated_message, tags=None): + def printToTextbox(self, target_type, original_message=None, translated_message=None): + match (target_type): + case "INFO": + target_textbox = self.textbox_system + case "SEND": + target_textbox = self.textbox_sent + case "RECEIVE": + target_textbox = self.textbox_received + case (_): + raise ValueError(f"No matching case for target_type: {target_type}") _printToTextbox( settings=self.settings.main, target_textbox=target_textbox, original_message=original_message, translated_message=translated_message, - tags=tags, + tags=target_type, + ) + # To automatically print the same log to the textbox_all widget as well. + _printToTextbox( + settings=self.settings.main, + target_textbox=self.textbox_all, + original_message=original_message, + translated_message=translated_message, + tags=target_type, ) def setDefaultActiveLanguagePresetTab(self, tab_no:str):