[fix] Config Window: Compact Mode. 今までDestroy()してWidgetsが再生成されていたのを、grid_removeを使う方法に変更、これによりコンパクトモード切り替えがスムーズになりました。

This commit is contained in:
Sakamoto Shiina
2023-09-27 21:44:36 +09:00
parent 5a5d4ad3b8
commit 2270cff006
5 changed files with 24 additions and 24 deletions

View File

@@ -314,7 +314,7 @@ def callbackEnableConfigWindowCompactMode():
model.stopCheckSpeakerEnergy()
view.replaceSpeakerThresholdCheckButton_Passive()
view.reloadConfigWindowSettingBoxContainer()
view.enableConfigWindowCompactMode()
def callbackDisableConfigWindowCompactMode():
config.IS_CONFIG_WINDOW_COMPACT_MODE = False
@@ -323,7 +323,7 @@ def callbackDisableConfigWindowCompactMode():
model.stopCheckSpeakerEnergy()
view.replaceSpeakerThresholdCheckButton_Passive()
view.reloadConfigWindowSettingBoxContainer()
view.disableConfigWindowCompactMode()
# Appearance Tab
def callbackSetTransparency(value):

20
view.py
View File

@@ -121,7 +121,6 @@ class View():
# Config Window
ACTIVE_SETTING_BOX_TAB_ATTR_NAME="side_menu_tab_appearance",
CALLBACK_SELECTED_SETTING_BOX_TAB=None,
IS_CONFIG_WINDOW_COMPACT_MODE=config.IS_CONFIG_WINDOW_COMPACT_MODE,
# Side Menu Labels
VAR_SIDE_MENU_LABEL_APPEARANCE=StringVar(value=i18n.t("config_window.side_menu_labels.appearance")),
@@ -412,6 +411,11 @@ class View():
self.view_variable.CALLBACK_SET_OSC_IP_ADDRESS = config_window_registers.get("callback_set_osc_ip_address", None)
self.view_variable.CALLBACK_SET_OSC_PORT = config_window_registers.get("callback_set_osc_port", None)
# The initial processing after registration.
if config.IS_CONFIG_WINDOW_COMPACT_MODE is True:
self.enableConfigWindowCompactMode()
vrct_gui.config_window.setting_box_compact_mode_switch_box.select()
# Insert sample conversation for testing.
# self._insertSampleConversationToTextbox()
@@ -593,6 +597,15 @@ class View():
vrct_gui.wm_attributes("-alpha", transparency)
def enableConfigWindowCompactMode(self):
for additional_widget in vrct_gui.config_window.additional_widgets:
additional_widget.grid_remove()
def disableConfigWindowCompactMode(self):
for additional_widget in vrct_gui.config_window.additional_widgets:
additional_widget.grid()
def createGUI(self):
vrct_gui.createGUI(settings=self.settings, view_variable=self.view_variable)
@@ -658,11 +671,6 @@ class View():
def reloadConfigWindowSettingBoxContainer(self):
self.view_variable.IS_CONFIG_WINDOW_COMPACT_MODE = config.IS_CONFIG_WINDOW_COMPACT_MODE
vrct_gui.config_window.reloadConfigWindowSettingBoxContainer()
def updateList_MicHost(self, new_mic_host_list:list):
self.view_variable.LIST_MIC_HOST = new_mic_host_list
vrct_gui.config_window.sb__optionmenu_mic_host.configure(values=new_mic_host_list)

View File

@@ -23,16 +23,12 @@ class ConfigWindow(CTkToplevel):
self.settings = settings
self._view_variable = view_variable
# When the configuration window's compact mode is turned on, it will call `grid_remove()` on each widget appended to this array. In the opposite case, `grid()` will be called.
self.additional_widgets = []
createConfigWindowTitle(config_window=self, settings=self.settings)
createSettingBoxTopBar(config_window=self, settings=self.settings, view_variable=self._view_variable)
createSideMenuAndSettingsBoxContainers(config_window=self, settings=self.settings, view_variable=self._view_variable)
def reloadConfigWindowSettingBoxContainer(self):
self.main_bg_container.destroy()
createSideMenuAndSettingsBoxContainers(config_window=self, settings=self.settings, view_variable=self._view_variable)

View File

@@ -60,7 +60,4 @@ def _createSettingBoxCompactModeButton(parent_widget, config_window, settings, v
progress_color=settings.ctm.SB__SWITCH_BOX_ACTIVE_BG_COLOR, # SB__SWITCH_BOX_ACTIVE_BG_COLOR is for SB. change it later.
)
config_window.setting_box_compact_mode_switch_box.select() if view_variable.IS_CONFIG_WINDOW_COMPACT_MODE else config_window.setting_box_compact_mode_switch_box.deselect()
config_window.setting_box_compact_mode_switch_box.grid(row=0, column=0)
config_window.setting_box_compact_mode_switch_box.grid(row=0, column=0)

View File

@@ -53,10 +53,8 @@ class _SettingBoxGenerator():
)
setting_box_label.grid(row=0, column=0, padx=0, pady=0, sticky="ew")
if for_var_desc_text == None or self.view_variable.IS_CONFIG_WINDOW_COMPACT_MODE is True:
pass
else:
self.setting_box_desc = CTkLabel(
if for_var_desc_text is not None:
setting_box_desc = CTkLabel(
setting_box_labels_frame,
textvariable=for_var_desc_text,
anchor="w",
@@ -66,7 +64,8 @@ class _SettingBoxGenerator():
font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.SB__DESC_FONT_SIZE, weight="normal"),
text_color=self.settings.ctm.LABELS_DESC_TEXT_COLOR
)
self.setting_box_desc.grid(row=1, column=0, padx=0, pady=(self.settings.uism.SB__DESC_TOP_PADY,0), sticky="ew")
setting_box_desc.grid(row=1, column=0, padx=0, pady=(self.settings.uism.SB__DESC_TOP_PADY,0), sticky="ew")
self.config_window.additional_widgets.append(setting_box_desc)
def createSettingBoxDropdownMenu(self, for_var_label_text, for_var_desc_text, optionmenu_attr_name, command, variable=None, dropdown_menu_values=None):