From cb434717e001857187ac02f06982f060f389754c Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Thu, 31 Aug 2023 15:59:07 +0900 Subject: [PATCH 1/3] =?UTF-8?q?add=20UI=20to=20config=5Fwindow=20compact?= =?UTF-8?q?=5Fmode=E5=88=87=E3=82=8A=E6=9B=BF=E3=81=88=E3=82=B9=E3=82=A4?= =?UTF-8?q?=E3=83=83=E3=83=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vrct_gui/config_window/ConfigWindow.py | 7 +-- vrct_gui/config_window/widgets/__init__.py | 2 +- .../createSettingBoxTopBar/__init__.py | 1 + .../_createSettingBoxCompactModeButton.py | 56 +++++++++++++++++++ .../_createSettingBoxTitle.py} | 8 +-- .../createSettingBoxTopBar.py | 15 +++++ 6 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 vrct_gui/config_window/widgets/createSettingBoxTopBar/__init__.py create mode 100644 vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxCompactModeButton.py rename vrct_gui/config_window/widgets/{createSettingBoxTitle.py => createSettingBoxTopBar/_createSettingBoxTitle.py} (78%) create mode 100644 vrct_gui/config_window/widgets/createSettingBoxTopBar/createSettingBoxTopBar.py diff --git a/vrct_gui/config_window/ConfigWindow.py b/vrct_gui/config_window/ConfigWindow.py index 3e95aa62..40f4c3bc 100644 --- a/vrct_gui/config_window/ConfigWindow.py +++ b/vrct_gui/config_window/ConfigWindow.py @@ -1,9 +1,8 @@ -from .widgets import createConfigWindowTitle, createSettingBoxTitle, createSideMenuAndSettingsBoxContainers +from .widgets import createConfigWindowTitle, createSideMenuAndSettingsBoxContainers, createSettingBoxTopBar + from customtkinter import CTkToplevel -from config import config - class ConfigWindow(CTkToplevel): def __init__(self, vrct_gui, settings): super().__init__() @@ -23,7 +22,7 @@ class ConfigWindow(CTkToplevel): createConfigWindowTitle(config_window=self, settings=settings) - createSettingBoxTitle(config_window=self, settings=settings) + createSettingBoxTopBar(config_window=self, settings=settings) createSideMenuAndSettingsBoxContainers(config_window=self, settings=settings) diff --git a/vrct_gui/config_window/widgets/__init__.py b/vrct_gui/config_window/widgets/__init__.py index 08f2304b..e3651955 100644 --- a/vrct_gui/config_window/widgets/__init__.py +++ b/vrct_gui/config_window/widgets/__init__.py @@ -1,4 +1,4 @@ from .createConfigWindowTitle import createConfigWindowTitle -from .createSettingBoxTitle import createSettingBoxTitle +from .createSettingBoxTopBar import createSettingBoxTopBar from .createSideMenuAndSettingsBoxContainers import createSideMenuAndSettingsBoxContainers \ No newline at end of file diff --git a/vrct_gui/config_window/widgets/createSettingBoxTopBar/__init__.py b/vrct_gui/config_window/widgets/createSettingBoxTopBar/__init__.py new file mode 100644 index 00000000..b5be1139 --- /dev/null +++ b/vrct_gui/config_window/widgets/createSettingBoxTopBar/__init__.py @@ -0,0 +1 @@ +from .createSettingBoxTopBar import createSettingBoxTopBar \ No newline at end of file diff --git a/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxCompactModeButton.py b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxCompactModeButton.py new file mode 100644 index 00000000..ce98730a --- /dev/null +++ b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxCompactModeButton.py @@ -0,0 +1,56 @@ +from customtkinter import CTkFont, CTkFrame, CTkLabel, CTkSwitch + +def _createSettingBoxCompactModeButton(parent_widget, config_window, settings): + + 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=1, padx=(0, 20), sticky="nsw") + + + + config_window.setting_box_compact_mode_button_container.grid_rowconfigure((0,2), weight=1) + config_window.setting_box_compact_mode_button_container = CTkFrame(config_window.setting_box_compact_mode_button_container, 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=1, column=0, sticky="nsew") + + + config_window.setting_box_compact_mode_button_container.grid_rowconfigure(0, weight=1) + config_window.setting_box_compact_mode_label = CTkLabel( + config_window.setting_box_compact_mode_button_container, + height=0, + text="Compact Mode", + anchor="w", + font=CTkFont(family=settings.FONT_FAMILY, size=12, weight="normal"), + text_color=settings.ctm.LABELS_TEXT_COLOR + ) + config_window.setting_box_compact_mode_label.grid(row=0, column=0, padx=(0,10)) + + + + + + + + + config_window.setting_box_compact_mode_switch_frame = CTkFrame(config_window.setting_box_compact_mode_button_container, corner_radius=0, width=0, height=0, fg_color=settings.ctm.TOP_BAR_BG_COLOR) + config_window.setting_box_compact_mode_switch_frame.grid(row=0, column=1, padx=0, sticky="e") + + config_window.setting_box_compact_mode_switch_box = CTkSwitch( + config_window.setting_box_compact_mode_switch_frame, + text=None, + height=0, + width=0, + # corner_radius=0, + border_width=0, + switch_width=40, + switch_height=16, + onvalue=True, + offvalue=False, + # command=command, + # fg_color="", + # bg_color="red", + 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 settings.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) + diff --git a/vrct_gui/config_window/widgets/createSettingBoxTitle.py b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py similarity index 78% rename from vrct_gui/config_window/widgets/createSettingBoxTitle.py rename to vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py index 57f5c573..7e7479b7 100644 --- a/vrct_gui/config_window/widgets/createSettingBoxTitle.py +++ b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py @@ -1,10 +1,10 @@ from customtkinter import CTkFont, CTkFrame, CTkLabel -def createSettingBoxTitle(config_window, settings): +def _createSettingBoxTitle(parent_widget, config_window, settings): - config_window.grid_columnconfigure(1, weight=1) - config_window.main_current_active_config_title_container = CTkFrame(config_window, corner_radius=0, fg_color=settings.ctm.TOP_BAR_BG_COLOR, width=0, height=0) - config_window.main_current_active_config_title_container.grid(row=0, column=1, sticky="nsew") + parent_widget.grid_columnconfigure(0, weight=1) + config_window.main_current_active_config_title_container = CTkFrame(parent_widget, corner_radius=0, fg_color=settings.ctm.TOP_BAR_BG_COLOR, width=0, height=0) + config_window.main_current_active_config_title_container.grid(row=0, column=0, sticky="nsew") config_window.main_current_active_config_title_container.grid_rowconfigure(0, weight=1) diff --git a/vrct_gui/config_window/widgets/createSettingBoxTopBar/createSettingBoxTopBar.py b/vrct_gui/config_window/widgets/createSettingBoxTopBar/createSettingBoxTopBar.py new file mode 100644 index 00000000..a42d43f9 --- /dev/null +++ b/vrct_gui/config_window/widgets/createSettingBoxTopBar/createSettingBoxTopBar.py @@ -0,0 +1,15 @@ +from customtkinter import CTkFont, CTkFrame, CTkLabel + +from ._createSettingBoxTitle import _createSettingBoxTitle +from ._createSettingBoxCompactModeButton import _createSettingBoxCompactModeButton + +def createSettingBoxTopBar(config_window, settings): + + config_window.grid_columnconfigure(1, weight=1) + config_window.setting_box_top_bar = CTkFrame(config_window, corner_radius=0, fg_color=settings.ctm.TOP_BAR_BG_COLOR, width=0, height=0) + config_window.setting_box_top_bar.grid(row=0, column=1, sticky="nsew") + + + _createSettingBoxTitle(parent_widget=config_window.setting_box_top_bar, config_window=config_window, settings=settings) + + _createSettingBoxCompactModeButton(parent_widget=config_window.setting_box_top_bar, config_window=config_window, settings=settings) \ No newline at end of file From 08d3f0473897c0f3997d55d508769b750c4724a3 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Thu, 31 Aug 2023 19:13:14 +0900 Subject: [PATCH 2/3] add UI and Feature: Config Window Compact Mode. --- config.py | 14 ++++++++++++++ main.py | 15 +++++++++++++++ view.py | 16 +++++++++++++++- vrct_gui/config_window/ConfigWindow.py | 8 ++++++++ .../_createSettingBoxCompactModeButton.py | 13 ++++++++++++- vrct_gui/vrct_gui.py | 8 ++++---- 6 files changed, 68 insertions(+), 6 deletions(-) diff --git a/config.py b/config.py index e6199231..a66921a4 100644 --- a/config.py +++ b/config.py @@ -442,6 +442,17 @@ class Config: self._SELECTED_TAB_TARGET_LANGUAGES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + # Config Window + @property + def IS_CONFIG_WINDOW_COMPACT_MODE(self): + return self._IS_CONFIG_WINDOW_COMPACT_MODE + + @IS_CONFIG_WINDOW_COMPACT_MODE.setter + def IS_CONFIG_WINDOW_COMPACT_MODE(self, value): + if type(value) is bool: + self._IS_CONFIG_WINDOW_COMPACT_MODE = value + saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + def init_config(self): self._VERSION = "1.3.2" self._PATH_CONFIG = "./config.json" @@ -505,6 +516,9 @@ class Config: "3":"English\n(United States)", } + # Config Window + self._IS_CONFIG_WINDOW_COMPACT_MODE = False + def load_config(self): if os_path.isfile(self.PATH_CONFIG) is not False: with open(self.PATH_CONFIG, 'r') as fp: diff --git a/main.py b/main.py index d1a39236..b6bf26b2 100644 --- a/main.py +++ b/main.py @@ -211,6 +211,16 @@ def callbackToggleForeground(): view.printToTextbox_disableForeground() view.foregroundOff() + +# Config Window +def callbackEnableConfigWindowCompactMode(): + config.IS_CONFIG_WINDOW_COMPACT_MODE = True + view.reloadConfigWindowSettingBoxContainer() + +def callbackDisableConfigWindowCompactMode(): + config.IS_CONFIG_WINDOW_COMPACT_MODE = False + view.reloadConfigWindowSettingBoxContainer() + # create GUI view.createGUI() @@ -257,6 +267,11 @@ view.initializer( # }, entry_message_box_bind_Return=messageBoxPressKeyEnter, entry_message_box_bind_Any_KeyPress=messageBoxPressKeyAny, + + config_window={ + "callback_disable_config_window_compact_mode": callbackEnableConfigWindowCompactMode, + "callback_enable_config_window_compact_mode": callbackDisableConfigWindowCompactMode, + }, ) if __name__ == "__main__": diff --git a/view.py b/view.py index 0f7c2590..905c936f 100644 --- a/view.py +++ b/view.py @@ -8,7 +8,7 @@ class View(): pass - def initializer(self, sidebar_features, language_presets, entry_message_box, entry_message_box_bind_Return, entry_message_box_bind_Any_KeyPress): + def initializer(self, sidebar_features, language_presets, entry_message_box, entry_message_box_bind_Return, entry_message_box_bind_Any_KeyPress, config_window): vrct_gui.CALLBACK_TOGGLE_TRANSLATION = sidebar_features["callback_toggle_translation"] vrct_gui.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = sidebar_features["callback_toggle_transcription_send"] @@ -39,6 +39,14 @@ class View(): entry_message_box.bind("", self._foregroundOnForcefully) + vrct_gui.config_window.CALLBACK_ENABLE_CONFIG_WINDOW_COMPACT_MODE = config_window["callback_disable_config_window_compact_mode"] + vrct_gui.config_window.CALLBACK_DISABLE_CONFIG_WINDOW_COMPACT_MODE = config_window["callback_enable_config_window_compact_mode"] + + + # Config Window + vrct_gui.config_window.settings.IS_CONFIG_WINDOW_COMPACT_MODE = config.IS_CONFIG_WINDOW_COMPACT_MODE + + def setMainWindowAllWidgetsStatusToNormal(self): vrct_gui.changeMainWindowWidgetsStatus("normal", "All") @@ -148,4 +156,10 @@ class View(): def startMainLoop(self): vrct_gui.startMainLoop() + + # Config Window + def reloadConfigWindowSettingBoxContainer(self): + vrct_gui.config_window.settings.IS_CONFIG_WINDOW_COMPACT_MODE = config.IS_CONFIG_WINDOW_COMPACT_MODE + vrct_gui.config_window.reloadConfigWindowSettingBoxContainer() + view = View() \ No newline at end of file diff --git a/vrct_gui/config_window/ConfigWindow.py b/vrct_gui/config_window/ConfigWindow.py index 40f4c3bc..3143fc19 100644 --- a/vrct_gui/config_window/ConfigWindow.py +++ b/vrct_gui/config_window/ConfigWindow.py @@ -17,6 +17,7 @@ class ConfigWindow(CTkToplevel): self.configure(fg_color="#ff7f50") self.protocol("WM_DELETE_WINDOW", vrct_gui.closeConfigWindow) + self.settings = settings @@ -26,3 +27,10 @@ class ConfigWindow(CTkToplevel): createSideMenuAndSettingsBoxContainers(config_window=self, settings=settings) + + + + + def reloadConfigWindowSettingBoxContainer(self): + self.main_bg_container.destroy() + createSideMenuAndSettingsBoxContainers(config_window=self, settings=self.settings) \ No newline at end of file diff --git a/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxCompactModeButton.py b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxCompactModeButton.py index ce98730a..0d9e21ed 100644 --- a/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxCompactModeButton.py +++ b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxCompactModeButton.py @@ -2,6 +2,17 @@ from customtkinter import CTkFont, CTkFrame, CTkLabel, CTkSwitch def _createSettingBoxCompactModeButton(parent_widget, config_window, settings): + def switchConfigWindowCompactMode(): + print(config_window.setting_box_compact_mode_switch_box.get()) + if config_window.setting_box_compact_mode_switch_box.get() is True: + if callable(config_window.CALLBACK_ENABLE_CONFIG_WINDOW_COMPACT_MODE) is True: + config_window.CALLBACK_ENABLE_CONFIG_WINDOW_COMPACT_MODE() + else: + if callable(config_window.CALLBACK_DISABLE_CONFIG_WINDOW_COMPACT_MODE) is True: + config_window.CALLBACK_DISABLE_CONFIG_WINDOW_COMPACT_MODE() + + + 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=1, padx=(0, 20), sticky="nsw") @@ -44,7 +55,7 @@ def _createSettingBoxCompactModeButton(parent_widget, config_window, settings): switch_height=16, onvalue=True, offvalue=False, - # command=command, + command=switchConfigWindowCompactMode, # fg_color="", # bg_color="red", progress_color=settings.ctm.SB__SWITCH_BOX_ACTIVE_BG_COLOR, # SB__SWITCH_BOX_ACTIVE_BG_COLOR is for SB. change it later. diff --git a/vrct_gui/vrct_gui.py b/vrct_gui/vrct_gui.py index dad8a8a6..4f6dbe32 100644 --- a/vrct_gui/vrct_gui.py +++ b/vrct_gui/vrct_gui.py @@ -106,11 +106,11 @@ class VRCT_GUI(CTk): ) def setDefaultActiveLanguagePresetTab(self, tab_no:str): - vrct_gui.current_active_preset_tab = getattr(self, f"sqls__presets_button_{tab_no}") + self.current_active_preset_tab = getattr(self, f"sqls__presets_button_{tab_no}") _setDefaultActiveTab( - active_tab_widget=vrct_gui.current_active_preset_tab, - active_bg_color=vrct_gui.settings.main.ctm.SQLS__PRESETS_TAB_BG_ACTIVE_COLOR, - active_text_color=vrct_gui.settings.main.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR + active_tab_widget=self.current_active_preset_tab, + active_bg_color=self.settings.main.ctm.SQLS__PRESETS_TAB_BG_ACTIVE_COLOR, + active_text_color=self.settings.main.ctm.SQLS__PRESETS_TAB_ACTIVE_TEXT_COLOR ) From c3459c1ffe2828e5ab6dc6292e9348d65668ec34 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Thu, 31 Aug 2023 21:00:30 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[Bugfix]=20Config=20Window=E3=82=92Compact?= =?UTF-8?q?=20mode=E3=81=AB=E3=81=99=E3=82=8B=E3=81=8B=E3=81=A9=E3=81=86?= =?UTF-8?q?=E3=81=8B=E3=81=AE=E8=A8=AD=E5=AE=9A=E3=82=92config.json?= =?UTF-8?q?=E3=81=AB=E4=BF=9D=E5=AD=98=E3=81=97=E3=81=A6=E3=81=84=E3=82=8B?= =?UTF-8?q?=E3=81=AB=E3=82=82=E9=96=A2=E3=82=8F=E3=82=89=E3=81=9A=E3=80=81?= =?UTF-8?q?GUI=E8=B5=B7=E5=8B=95=E6=99=82=E3=81=AB=E5=8F=8D=E6=98=A0?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=E3=81=AE=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view.py | 12 +++++++++--- vrct_gui/vrct_gui.py | 31 +++++++++++++++---------------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/view.py b/view.py index 905c936f..4fd3d85e 100644 --- a/view.py +++ b/view.py @@ -1,3 +1,5 @@ +from types import SimpleNamespace + from customtkinter import StringVar, END as CTK_END from vrct_gui import vrct_gui @@ -5,6 +7,11 @@ from config import config class View(): def __init__(self): + self.settings = SimpleNamespace() + self.settings.config_window = SimpleNamespace() + self.settings.config_window = SimpleNamespace( + is_config_window_compact_mode=config.IS_CONFIG_WINDOW_COMPACT_MODE + ) pass @@ -43,8 +50,7 @@ class View(): vrct_gui.config_window.CALLBACK_DISABLE_CONFIG_WINDOW_COMPACT_MODE = config_window["callback_enable_config_window_compact_mode"] - # Config Window - vrct_gui.config_window.settings.IS_CONFIG_WINDOW_COMPACT_MODE = config.IS_CONFIG_WINDOW_COMPACT_MODE + @@ -151,7 +157,7 @@ class View(): def createGUI(self): - vrct_gui.createGUI() + vrct_gui.createGUI(settings=self.settings) def startMainLoop(self): vrct_gui.startMainLoop() diff --git a/vrct_gui/vrct_gui.py b/vrct_gui/vrct_gui.py index 4f6dbe32..87e0eb9a 100644 --- a/vrct_gui/vrct_gui.py +++ b/vrct_gui/vrct_gui.py @@ -18,6 +18,19 @@ from config import config class VRCT_GUI(CTk): def __init__(self): super().__init__() + self.YOUR_LANGUAGE = "Japanese\n(Japan)" + self.TARGET_LANGUAGE = "English\n(United States)" + + self.CALLBACK_TOGGLE_TRANSLATION = None + self.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = None + self.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE = None + self.CALLBACK_TOGGLE_FOREGROUND = None + self.CALLBACK_SELECTED_TAB_NO_1 = None + self.CALLBACK_SELECTED_TAB_NO_2 = None + self.CALLBACK_SELECTED_TAB_NO_3 = None + + + def createGUI(self, settings): self.settings = SimpleNamespace() theme = get_appearance_mode() if config.APPEARANCE_THEME == "System" else config.APPEARANCE_THEME all_ctm = ColorThemeManager(theme) @@ -40,28 +53,14 @@ class VRCT_GUI(CTk): self.settings.config_window = SimpleNamespace( ctm=all_ctm.config_window, uism=all_uism.config_window, - IS_CONFIG_WINDOW_COMPACT_MODE=False, + IS_CONFIG_WINDOW_COMPACT_MODE=settings.config_window.is_config_window_compact_mode, **common_args ) - - self.YOUR_LANGUAGE = "Japanese\n(Japan)" - self.TARGET_LANGUAGE = "English\n(United States)" - - self.CALLBACK_TOGGLE_TRANSLATION = None - self.CALLBACK_TOGGLE_TRANSCRIPTION_SEND = None - self.CALLBACK_TOGGLE_TRANSCRIPTION_RECEIVE = None - self.CALLBACK_TOGGLE_FOREGROUND = None - self.CALLBACK_SELECTED_TAB_NO_1 = None - self.CALLBACK_SELECTED_TAB_NO_2 = None - self.CALLBACK_SELECTED_TAB_NO_3 = None - + createMainWindowWidgets(vrct_gui=self, settings=self.settings.main) self.config_window = ConfigWindow(vrct_gui=self, settings=self.settings.config_window) # self.information_window = ToplevelWindowInformation(self) - def createGUI(self): - createMainWindowWidgets(vrct_gui=self, settings=self.settings.main) - def startMainLoop(self): self.mainloop()