Merge branch 'view' into UI_2.0
This commit is contained in:
11
view.py
11
view.py
@@ -156,6 +156,8 @@ class View():
|
||||
SLIDER_RANGE_TRANSPARENCY=(50, 100),
|
||||
CALLBACK_SET_TRANSPARENCY=None,
|
||||
VAR_TRANSPARENCY=IntVar(value=config.TRANSPARENCY),
|
||||
CALLBACK_BUTTON_PRESS_TRANSPARENCY=self._closeTheCoverOfMainWindow,
|
||||
CALLBACK_BUTTON_RELEASE_TRANSPARENCY=self._openTheCoverOfMainWindow,
|
||||
|
||||
VAR_LABEL_APPEARANCE_THEME=StringVar(value=i18n.t("config_window.appearance_theme.label")),
|
||||
VAR_DESC_APPEARANCE_THEME=StringVar(value=i18n.t("config_window.appearance_theme.desc")),
|
||||
@@ -539,6 +541,15 @@ class View():
|
||||
vrct_gui.attributes("-topmost", False)
|
||||
|
||||
|
||||
@staticmethod
|
||||
def _openTheCoverOfMainWindow():
|
||||
vrct_gui.modal_window.show()
|
||||
vrct_gui.config_window.lift()
|
||||
|
||||
@staticmethod
|
||||
def _closeTheCoverOfMainWindow():
|
||||
vrct_gui.modal_window.withdraw()
|
||||
|
||||
def enableMainWindowSidebarCompactMode(self):
|
||||
self.view_variable.IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE = True
|
||||
vrct_gui._enableMainWindowSidebarCompactMode()
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from customtkinter import CTkToplevel, CTkFrame, CTkLabel, CTkFont
|
||||
|
||||
from .ui_utils import fadeInAnimation
|
||||
|
||||
class _CreateModalWindow(CTkToplevel):
|
||||
def __init__(self, attach_window, settings, view_variable):
|
||||
super().__init__()
|
||||
@@ -46,4 +48,10 @@ class _CreateModalWindow(CTkToplevel):
|
||||
anchor="w",
|
||||
text_color=self.settings.ctm.TEXT_COLOR,
|
||||
)
|
||||
self.modal_container_label_wrapper.place(relx=0.5, rely=0.5, anchor="center")
|
||||
self.modal_container_label_wrapper.place(relx=0.5, rely=0.5, anchor="center")
|
||||
|
||||
|
||||
def show(self):
|
||||
self.attributes("-alpha", 0)
|
||||
self.deiconify()
|
||||
fadeInAnimation(self, steps=5, interval=0.005, max_alpha=0.5)
|
||||
|
||||
@@ -4,6 +4,7 @@ from .widgets import createConfigWindowTitle, createSideMenuAndSettingsBoxContai
|
||||
from customtkinter import CTkToplevel, CTkFrame
|
||||
|
||||
from ..ui_utils import getImagePath, getLatestWidth, getLatestHeight
|
||||
from utils import isEven
|
||||
|
||||
class ConfigWindow(CTkToplevel):
|
||||
def __init__(self, vrct_gui, settings, view_variable):
|
||||
@@ -35,8 +36,17 @@ class ConfigWindow(CTkToplevel):
|
||||
createSideMenuAndSettingsBoxContainers(config_window=self, settings=self.settings, view_variable=self._view_variable)
|
||||
|
||||
# for fixing 1px bug
|
||||
l_width = getLatestWidth(self.side_menu_bg_container)
|
||||
if isEven(l_width) is False:
|
||||
self.side_menu_bg_container.grid_columnconfigure(0, weight=0, minsize=l_width+1)
|
||||
|
||||
# for fixing 1px bug
|
||||
self.side_menu_bg_container.grid_rowconfigure(2, weight=1)
|
||||
sls__box_optionmenu_wrapper_fix_1px_bug = CTkFrame(self.side_menu_bg_container, corner_radius=0, width=0, height=0)
|
||||
sls__box_optionmenu_wrapper_fix_1px_bug.grid(row=1, column=0, sticky="ew")
|
||||
sls__box_optionmenu_wrapper_fix_1px_bug.grid(row=3, column=0, sticky="sew")
|
||||
|
||||
# for fixing 1px bug
|
||||
l_width = getLatestWidth(self.side_menu_bg_container)
|
||||
|
||||
|
||||
self.bind_all("<Button-1>", lambda event: event.widget.focus_set(), "+")
|
||||
@@ -13,7 +13,7 @@ def _createSettingBoxCompactModeButton(parent_widget, config_window, settings, v
|
||||
|
||||
|
||||
config_window.setting_box_compact_mode_button_container = CTkFrame(parent_widget, corner_radius=0, fg_color=settings.ctm.TOP_BAR_BG_COLOR, width=0, height=0)
|
||||
config_window.setting_box_compact_mode_button_container.grid(row=0, column=column_num, padx=settings.uism.COMPACT_MODE_PADX, sticky="nsw")
|
||||
config_window.setting_box_compact_mode_button_container.grid(row=0, column=column_num, padx=settings.uism.COMPACT_MODE_PADX, sticky="nse")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -13,10 +13,15 @@ def createSettingBoxTopBar(config_window, settings, view_variable):
|
||||
config_window.setting_box_top_bar.grid(row=0, column=1, sticky="nsew")
|
||||
|
||||
|
||||
config_window.setting_box_top_bar.grid_rowconfigure(0, weight=1)
|
||||
|
||||
column_num=0
|
||||
_createSettingBoxTitle(parent_widget=config_window.setting_box_top_bar, config_window=config_window, settings=settings, view_variable=view_variable, column_num=column_num)
|
||||
column_num+=1
|
||||
|
||||
config_window.setting_box_top_bar.grid_columnconfigure(column_num, weight=1)
|
||||
column_num+=1
|
||||
|
||||
_createSettingBoxCompactModeButton(parent_widget=config_window.setting_box_top_bar, config_window=config_window, settings=settings, view_variable=view_variable, column_num=column_num)
|
||||
column_num+=1
|
||||
|
||||
@@ -27,4 +32,4 @@ def createSettingBoxTopBar(config_window, settings, view_variable):
|
||||
|
||||
# for fixing 1px bug
|
||||
setting_box_top_bar_fix_1px_bug = CTkFrame(config_window.setting_box_top_bar, corner_radius=0, width=0, height=0)
|
||||
setting_box_top_bar_fix_1px_bug.grid(row=0, column=column_num, sticky="ns")
|
||||
setting_box_top_bar_fix_1px_bug.grid(row=0, column=column_num, sticky="nse")
|
||||
@@ -29,8 +29,8 @@ def createSideMenuAndSettingsBoxContainers(config_window, settings, view_variabl
|
||||
config_window.grid_rowconfigure(1, weight=1)
|
||||
config_window.side_menu_bg_container = CTkFrame(config_window, corner_radius=0, fg_color=settings.ctm.SIDE_MENU_BG_COLOR, width=0, height=0)
|
||||
config_window.side_menu_bg_container.grid(row=1, column=0, sticky="nsew")
|
||||
config_window.side_menu_bg_container.grid_columnconfigure(0, weight=1)
|
||||
|
||||
config_window.side_menu_bg_container.grid_rowconfigure(0, weight=1)
|
||||
config_window.side_menu_container = CTkFrame(config_window.side_menu_bg_container, corner_radius=0, fg_color=settings.ctm.SIDE_MENU_LABELS_BG_FOR_FAKE_BORDER_COLOR, width=0, height=0)
|
||||
config_window.side_menu_container.grid(row=0, column=0, padx=settings.uism.TOP_BAR_SIDE__TITLE_PADX, pady=(settings.uism.SIDE_MENU_TOP_PADY, 0), sticky="nsew")
|
||||
|
||||
|
||||
@@ -204,11 +204,10 @@ class _SettingBoxGenerator():
|
||||
|
||||
|
||||
|
||||
def createSettingBoxSlider(self, for_var_label_text, for_var_desc_text, slider_attr_name, slider_range, command, variable, slider_number_of_steps: Union[int, None] = None):
|
||||
def createSettingBoxSlider(self, for_var_label_text, for_var_desc_text, slider_attr_name, slider_range, command, variable, slider_number_of_steps: Union[int, None] = None, slider_bind__ButtonPress=None, slider_bind__ButtonRelease=None):
|
||||
(setting_box_frame, setting_box_item_frame) = self._createSettingBoxFrame(slider_attr_name, for_var_label_text, for_var_desc_text)
|
||||
|
||||
# print(self.settings.uism.SB__SLIDER_WIDTH)
|
||||
# print(self.settings.uism.SB__SLIDER_HEIGHT)
|
||||
|
||||
slider_widget = CTkSlider(
|
||||
setting_box_item_frame,
|
||||
width=self.settings.uism.SB__SLIDER_WIDTH,
|
||||
@@ -225,6 +224,17 @@ class _SettingBoxGenerator():
|
||||
|
||||
slider_widget.grid(row=1, column=SETTING_BOX_COLUMN, sticky="e")
|
||||
|
||||
if slider_bind__ButtonPress is not None:
|
||||
def adjusted_slider_bind__ButtonPress(_e):
|
||||
command(_e)
|
||||
slider_bind__ButtonPress()
|
||||
slider_widget.configure(command=adjusted_slider_bind__ButtonPress)
|
||||
|
||||
if slider_bind__ButtonRelease is not None:
|
||||
def adjusted_slider_bind__ButtonRelease(_e):
|
||||
slider_bind__ButtonRelease()
|
||||
slider_widget.bind("<ButtonRelease>", adjusted_slider_bind__ButtonRelease, "+")
|
||||
|
||||
return setting_box_frame
|
||||
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@ def createSettingBox_Appearance(setting_box_wrapper, config_window, settings, vi
|
||||
slider_range=view_variable.SLIDER_RANGE_TRANSPARENCY,
|
||||
command=lambda value: slider_transparency_callback(value),
|
||||
variable=view_variable.VAR_TRANSPARENCY,
|
||||
slider_bind__ButtonPress=view_variable.CALLBACK_BUTTON_PRESS_TRANSPARENCY,
|
||||
slider_bind__ButtonRelease=view_variable.CALLBACK_BUTTON_RELEASE_TRANSPARENCY,
|
||||
)
|
||||
config_window.sb__transparency.grid(row=row)
|
||||
row+=1
|
||||
|
||||
@@ -23,6 +23,23 @@ class VRCT_GUI(CTk):
|
||||
self.is_config_window_already_opened_once=False
|
||||
self.BIND_CONFIGURE_ADJUSTED_GEOMETRY_FUNC_ID=None
|
||||
self.BIND_FOCUS_IN_MODAL_WINDOW_LIFT_CONFIG_WINDOW_FUNC_ID=None
|
||||
self.BIND_UNMAP_DETECT_MAIN_WINDOW_STATE_FUNC_ID = None
|
||||
self.BIND_MAP_DETECT_MAIN_WINDOW_STATE_FUNC_ID = None
|
||||
|
||||
self.window_state = None
|
||||
|
||||
def detectMainWindowState(self, _e=None):
|
||||
self.new_window_state = self.wm_state()
|
||||
if self.window_state == self.new_window_state:
|
||||
return
|
||||
else:
|
||||
self.window_state = self.new_window_state
|
||||
|
||||
if self.window_state == "iconic":
|
||||
self.modal_window.withdraw()
|
||||
elif self.window_state == "normal":
|
||||
self.modal_window.show()
|
||||
|
||||
|
||||
|
||||
def _showGUI(self):
|
||||
@@ -111,11 +128,13 @@ class VRCT_GUI(CTk):
|
||||
callFunctionIfCallable(self._view_variable.CALLBACK_OPEN_CONFIG_WINDOW)
|
||||
|
||||
self._adjustToMainWindowGeometry()
|
||||
self.modal_window.attributes("-alpha", 0)
|
||||
self.modal_window.deiconify()
|
||||
fadeInAnimation(self.modal_window, steps=5, interval=0.005, max_alpha=0.5)
|
||||
self.modal_window.show()
|
||||
|
||||
self.BIND_CONFIGURE_ADJUSTED_GEOMETRY_FUNC_ID = self.bind("<Configure>", self._adjustToMainWindowGeometry, "+")
|
||||
|
||||
self.BIND_UNMAP_DETECT_MAIN_WINDOW_STATE_FUNC_ID = self.bind("<Unmap>", self.detectMainWindowState, "+")
|
||||
self.BIND_MAP_DETECT_MAIN_WINDOW_STATE_FUNC_ID = self.bind("<Map>", self.detectMainWindowState, "+")
|
||||
|
||||
self.BIND_FOCUS_IN_MODAL_WINDOW_LIFT_CONFIG_WINDOW_FUNC_ID = self.modal_window.bind("<FocusIn>", lambda _e: self.config_window.lift(), "+")
|
||||
|
||||
self.config_window.attributes("-alpha", 0)
|
||||
@@ -134,6 +153,8 @@ class VRCT_GUI(CTk):
|
||||
|
||||
self.modal_window.withdraw()
|
||||
self.unbind("<Configure>", self.BIND_CONFIGURE_ADJUSTED_GEOMETRY_FUNC_ID)
|
||||
self.unbind("<Unmap>", self.BIND_UNMAP_DETECT_MAIN_WINDOW_STATE_FUNC_ID)
|
||||
self.unbind("<Map>", self.BIND_MAP_DETECT_MAIN_WINDOW_STATE_FUNC_ID)
|
||||
self.modal_window.unbind("<FocusIn>", self.BIND_FOCUS_IN_MODAL_WINDOW_LIFT_CONFIG_WINDOW_FUNC_ID)
|
||||
self.adjusted_event=None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user