From edaca7edc2d3fd62531443db1067fc7a2d4335b4 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Mon, 22 Jan 2024 20:33:50 +0900 Subject: [PATCH] =?UTF-8?q?[bugfix/refactor]=20weight=E3=82=BF=E3=82=A4?= =?UTF-8?q?=E3=83=97=E5=A4=89=E6=9B=B4=E5=87=A6=E7=90=86=E4=B8=AD=E3=81=AF?= =?UTF-8?q?=E3=80=81weight=E3=82=BF=E3=82=A4=E3=83=97=E5=A4=89=E6=9B=B4?= =?UTF-8?q?=E3=81=A8=E7=BF=BB=E8=A8=B3=E6=A9=9F=E8=83=BD=E3=82=AA=E3=83=B3?= =?UTF-8?q?=E3=82=AA=E3=83=95widget=E3=82=92disabled=E3=81=AB=E3=80=82=20?= =?UTF-8?q?=E7=90=86=E7=94=B1:=20weight=E3=82=BF=E3=82=A4=E3=83=97?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=E5=87=A6=E7=90=86=E3=81=AF=E9=9D=9E=E5=90=8C?= =?UTF-8?q?=E6=9C=9F=E3=81=A7=E3=80=81=E5=A4=89=E6=9B=B4=E5=87=A6=E7=90=86?= =?UTF-8?q?=E4=B8=AD=E3=81=AB=E4=B8=8A=E8=A8=98widget=E3=82=92=E8=A7=A6?= =?UTF-8?q?=E3=82=8C=E3=82=8B=E3=81=A8UI=E3=81=B8=E3=81=AE=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E5=87=A6=E7=90=86=E9=A0=86=E3=81=8C=E6=84=8F=E5=9B=B3?= =?UTF-8?q?=E3=81=97=E3=81=9F=E9=A0=86=E7=95=AA=E3=81=A8=E5=A4=89=E3=82=8F?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86=E3=81=9F=E3=82=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit その他リファクタリングあり。 --- controller.py | 3 ++ view.py | 22 ++++++++++ vrct_gui/_changeConfigWindowWidgetsStatus.py | 42 ++++++++++++++++++- .../_SettingBoxGenerator.py | 4 ++ vrct_gui/ui_managers/Themes/_darkTheme.py | 3 ++ vrct_gui/ui_managers/Themes/_lightTheme.py | 3 ++ vrct_gui/ui_utils/ui_utils.py | 11 ++++- 7 files changed, 84 insertions(+), 4 deletions(-) diff --git a/controller.py b/controller.py index d8f9efac..ade5dc0d 100644 --- a/controller.py +++ b/controller.py @@ -507,17 +507,20 @@ def callbackSetCtranslate2WeightType(value): print("callbackSetCtranslate2WeightType", value) config.WEIGHT_TYPE = str(value) view.updateSelectedCtranslate2WeightType(config.WEIGHT_TYPE) + view.setWidgetsStatus_changeWeightType_Pending() if model.checkCTranslatorCTranslate2ModelWeight(): config.IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION = False def callback(): model.changeTranslatorCTranslate2Model() view.useTranslationFeatureProcess("Normal") + view.setWidgetsStatus_changeWeightType_Done() th_callback = Thread(target=callback) th_callback.daemon = True th_callback.start() else: config.IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION = True view.useTranslationFeatureProcess("Restart") + view.setWidgetsStatus_changeWeightType_Done() view.showRestartButtonIfRequired() def callbackSetDeeplAuthkey(value): diff --git a/view.py b/view.py index 3ed71a23..fa748514 100644 --- a/view.py +++ b/view.py @@ -1038,6 +1038,28 @@ class View(): vrct_gui.config_window.setting_box_compact_mode_switch_box.configure(state="normal") + @staticmethod + def setWidgetsStatus_changeWeightType_Pending(): + vrct_gui.config_window.sb__switch_use_translation_feature.configure(state="disabled") + vrct_gui._changeConfigWindowWidgetsStatus( + status="disabled", + target_names=[ + "sb__switch_use_translation_feature", + "sb__optionmenu_ctranslate2_weight_type", + ] + ) + @staticmethod + def setWidgetsStatus_changeWeightType_Done(): + vrct_gui.config_window.sb__switch_use_translation_feature.configure(state="normal") + vrct_gui._changeConfigWindowWidgetsStatus( + status="normal", + target_names=[ + "sb__switch_use_translation_feature", + "sb__optionmenu_ctranslate2_weight_type", + ] + ) + + def updateSelectedCtranslate2WeightType(self, selected_weight_type:str): self.view_variable.VAR_CTRANSLATE2_WEIGHT_TYPE.set(self.getSelectableCtranslate2WeightTypeDict()[selected_weight_type]) diff --git a/vrct_gui/_changeConfigWindowWidgetsStatus.py b/vrct_gui/_changeConfigWindowWidgetsStatus.py index b9b0f9d8..02dddd42 100644 --- a/vrct_gui/_changeConfigWindowWidgetsStatus.py +++ b/vrct_gui/_changeConfigWindowWidgetsStatus.py @@ -10,37 +10,75 @@ def _changeConfigWindowWidgetsStatus(config_window, settings, view_variable, sta if target_widget.desc_widget is not None: target_widget.desc_widget.configure(text_color=settings.ctm.LABELS_TEXT_DISABLED_COLOR) + def normalLabelsWidgets(target_widget): + target_widget.label_widget.configure(text_color=settings.ctm.LABELS_TEXT_COLOR) + if target_widget.desc_widget is not None: + target_widget.desc_widget.configure(text_color=settings.ctm.LABELS_DESC_TEXT_COLOR) + + def disableOptionmenuWidget(target_widget): - disableLabelsWidgets(target_widget) target_widget.optionmenu_label_widget.configure(text_color=settings.ctm.LABELS_TEXT_DISABLED_COLOR) target_widget.optionmenu_img_widget.configure(image=CTkImage(settings.image_file.ARROW_LEFT_DISABLED.rotate(90), size=settings.uism.SB__OPTIONMENU_IMG_SIZE)) target_widget.optionmenu_box.unbindFunction() target_widget.optionmenu_box.configure(cursor="") + def normalOptionmenuWidget(target_widget): + target_widget.optionmenu_label_widget.configure(text_color=settings.ctm.LABELS_TEXT_COLOR) + target_widget.optionmenu_img_widget.configure(image=CTkImage(settings.image_file.ARROW_LEFT.rotate(90), size=settings.uism.SB__OPTIONMENU_IMG_SIZE)) + target_widget.optionmenu_box.bindFunction() + target_widget.optionmenu_box.configure(cursor="hand2") + for target_name in target_names: match target_name: case "sb__optionmenu_mic_host": if status == "disabled": target_widget = config_window.sb__widgets["sb__optionmenu_mic_host"] + disableLabelsWidgets(target_widget) disableOptionmenuWidget(target_widget) case "sb__optionmenu_mic_device": if status == "disabled": target_widget = config_window.sb__widgets["sb__optionmenu_mic_device"] + disableLabelsWidgets(target_widget) disableOptionmenuWidget(target_widget) case "sb__optionmenu_appearance_theme": if status == "disabled": target_widget = config_window.sb__widgets["sb__optionmenu_appearance_theme"] + disableLabelsWidgets(target_widget) disableOptionmenuWidget(target_widget) + case "sb__optionmenu_ctranslate2_weight_type": + target_widget = config_window.sb__widgets["sb__optionmenu_ctranslate2_weight_type"] + if status == "disabled": + disableOptionmenuWidget(target_widget) + elif status == "normal": + normalOptionmenuWidget(target_widget) + + + case "sb__switch_use_translation_feature": + target_widget = config_window.sb__widgets["sb__switch_use_translation_feature"] + if status == "disabled": + target_widget.switch_box.configure( + state="disabled", + fg_color=settings.ctm.SB__SWITCH_BOX_BG_DISABLED_COLOR, + progress_color=settings.ctm.SB__SWITCH_BOX_ACTIVE_BG_DISABLED_COLOR, + button_color=settings.ctm.SB__SWITCH_BOX_BUTTON_DISABLED_COLOR, + ) + elif status == "normal": + target_widget.switch_box.configure( + state="normal", + fg_color=settings.ctm.SB__SWITCH_BOX_BG_COLOR, + progress_color=settings.ctm.SB__SWITCH_BOX_ACTIVE_BG_COLOR, + button_color=settings.ctm.SB__SWITCH_BOX_BUTTON_COLOR, + ) case "sb__checkbox_enable_send_received_message_to_vrc": if status == "disabled": target_widget = config_window.sb__widgets["sb__checkbox_enable_send_received_message_to_vrc"] disableLabelsWidgets(target_widget) - config_window.sb__checkbox_enable_send_received_message_to_vrc.configure( + target_widget.checkbox.configure( state="disabled", border_color=settings.ctm.SB__CHECKBOX_BORDER_DISABLED_COLOR ) 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 7d44a2bb..ade6913a 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 @@ -210,6 +210,8 @@ class _SettingBoxGenerator(): ) setattr(self.config_window, switch_attr_name, switch_widget) + self.config_window.sb__widgets[switch_attr_name].switch_box = switch_widget + switch_widget.grid(row=1, column=SETTING_BOX_COLUMN, sticky="e") return setting_box_frame @@ -245,6 +247,8 @@ class _SettingBoxGenerator(): ) setattr(self.config_window, checkbox_attr_name, checkbox_widget) + self.config_window.sb__widgets[checkbox_attr_name].checkbox = checkbox_widget + checkbox_widget.grid(row=1, column=SETTING_BOX_COLUMN, sticky="e") return setting_box_frame diff --git a/vrct_gui/ui_managers/Themes/_darkTheme.py b/vrct_gui/ui_managers/Themes/_darkTheme.py index 8442b6bb..46592b4f 100644 --- a/vrct_gui/ui_managers/Themes/_darkTheme.py +++ b/vrct_gui/ui_managers/Themes/_darkTheme.py @@ -216,8 +216,11 @@ def _darkTheme(base_color): SB__SLIDER_TOOLTIP_TEXT_COLOR = base_color.DARK_200_COLOR, SB__SWITCH_BOX_BG_COLOR = base_color.DARK_800_COLOR, + SB__SWITCH_BOX_BG_DISABLED_COLOR = base_color.DARK_900_COLOR, SB__SWITCH_BOX_ACTIVE_BG_COLOR = base_color.PRIMARY_500_COLOR, + SB__SWITCH_BOX_ACTIVE_BG_DISABLED_COLOR = base_color.PRIMARY_700_COLOR, SB__SWITCH_BOX_BUTTON_COLOR = base_color.DARK_400_COLOR, + SB__SWITCH_BOX_BUTTON_DISABLED_COLOR = base_color.DARK_700_COLOR, SB__SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.DARK_350_COLOR, SB__CHECKBOX_BORDER_COLOR = base_color.DARK_600_COLOR, diff --git a/vrct_gui/ui_managers/Themes/_lightTheme.py b/vrct_gui/ui_managers/Themes/_lightTheme.py index 8d2ff33b..08caeae1 100644 --- a/vrct_gui/ui_managers/Themes/_lightTheme.py +++ b/vrct_gui/ui_managers/Themes/_lightTheme.py @@ -209,8 +209,11 @@ def _lightTheme(base_color): SB__SLIDER_TOOLTIP_TEXT_COLOR = base_color.LIGHT_800_COLOR, SB__SWITCH_BOX_BG_COLOR = base_color.LIGHT_400_COLOR, + SB__SWITCH_BOX_BG_DISABLED_COLOR = base_color.LIGHT_200_COLOR, SB__SWITCH_BOX_ACTIVE_BG_COLOR = base_color.PRIMARY_300_COLOR, + SB__SWITCH_BOX_ACTIVE_BG_DISABLED_COLOR = base_color.PRIMARY_150_COLOR, SB__SWITCH_BOX_BUTTON_COLOR = base_color.LIGHT_300_COLOR, + SB__SWITCH_BOX_BUTTON_DISABLED_COLOR = base_color.LIGHT_150_COLOR, SB__SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.LIGHT_200_COLOR, SB__CHECKBOX_BORDER_COLOR = base_color.LIGHT_600_COLOR, diff --git a/vrct_gui/ui_utils/ui_utils.py b/vrct_gui/ui_utils/ui_utils.py index 3e6dcccf..ca75416b 100644 --- a/vrct_gui/ui_utils/ui_utils.py +++ b/vrct_gui/ui_utils/ui_utils.py @@ -205,10 +205,15 @@ def createLabelButton(parent_widget, label_button_bg_color, label_button_hovered bindButtonReleaseFunction([label_button_label_wrapper, label_button_box, label_button_label_widget], label_button_clicked_command) + def bindEventFromWidgets(): + bindButtonReleaseFunction([label_button_label_wrapper, label_button_box, label_button_label_widget], label_button_clicked_command) + bindEventFromWidgets() + def unbindEventFromWidgets(): unbindEnterLEaveButtonPressButtonReleaseFunction([label_button_label_wrapper, label_button_box, label_button_label_widget]) label_button_box.unbindFunction = unbindEventFromWidgets + label_button_box.bindFunction = bindEventFromWidgets return (label_button_box, label_button_label_widget) @@ -265,13 +270,15 @@ def createOptionMenuBox(parent_widget, optionmenu_bg_color, optionmenu_hovered_b bindButtonPressColor([optionmenu_label_wrapper, option_menu_box, optionmenu_label_widget, optionmenu_img_widget], optionmenu_clicked_bg_color, optionmenu_hovered_bg_color) - - bindButtonReleaseFunction([optionmenu_label_wrapper, option_menu_box, optionmenu_label_widget, optionmenu_img_widget], optionmenu_clicked_command) + def bindEventFromWidgets(): + bindButtonReleaseFunction([optionmenu_label_wrapper, option_menu_box, optionmenu_label_widget, optionmenu_img_widget], optionmenu_clicked_command) + bindEventFromWidgets() def unbindEventFromWidgets(): unbindEnterLEaveButtonPressButtonReleaseFunction([optionmenu_label_wrapper, option_menu_box, optionmenu_label_widget, optionmenu_img_widget]) option_menu_box.unbindFunction = unbindEventFromWidgets + option_menu_box.bindFunction = bindEventFromWidgets return (option_menu_box, optionmenu_label_widget, optionmenu_img_widget)