From 0026102f45cb70971112363e46669ae6ec70de30 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Fri, 26 Apr 2024 22:34:19 +0900 Subject: [PATCH] =?UTF-8?q?[Update]=20Overlay=20Settings:=20=E6=9C=89?= =?UTF-8?q?=E5=8A=B9=E7=84=A1=E5=8A=B9=E3=82=B9=E3=82=A4=E3=83=83=E3=83=81?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=80=82=20VR=20Settings=E3=81=A7=E3=81=AF?= =?UTF-8?q?=E3=81=AA=E3=81=8F=E3=80=81Overlay=20Settings=E3=81=AB=E3=80=82?= =?UTF-8?q?=20Light=E3=83=86=E3=83=BC=E3=83=9E=E3=81=AB=E4=B8=80=E9=83=A8?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view.py | 4 +- .../main_window/createMainWindowWidgets.py | 32 +++++----- .../QuickSettingsWindow.py | 37 +++++++++-- .../_CreateQuickSettingBox.py | 64 +++++++++++++++---- vrct_gui/ui_managers/Themes/_darkTheme.py | 1 + vrct_gui/ui_managers/Themes/_lightTheme.py | 1 + 6 files changed, 104 insertions(+), 35 deletions(-) diff --git a/view.py b/view.py index 8b81c381..f7a4af37 100644 --- a/view.py +++ b/view.py @@ -139,8 +139,8 @@ class View(): - # VR Settings - VAR_VR_SETTINGS=StringVar(value="VR Settings"), + # Overlay Settings + VAR_VR_SETTINGS=StringVar(value="Overlay Settings"), CALLBACK_SET_CALLBACK_OPEN_VR_SETTINGS_WINDOW=self._openVrSettingsWindow, diff --git a/vrct_gui/main_window/createMainWindowWidgets.py b/vrct_gui/main_window/createMainWindowWidgets.py index ff9f5ef3..110e9cd1 100644 --- a/vrct_gui/main_window/createMainWindowWidgets.py +++ b/vrct_gui/main_window/createMainWindowWidgets.py @@ -48,48 +48,48 @@ def createMainWindowWidgets(vrct_gui, settings, view_variable): # start from 3 main_topbar_column=3 - # VR Settings Button - vrct_gui.vr_settings_container = CTkFrame( + # Overlay Settings Button + vrct_gui.overlay_settings_container = CTkFrame( vrct_gui.main_topbar_container, corner_radius=settings.uism.UPDATE_AVAILABLE_BUTTON_CORNER_RADIUS, fg_color=settings.ctm.MAIN_BG_COLOR, cursor="hand2", ) - vrct_gui.vr_settings_container.grid(row=0, column=main_topbar_column, padx=settings.uism.UPDATE_AVAILABLE_BUTTON_PADX, pady=settings.uism.TOP_BAR_BUTTON_PADY, sticky="nsw") - # vrct_gui.vr_settings_container.grid_remove() + vrct_gui.overlay_settings_container.grid(row=0, column=main_topbar_column, padx=settings.uism.UPDATE_AVAILABLE_BUTTON_PADX, pady=settings.uism.TOP_BAR_BUTTON_PADY, sticky="nsw") + # vrct_gui.overlay_settings_container.grid_remove() - vrct_gui.vr_settings_container.grid_rowconfigure((0,2), weight=1) + vrct_gui.overlay_settings_container.grid_rowconfigure((0,2), weight=1) - vrct_gui.vr_settings_icon = CTkLabel( - vrct_gui.vr_settings_container, + vrct_gui.overlay_settings_icon = CTkLabel( + vrct_gui.overlay_settings_container, text=None, corner_radius=0, height=0, - image=CTkImage(settings.image_file.CONFIGURATION_ICON, size=settings.uism.UPDATE_AVAILABLE_BUTTON_SIZE) + image=CTkImage(settings.image_file.CONFIGURATION_ICON_DISABLED, size=settings.uism.UPDATE_AVAILABLE_BUTTON_SIZE) ) - vrct_gui.vr_settings_icon.grid(row=1, column=0, padx=(settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX, settings.uism.UPDATE_AVAILABLE_PADX_BETWEEN_LABEL_AND_ICON), pady=0) + vrct_gui.overlay_settings_icon.grid(row=1, column=0, padx=(settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX, settings.uism.UPDATE_AVAILABLE_PADX_BETWEEN_LABEL_AND_ICON), pady=0) - vrct_gui.vr_settings_label = CTkLabel( - vrct_gui.vr_settings_container, + vrct_gui.overlay_settings_label = CTkLabel( + vrct_gui.overlay_settings_container, textvariable=view_variable.VAR_VR_SETTINGS, height=0, corner_radius=0, font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.UPDATE_AVAILABLE_BUTTON_FONT_SIZE, weight="normal"), anchor="e", - text_color="#fff", + text_color=settings.ctm.TOP_BAR_BUTTON_TEXT_COLOR, # text_color=settings.ctm.UPDATE_AVAILABLE_BUTTON_TEXT_COLOR, ) # This "right padx +1" is for fixing a bug that sticks out from the frame. I don't know why that happens... - vrct_gui.vr_settings_label.grid(row=1, column=1, padx=(0,settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX+1), pady=0) + vrct_gui.overlay_settings_label.grid(row=1, column=1, padx=(0,settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX+1), pady=0) bindButtonFunctionAndColor( target_widgets=[ - vrct_gui.vr_settings_container, - vrct_gui.vr_settings_label, - vrct_gui.vr_settings_icon, + vrct_gui.overlay_settings_container, + vrct_gui.overlay_settings_label, + vrct_gui.overlay_settings_icon, ], enter_color=settings.ctm.TOP_BAR_BUTTON_HOVERED_BG_COLOR, leave_color=settings.ctm.TOP_BAR_BUTTON_BG_COLOR, diff --git a/vrct_gui/quick_settings_window/QuickSettingsWindow.py b/vrct_gui/quick_settings_window/QuickSettingsWindow.py index e4f95446..08d7ff6b 100644 --- a/vrct_gui/quick_settings_window/QuickSettingsWindow.py +++ b/vrct_gui/quick_settings_window/QuickSettingsWindow.py @@ -9,18 +9,15 @@ class QuickSettingsWindow(CTkToplevel): def __init__(self, vrct_gui, settings, view_variable): super().__init__() self.withdraw() - # self.overrideredirect(True) self.configure(fg_color="#292a2d") - self.title("Quick Settings") - # self.wm_attributes("-toolwindow", True) + self.title("Overlay Settings") self.protocol("WM_DELETE_WINDOW", self.withdraw) self.after(200, lambda: self.iconbitmap(getImagePath("vrct_logo_mark_black.ico"))) self.settings = settings - BG_HEIGHT= 220 - BG_WIDTH= 450 + BG_HEX_COLOR = "#292a2d" self.grid_columnconfigure(0, weight=1, minsize=400) @@ -32,6 +29,7 @@ class QuickSettingsWindow(CTkToplevel): cqsb = _CreateQuickSettingBox(self.qsw_background, vrct_gui, settings, view_variable) createSettingBoxSlider = cqsb.createSettingBoxSlider + createSettingBoxSwitch = cqsb.createSettingBoxSwitch @@ -39,6 +37,19 @@ class QuickSettingsWindow(CTkToplevel): # Overlay General Settings row=0 + def switchCallback(switch_widget): + callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_OVERLAY_SMALL_LOG, switch_widget.get()) + + self.qsb__enable_overlay_small_log = createSettingBoxSwitch( + for_var_label_text=view_variable.VAR_LABEL_ENABLE_OVERLAY_SMALL_LOG, + switch_attr_name="qsb__enable_overlay_small_log_switch", + command=lambda: switchCallback(vrct_gui.qsb__enable_overlay_small_log_switch), + variable=view_variable.VAR_ENABLE_OVERLAY_SMALL_LOG, + ) + self.qsb__enable_overlay_small_log.grid(row=row) + + + row+=1 def sliderCallback(e): value = round(e,2) callFunctionIfCallable(view_variable.CALLBACK_SET_OVERLAY_SETTINGS, value, "opacity") @@ -75,9 +86,23 @@ class QuickSettingsWindow(CTkToplevel): + # Overlay Small Log Settings + + # row+=1 + # def switchCallback(switch_widget): + # callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_OVERLAY_SMALL_LOG, switch_widget.get()) + + # self.qsb__enable_overlay_small_log = createSettingBoxSwitch( + # for_var_label_text=view_variable.VAR_LABEL_ENABLE_OVERLAY_SMALL_LOG, + # switch_attr_name="qsb__enable_overlay_small_log_switch", + # command=lambda: switchCallback(vrct_gui.qsb__enable_overlay_small_log_switch), + # variable=view_variable.VAR_ENABLE_OVERLAY_SMALL_LOG, + # ) + # self.qsb__enable_overlay_small_log.grid(row=row) + + row+=1 - # Overlay Small Log Settings def sliderCallback(e): value = round(e,2) callFunctionIfCallable(view_variable.CALLBACK_SET_OVERLAY_SMALL_LOG_SETTINGS, value, "x_pos") diff --git a/vrct_gui/quick_settings_window/_CreateQuickSettingBox.py b/vrct_gui/quick_settings_window/_CreateQuickSettingBox.py index 01bb931a..2a4ec2d1 100644 --- a/vrct_gui/quick_settings_window/_CreateQuickSettingBox.py +++ b/vrct_gui/quick_settings_window/_CreateQuickSettingBox.py @@ -2,7 +2,7 @@ from typing import Union from utils import callFunctionIfCallable -from customtkinter import CTkImage, CTkLabel, CTkToplevel, CTkProgressBar, CTkFrame, CTkSlider, CTkFont +from customtkinter import CTkImage, CTkLabel, CTkToplevel, CTkProgressBar, CTkFrame, CTkSlider, CTkFont, CTkSwitch from ..ui_utils import openImageKeepAspectRatio, getImageFileFromUiUtils, setGeometryToCenterOfScreen, fadeInAnimation class _CreateQuickSettingBox(): @@ -49,16 +49,16 @@ class _CreateQuickSettingBox(): setting_box_label.grid(row=1, column=0, padx=0, pady=0, sticky="nse") - - setting_box_label = CTkLabel( - setting_box_labels_frame, - textvariable=for_var_current_value, - anchor="w", - height=0, - font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.SB__LABEL_FONT_SIZE, weight="normal"), - text_color=self.settings.ctm.LABELS_TEXT_COLOR - ) - setting_box_label.grid(row=1, column=2, padx=0, pady=0, sticky="nsw") + if for_var_current_value is not None: + setting_box_label = CTkLabel( + setting_box_labels_frame, + textvariable=for_var_current_value, + anchor="w", + height=0, + font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.SB__LABEL_FONT_SIZE, weight="normal"), + text_color=self.settings.ctm.LABELS_TEXT_COLOR + ) + setting_box_label.grid(row=1, column=2, padx=0, pady=0, sticky="nsw") @@ -140,4 +140,46 @@ class _CreateQuickSettingBox(): slider_bind__ButtonRelease() slider_widget.bind("", adjusted_slider_bind__ButtonRelease, "+") + return setting_box_frame + + + + + + + + def createSettingBoxSwitch( + self, + for_var_label_text, + switch_attr_name, + variable, + command, + for_var_current_value=None, + ): + + (setting_box_frame, setting_box_item_frame) = self._createSettingBoxFrame(for_var_label_text, for_var_current_value) + + switch_widget = CTkSwitch( + setting_box_item_frame, + text=None, + height=0, + width=0, + corner_radius=int(self.settings.uism.SB__SWITCH_BOX_HEIGHT/2), + border_width=0, + switch_height=self.settings.uism.SB__SWITCH_BOX_HEIGHT, + switch_width=self.settings.uism.SB__SWITCH_BOX_WIDTH, + onvalue=True, + offvalue=False, + variable=variable, + command=command, + fg_color=self.settings.ctm.SB__SWITCH_BOX_BG_COLOR, + progress_color=self.settings.ctm.SB__SWITCH_BOX_ACTIVE_BG_COLOR, + button_color=self.settings.ctm.SB__SWITCH_BOX_BUTTON_COLOR, + button_hover_color=self.settings.ctm.SB__SWITCH_BOX_BUTTON_HOVERED_COLOR, + ) + setattr(self.vrct_gui, switch_attr_name, switch_widget) + + + switch_widget.grid(row=1, column=1, sticky="w") + return setting_box_frame \ No newline at end of file diff --git a/vrct_gui/ui_managers/Themes/_darkTheme.py b/vrct_gui/ui_managers/Themes/_darkTheme.py index 7cfe6890..c90a8e5f 100644 --- a/vrct_gui/ui_managers/Themes/_darkTheme.py +++ b/vrct_gui/ui_managers/Themes/_darkTheme.py @@ -110,6 +110,7 @@ def _darkTheme(base_color): TOP_BAR_BUTTON_BG_COLOR = base_color.DARK_888_COLOR, TOP_BAR_BUTTON_HOVERED_BG_COLOR = base_color.DARK_850_COLOR, TOP_BAR_BUTTON_CLICKED_BG_COLOR = base_color.DARK_900_COLOR, + TOP_BAR_BUTTON_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR, UPDATE_AVAILABLE_BUTTON_BG_COLOR = base_color.DARK_888_COLOR, UPDATE_AVAILABLE_BUTTON_HOVERED_BG_COLOR = base_color.DARK_850_COLOR, diff --git a/vrct_gui/ui_managers/Themes/_lightTheme.py b/vrct_gui/ui_managers/Themes/_lightTheme.py index fbaf1201..503be63a 100644 --- a/vrct_gui/ui_managers/Themes/_lightTheme.py +++ b/vrct_gui/ui_managers/Themes/_lightTheme.py @@ -110,6 +110,7 @@ def _lightTheme(base_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, + TOP_BAR_BUTTON_TEXT_COLOR = base_color.LIGHT_BASIC_TEXT_COLOR, UPDATE_AVAILABLE_BUTTON_TEXT_COLOR = base_color.PRIMARY_400_COLOR, ),