diff --git a/config.py b/config.py index 54b057a5..c1af4611 100644 --- a/config.py +++ b/config.py @@ -197,6 +197,15 @@ class Config: if value in list(translation_lang.keys()): self._CHOICE_OUTPUT_TRANSLATOR = value + @property + def IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION(self): + return self._IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION + + @IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION.setter + def IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION(self, value): + if isinstance(value, bool): + self._IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION = value + # Save Json Data ## Main Window @property @@ -761,6 +770,7 @@ class Config: self._SOURCE_COUNTRY = "Japan" self._TARGET_LANGUAGE = "English" self._TARGET_COUNTRY = "United States" + self._IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION = False # Save Json Data ## Main Window diff --git a/controller.py b/controller.py index 949c12e1..686113bc 100644 --- a/controller.py +++ b/controller.py @@ -489,22 +489,39 @@ def callbackSetUseTranslationFeature(value): if config.USE_TRANSLATION_FEATURE is True: view.useTranslationFeatureProcess("Normal") if model.checkCTranslatorCTranslate2ModelWeight(): - model.changeTranslatorCTranslate2Model() + config.IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION = False + def callback(): + model.changeTranslatorCTranslate2Model() + th_callback = Thread(target=callback) + th_callback.daemon = True + th_callback.start() else: - view.useTranslationFeatureProcess("Disable") - # CTranslate2 weight is not downloaded + config.IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION = True + view.useTranslationFeatureProcess("Restart") else: + config.IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION = False view.useTranslationFeatureProcess("Disable") + view.showRestartButtonIfRequired() def callbackSetCtranslate2WeightType(value): print("callbackSetCtranslate2WeightType", value) config.WEIGHT_TYPE = str(value) view.updateSelectedCtranslate2WeightType(config.WEIGHT_TYPE) + view.setWidgetsStatus_changeWeightType_Pending() if model.checkCTranslatorCTranslate2ModelWeight(): - model.changeTranslatorCTranslate2Model() + 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: - view.useTranslationFeatureProcess("Disable") - # CTranslate2 weight is not downloaded + config.IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION = True + view.useTranslationFeatureProcess("Restart") + view.setWidgetsStatus_changeWeightType_Done() + view.showRestartButtonIfRequired() def callbackSetDeeplAuthKey(value): print("callbackSetDeeplAuthKey", str(value)) diff --git a/locales/en.yml b/locales/en.yml index cce6552b..bfa7c48f 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -6,7 +6,7 @@ main_window: language_settings: Language Settings your_language: Your Language - both_direction_desc: Translate Each Other + translate_each_other_label: Translate Each Other swap_button_label: Swap Languages target_language: Target Language translator: Translator diff --git a/locales/ja.yml b/locales/ja.yml index c7132340..54cde38d 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -6,7 +6,7 @@ main_window: language_settings: 言語設定 your_language: あなたの言語 - both_direction_desc: 双方向に翻訳 + translate_each_other_label: 双方向に翻訳 swap_button_label: 言語を入れ替え target_language: 相手の言語 translator: 翻訳エンジン diff --git a/locales/ko.yml b/locales/ko.yml index 11e23fae..ff30399f 100644 --- a/locales/ko.yml +++ b/locales/ko.yml @@ -6,7 +6,7 @@ main_window: language_settings: 언어 설정 your_language: 당신의 언어 - both_direction_desc: 양방향으로 번역 + translate_each_other_label: 양방향으로 번역 swap_button_label: 언어 교체 target_language: 상대방의 언어 diff --git a/view.py b/view.py index 28007ec5..97157c8d 100644 --- a/view.py +++ b/view.py @@ -28,6 +28,7 @@ class View(): ui_scaling=config.UI_SCALING, font_family=config.FONT_FAMILY, ui_language=config.UI_LANGUAGE, + is_reset_button_displayed_for_translation=config.IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION, ) if config.ENABLE_SPEAKER2CHATBOX is False: @@ -161,9 +162,10 @@ class View(): IS_OPENED_SELECTABLE_YOUR_LANGUAGE_WINDOW=False, CALLBACK_SELECTED_YOUR_LANGUAGE=None, - VAR_LABEL_BOTH_DIRECTION_DESC=StringVar(value=i18n.t("main_window.both_direction_desc")), - VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON=StringVar(value=i18n.t("main_window.swap_button_label")), + VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON=StringVar(value=""), CALLBACK_SWAP_LANGUAGES=None, + CALLBACK_ENTERED_SWAP_LANGUAGES_BUTTON=self._enteredSwapLanguagesButton, + CALLBACK_LEAVED_SWAP_LANGUAGES_BUTTON=self._leavedSwapLanguagesButton, VAR_LABEL_TARGET_LANGUAGE=StringVar(value=i18n.t("main_window.target_language")), VAR_TARGET_LANGUAGE = StringVar(value=f"{config.TARGET_LANGUAGE}\n({config.TARGET_COUNTRY})"), @@ -650,7 +652,9 @@ class View(): if config.USE_TRANSLATION_FEATURE is True: self.useTranslationFeatureProcess("Normal") + self.view_variable.VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON.set(i18n.t("main_window.translate_each_other_label")) else: + self.view_variable.VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON.set(i18n.t("main_window.swap_button_label")) self.useTranslationFeatureProcess("Disable") if config.CHOICE_MIC_HOST == "NoHost": @@ -878,18 +882,38 @@ class View(): } def useTranslationFeatureProcess(self, state:str): + def changeWidget_UseTranslationFeature(): + vrct_gui.sls__box_translation_optionmenu_wrapper.grid() + vrct_gui.compact_mode_translation_frame.grid() + vrct_gui.translation_frame.grid() + self.view_variable.VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON.set(i18n.t("main_window.translate_each_other_label")) + + def changeWidget_DontUseTranslationFeature(): + vrct_gui.sls__box_translation_optionmenu_wrapper.grid_remove() + vrct_gui.compact_mode_translation_frame.grid_remove() + vrct_gui.translation_frame.grid_remove() + self.view_variable.VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON.set(i18n.t("main_window.swap_button_label")) + + if state == "Normal": self.setLatestCTranslate2WeightType() self.openCtranslate2WeightTypeWidget() self.setTranslationSwitchStatus("normal", release_locked_state=True) - vrct_gui.sls__box_translation_optionmenu_wrapper.grid() - vrct_gui.config_window.after(200, vrct_gui.config_window.lift) + changeWidget_UseTranslationFeature() elif state == "Disable": view.closeCtranslate2WeightTypeWidget() view.setTranslationSwitchStatus("disabled", to_lock_state=True) - vrct_gui.sls__box_translation_optionmenu_wrapper.grid_remove() - vrct_gui.config_window.after(200, vrct_gui.config_window.lift) + changeWidget_DontUseTranslationFeature() + + elif state == "Restart": + view.setLatestCTranslate2WeightType() + view.setTranslationSwitchStatus("disabled", to_lock_state=True) + changeWidget_UseTranslationFeature() + + vrct_gui.update() + vrct_gui.config_window.lift() + # Open Webpage Functions def openWebPage_Booth(self): @@ -984,7 +1008,8 @@ class View(): self.restart_required_configs_pre_data.appearance_theme == config.APPEARANCE_THEME and self.restart_required_configs_pre_data.ui_scaling == config.UI_SCALING and self.restart_required_configs_pre_data.font_family == config.FONT_FAMILY and - self.restart_required_configs_pre_data.ui_language == config.UI_LANGUAGE + self.restart_required_configs_pre_data.ui_language == config.UI_LANGUAGE and + self.restart_required_configs_pre_data.is_reset_button_displayed_for_translation == config.IS_RESET_BUTTON_DISPLAYED_FOR_TRANSLATION ) if locale is None: @@ -1013,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]) @@ -1206,7 +1253,7 @@ class View(): self._clearEntryBox(vrct_gui.config_window.sb__entry_mic_word_filter_list) -# Widget Control (Whole) +# Widget Control def foregroundOnIfForegroundEnabled(self): if config.ENABLE_FOREGROUND: self.foregroundOn() @@ -1264,6 +1311,19 @@ class View(): vrct_gui.main_send_message_button_container.grid() vrct_gui.config_window.after(200, vrct_gui.config_window.lift) + def _enteredSwapLanguagesButton(self): + self.view_variable.VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON.set(i18n.t("main_window.swap_button_label")) + vrct_gui.sls__both_direction_desc.configure( + text_color=self.settings.main.ctm.SLS__BOX_ARROWS_SWAP_BUTTON_TEXT_COLOR, + ) + + def _leavedSwapLanguagesButton(self): + if config.USE_TRANSLATION_FEATURE is True: + self.view_variable.VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON.set(i18n.t("main_window.translate_each_other_label")) + vrct_gui.sls__both_direction_desc.configure( + text_color=self.settings.main.ctm.SLS__BOX_ARROWS_TEXT_COLOR, + ) + # Function def _adjustUiSizeAndRestart(self): current_percentage = int(config.UI_SCALING.replace("%","")) diff --git a/vrct_gui/_CreateDropdownMenuWindow.py b/vrct_gui/_CreateDropdownMenuWindow.py index 5ca598e0..d6853b35 100644 --- a/vrct_gui/_CreateDropdownMenuWindow.py +++ b/vrct_gui/_CreateDropdownMenuWindow.py @@ -326,9 +326,18 @@ class _CreateDropdownMenuWindow(CTkToplevel): def _withdraw(self, e=None): self.withdraw() - self.attach_widget.winfo_toplevel().unbind("", self.BIND_CONFIGURE_FUNC_ID) - self.attach_widget.unbind("", self.BIND_UNMAP_FUNC_ID) - self.attach_widget.winfo_toplevel().unbind("", self.BIND_BUTTON_1_FUNC_ID) + try: + self.attach_widget.winfo_toplevel().unbind("", self.BIND_CONFIGURE_FUNC_ID) + except Exception: + pass + try: + self.attach_widget.unbind("", self.BIND_UNMAP_FUNC_ID) + except Exception: + pass + try: + self.attach_widget.winfo_toplevel().unbind("", self.BIND_BUTTON_1_FUNC_ID) + except Exception: + pass self.hide = True 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/_changeMainWindowWidgetsStatus.py b/vrct_gui/_changeMainWindowWidgetsStatus.py index 3a77cb32..3b6eaf74 100644 --- a/vrct_gui/_changeMainWindowWidgetsStatus.py +++ b/vrct_gui/_changeMainWindowWidgetsStatus.py @@ -28,13 +28,13 @@ def _changeMainWindowWidgetsStatus(vrct_gui, settings, view_variable, status, ta if status == "disabled": widget_frame.configure(cursor="") widget_label.configure(text_color=settings.ctm.SF__TEXT_DISABLED_COLOR) - widget_switch_box.configure(state="disabled", progress_color=settings.ctm.SF__SWITCH_BOX_DISABLE_BG_COLOR) + widget_switch_box.configure(state="disabled", progress_color=settings.ctm.SF__SWITCH_BOX_DISABLE_BG_COLOR, button_color=settings.ctm.SF__SWITCH_BOX_BUTTON_DISABLED_COLOR) widget_selected_mark.configure(fg_color=settings.ctm.SF__SELECTED_MARK_DISABLE_BG_COLOR) icon_file = disabled_icon_name elif status == "normal": widget_frame.configure(cursor="hand2") widget_label.configure(text_color=settings.ctm.LABELS_TEXT_COLOR) - widget_switch_box.configure(state="normal", progress_color=settings.ctm.SF__SWITCH_BOX_ACTIVE_BG_COLOR) + widget_switch_box.configure(state="normal", progress_color=settings.ctm.SF__SWITCH_BOX_ACTIVE_BG_COLOR, button_color=settings.ctm.SF__SWITCH_BOX_BUTTON_COLOR) widget_selected_mark.configure(fg_color=settings.ctm.SF__SELECTED_MARK_ACTIVE_BG_COLOR) icon_file = icon_name 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/main_window/widgets/_create_sidebar/createSidebarLanguagesSettings.py b/vrct_gui/main_window/widgets/_create_sidebar/createSidebarLanguagesSettings.py index e85e084a..6678ffd3 100644 --- a/vrct_gui/main_window/widgets/_create_sidebar/createSidebarLanguagesSettings.py +++ b/vrct_gui/main_window/widgets/_create_sidebar/createSidebarLanguagesSettings.py @@ -250,7 +250,7 @@ def createSidebarLanguagesSettings(settings, main_window, view_variable): main_window.sls__both_direction_desc = CTkLabel( main_window.sls__arrow_direction_swap_box, - textvariable=view_variable.VAR_LABEL_BOTH_DIRECTION_DESC, + textvariable=view_variable.VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON, height=0, font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.SLS__BOX_ARROWS_DESC_FONT_SIZE, weight="normal"), text_color=settings.ctm.SLS__BOX_ARROWS_TEXT_COLOR, @@ -286,16 +286,10 @@ def createSidebarLanguagesSettings(settings, main_window, view_variable): def adjustedCommand_Entered(): - main_window.sls__both_direction_desc.configure( - textvariable=view_variable.VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON, - text_color=settings.ctm.SLS__BOX_ARROWS_SWAP_BUTTON_TEXT_COLOR, - ) + callFunctionIfCallable(view_variable.CALLBACK_ENTERED_SWAP_LANGUAGES_BUTTON) def adjustedCommand_Leaved(): - main_window.sls__both_direction_desc.configure( - textvariable=view_variable.VAR_LABEL_BOTH_DIRECTION_DESC, - text_color=settings.ctm.SLS__BOX_ARROWS_TEXT_COLOR, - ) + callFunctionIfCallable(view_variable.CALLBACK_LEAVED_SWAP_LANGUAGES_BUTTON) bindEnterAndLeaveFunction( target_widgets=[ diff --git a/vrct_gui/ui_managers/Themes/_darkTheme.py b/vrct_gui/ui_managers/Themes/_darkTheme.py index 15721fb8..46592b4f 100644 --- a/vrct_gui/ui_managers/Themes/_darkTheme.py +++ b/vrct_gui/ui_managers/Themes/_darkTheme.py @@ -58,6 +58,7 @@ def _darkTheme(base_color): SF__SWITCH_BOX_DISABLE_BG_COLOR = base_color.PRIMARY_800_COLOR, SF__SWITCH_BOX_BUTTON_COLOR = base_color.DARK_400_COLOR, + SF__SWITCH_BOX_BUTTON_DISABLED_COLOR = base_color.DARK_600_COLOR, # It's not working because It overrode internally. SF__SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.DARK_350_COLOR, @@ -215,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 2261386e..08caeae1 100644 --- a/vrct_gui/ui_managers/Themes/_lightTheme.py +++ b/vrct_gui/ui_managers/Themes/_lightTheme.py @@ -58,6 +58,7 @@ def _lightTheme(base_color): SF__SWITCH_BOX_DISABLE_BG_COLOR = base_color.PRIMARY_200_COLOR, SF__SWITCH_BOX_BUTTON_COLOR = base_color.LIGHT_150_COLOR, + SF__SWITCH_BOX_BUTTON_DISABLED_COLOR = base_color.LIGHT_300_COLOR, # It's not working because It overrode internally. SF__SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.LIGHT_300_COLOR, @@ -208,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)