Merge branch 'view' into develop

This commit is contained in:
Sakamoto Shiina
2024-05-09 07:08:36 +09:00
9 changed files with 242 additions and 50 deletions

View File

@@ -885,6 +885,11 @@ def callbackSetEnableOverlaySmallLog(value):
model.clearOverlayImage()
model.shutdownOverlay()
if config.ENABLE_OVERLAY_SMALL_LOG is True:
view.setStateOverlaySmallLog("enabled")
elif config.ENABLE_OVERLAY_SMALL_LOG is False:
view.setStateOverlaySmallLog("disabled")
def callbackSetOverlaySmallLogSettings(value, set_type:str):
print("callbackSetOverlaySmallLogSettings", value, set_type)
pre_settings = config.OVERLAY_SMALL_LOG_SETTINGS
@@ -934,8 +939,10 @@ def callbackSetEnableVrcMicMuteSync(value):
config.ENABLE_VRC_MIC_MUTE_SYNC = value
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
model.startCheckMuteSelfStatus()
view.setStateVrcMicMuteSync("enabled")
else:
model.stopCheckMuteSelfStatus()
view.setStateVrcMicMuteSync("disabled")
def callbackSetEnableSendMessageToVrc(value):

View File

@@ -18,7 +18,7 @@ main_window:
textbox_tab_system: System
textbox_system_message:
enabled_easter_egg: Whoa! You caught us! There is something...like...easter-egg-ish function has enabled!
enabled_easter_egg: Whoa! You caught us! There is something...like...easter-egg-ish function has enabled! It'll affect to Overlay(VR) for now;).
enabled_translation: Translation feature is turned on.
disabled_translation: Translation feature is turned off.
enabled_voice2chatbox: Transcription from the microphone has started.
@@ -46,6 +46,8 @@ main_window:
opened_web_page_vrct_documents: "Opened VRCT Documents page in your web browser.\nFor any issues, requests, or inquiries, please feel free to contact us through the links at the bottom of the documents page, the \"Contact Form,\" or via X (formerly Twitter)!"
update_available: New version is here!
state_text_enabled: Enabled
state_text_disabled: Disabled
cover_message: The functionality is temporarily disabled until the settings window is closed.
@@ -244,8 +246,8 @@ config_window:
desc: Automatically export the conversation messages as a text file.
vrc_mic_mute_sync:
label: VRChat Mic Mute Sync
desc: VRCT will not send the message to VRChat while VRChat's mic is muted.
label: VRC Mic Mute Sync
desc: "VRCT will not send the message to VRChat while VRChat's mic is muted.\n*There is a bit latency and Push-To-Talk is not supported."
send_message_to_vrc:
label: Send Message To VRChat

View File

@@ -45,6 +45,8 @@ main_window:
opened_web_page_vrct_documents: "お使いのブラウザで、VRCTのドキュメントを開きました。使用方法などはそちらに記載されています。\n不具合、ご要望、その他お問い合わせはドキュメント最下部にあるLinks、「お問合せフォーム」もしくはX (元Twitter) にて気軽にご連絡ください!"
update_available: 新しいバージョンが出ました!
state_text_enabled: 有効
state_text_disabled: 無効
cover_message: 設定画面が閉じられるまで、一時的に機能を停止しています。
@@ -243,8 +245,8 @@ config_window:
desc: テキストファイルとしてログがlogsフォルダ内に保存されます。
vrc_mic_mute_sync:
label: VRChatマイクミュート同期機能
desc: VRChatのマイクがミュートされている間は、メッセージをVRChatに送信しません。
label: VRCマイクミュート同期
desc: "VRChatのマイクがミュートされている間は、メッセージをVRChatに送信しません。\n※若干の遅延はあります。また、Push-To-Talkは非対応です。"
send_message_to_vrc:

45
view.py
View File

@@ -140,10 +140,16 @@ class View():
# Overlay Settings
VAR_OVERLAY_SETTINGS=StringVar(value="Overlay Settings"),
VAR_OVERLAY_SETTINGS=StringVar(value="Overlay (VR)"),
CALLBACK_SET_OPEN_OVERLAY_SETTINGS_WINDOW=self._openVrSettingsWindow,
VAR_TO_DEFAULT_OVERLAY_SETTINGS=StringVar(value=i18n.t("overlay_settings.restore_default_settings")),
CALLBACK_SET_TO_DEFAULT_OVERLAY_SETTINGS=self._toDefaultOverlaySettings,
VAR_OVERLAY_SMALL_LOG_STATE=StringVar(value=""),
CALLBACK_SET_OPEN_VRC_MIC_MUTE_SYNC_SETTINGS_WINDOW=self._openVrcMicMuteSyncSettingsWindow,
VAR_VRC_MIC_MUTE_SYNC_SETTINGS=StringVar(value=i18n.t("config_window.vrc_mic_mute_sync.label")),
VAR_VRC_MIC_MUTE_SYNC_STATE=StringVar(value=""),
VAR_LABEL_OVERLAY_OPACITY=StringVar(value=i18n.t("overlay_settings.opacity")),
@@ -808,6 +814,18 @@ class View():
self.view_variable.VAR_LABEL_BOTH_DIRECTION_SWAP_BUTTON.set(i18n.t("main_window.swap_button_label"))
self.useTranslationFeatureProcess("Disable")
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
self.setStateVrcMicMuteSync("enabled")
elif config.ENABLE_VRC_MIC_MUTE_SYNC is False:
self.setStateVrcMicMuteSync("disabled")
if config.ENABLE_OVERLAY_SMALL_LOG is True:
self.setStateOverlaySmallLog("enabled")
elif config.ENABLE_OVERLAY_SMALL_LOG is False:
self.setStateOverlaySmallLog("disabled")
if config.CHOICE_MIC_HOST == "NoHost":
self.view_variable.VAR_MIC_HOST.set("No Mic Host Detected")
@@ -1281,6 +1299,26 @@ class View():
dropdown_menu_values=translation_dict,
)
def setStateVrcMicMuteSync(self, state:str):
if state == "enabled":
self.view_variable.VAR_VRC_MIC_MUTE_SYNC_STATE.set(i18n.t("main_window.state_text_enabled"))
vrct_gui.vrc_mic_mute_sync_settings_state_label.configure(text_color=self.settings.main.ctm.TOP_BAR_BUTTON_STATE_TEXT_ENABLED_COLOR)
elif state == "disabled":
self.view_variable.VAR_VRC_MIC_MUTE_SYNC_STATE.set(i18n.t("main_window.state_text_disabled"))
vrct_gui.vrc_mic_mute_sync_settings_state_label.configure(text_color=self.settings.main.ctm.TOP_BAR_BUTTON_STATE_TEXT_DISABLED_COLOR)
vrct_gui.config_window.after(200, vrct_gui.config_window.lift)
def setStateOverlaySmallLog(self, state:str):
if state == "enabled":
self.view_variable.VAR_OVERLAY_SMALL_LOG_STATE.set(i18n.t("main_window.state_text_enabled"))
vrct_gui.overlay_settings_state_label.configure(text_color=self.settings.main.ctm.TOP_BAR_BUTTON_STATE_TEXT_ENABLED_COLOR)
elif state == "disabled":
self.view_variable.VAR_OVERLAY_SMALL_LOG_STATE.set(i18n.t("main_window.state_text_disabled"))
vrct_gui.overlay_settings_state_label.configure(text_color=self.settings.main.ctm.TOP_BAR_BUTTON_STATE_TEXT_DISABLED_COLOR)
vrct_gui.config_window.after(200, vrct_gui.config_window.lift)
# Config Window
def enableConfigWindowCompactMode(self):
@@ -1741,7 +1779,10 @@ class View():
vrct_gui._closeConfigWindow()
def _openVrSettingsWindow(self):
vrct_gui.quick_settings_window.show()
vrct_gui.quick_settings_window.show(target="overlay")
def _openVrcMicMuteSyncSettingsWindow(self):
vrct_gui.quick_settings_window.show(target="vrc_mic_mute_sync")
# Window Control (Main Window Cover)
def _openTheCoverOfMainWindow(self):

View File

@@ -48,6 +48,61 @@ def createMainWindowWidgets(vrct_gui, settings, view_variable):
# start from 3
main_topbar_column=3
# VRChat Mic Mute Sync Settings Button
vrct_gui.vrc_mic_mute_sync_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.vrc_mic_mute_sync_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.vrc_mic_mute_sync_settings_container.grid_rowconfigure((0,3), weight=1)
vrct_gui.vrc_mic_mute_sync_settings_label = CTkLabel(
vrct_gui.vrc_mic_mute_sync_settings_container,
textvariable=view_variable.VAR_VRC_MIC_MUTE_SYNC_SETTINGS,
height=0,
corner_radius=0,
font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.QUICK_SETTINGS_BUTTON_FONT_SIZE, weight="normal"),
anchor="e",
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.vrc_mic_mute_sync_settings_label.grid(row=1, column=1, padx=(0,settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX+1), pady=0)
vrct_gui.vrc_mic_mute_sync_settings_state_label = CTkLabel(
vrct_gui.vrc_mic_mute_sync_settings_container,
textvariable=view_variable.VAR_VRC_MIC_MUTE_SYNC_STATE,
height=0,
corner_radius=0,
font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.QUICK_SETTINGS_BUTTON_STATE_FONT_SIZE, weight="normal"),
anchor="e",
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.vrc_mic_mute_sync_settings_state_label.grid(row=2, column=1, padx=(0,settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX+1), pady=0)
bindButtonFunctionAndColor(
target_widgets=[
vrct_gui.vrc_mic_mute_sync_settings_container,
vrct_gui.vrc_mic_mute_sync_settings_label,
vrct_gui.vrc_mic_mute_sync_settings_state_label,
],
enter_color=settings.ctm.TOP_BAR_BUTTON_HOVERED_BG_COLOR,
leave_color=settings.ctm.TOP_BAR_BUTTON_BG_COLOR,
clicked_color=settings.ctm.TOP_BAR_BUTTON_CLICKED_BG_COLOR,
buttonReleasedFunction=lambda e: callFunctionIfCallable(view_variable.CALLBACK_SET_OPEN_VRC_MIC_MUTE_SYNC_SETTINGS_WINDOW),
)
main_topbar_column+=1
# Overlay Settings Button
vrct_gui.overlay_settings_container = CTkFrame(
vrct_gui.main_topbar_container,
@@ -56,27 +111,14 @@ def createMainWindowWidgets(vrct_gui, settings, view_variable):
cursor="hand2",
)
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.overlay_settings_container.grid_rowconfigure((0,2), weight=1)
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_DISABLED, size=settings.uism.UPDATE_AVAILABLE_BUTTON_SIZE)
)
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.overlay_settings_container.grid_rowconfigure((0,3), weight=1)
vrct_gui.overlay_settings_label = CTkLabel(
vrct_gui.overlay_settings_container,
textvariable=view_variable.VAR_OVERLAY_SETTINGS,
height=0,
corner_radius=0,
font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.UPDATE_AVAILABLE_BUTTON_FONT_SIZE, weight="normal"),
font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.QUICK_SETTINGS_BUTTON_FONT_SIZE, weight="normal"),
anchor="e",
text_color=settings.ctm.TOP_BAR_BUTTON_TEXT_COLOR,
# text_color=settings.ctm.UPDATE_AVAILABLE_BUTTON_TEXT_COLOR,
@@ -85,11 +127,24 @@ def createMainWindowWidgets(vrct_gui, settings, view_variable):
vrct_gui.overlay_settings_label.grid(row=1, column=1, padx=(0,settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX+1), pady=0)
vrct_gui.overlay_settings_state_label = CTkLabel(
vrct_gui.overlay_settings_container,
textvariable=view_variable.VAR_OVERLAY_SMALL_LOG_STATE,
height=0,
corner_radius=0,
font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.QUICK_SETTINGS_BUTTON_STATE_FONT_SIZE, weight="normal"),
anchor="e",
text_color=settings.ctm.TOP_BAR_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.overlay_settings_state_label.grid(row=2, column=1, padx=(0,settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX+1), pady=0)
bindButtonFunctionAndColor(
target_widgets=[
vrct_gui.overlay_settings_container,
vrct_gui.overlay_settings_label,
vrct_gui.overlay_settings_icon,
vrct_gui.overlay_settings_state_label,
],
enter_color=settings.ctm.TOP_BAR_BUTTON_HOVERED_BG_COLOR,
leave_color=settings.ctm.TOP_BAR_BUTTON_BG_COLOR,

View File

@@ -20,18 +20,21 @@ class QuickSettingsWindow(CTkToplevel):
BG_HEX_COLOR = "#292a2d"
self.grid_columnconfigure(0, weight=1, minsize=400)
self.grid_rowconfigure(0, weight=1)
self.qsw_background = CTkFrame(self, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR)
self.qsw_background.grid(row=0, column=0, pady=(0,18), sticky="nsew")
self.qsw_background.grid_columnconfigure(0, weight=1)
self.qsw_setting_box = CTkFrame(self.qsw_background, corner_radius=0, fg_color=BG_HEX_COLOR)
self.qsw_setting_box.grid(row=0, column=0, sticky="nsew")
self.qsw_setting_box.grid_columnconfigure(0, weight=1)
self.qsw_background.grid(row=0, column=0, pady=0, sticky="ew")
self.qsw_background.grid_columnconfigure(0, weight=1, minsize=400)
cqsb = _CreateQuickSettingBox(self.qsw_setting_box, vrct_gui, settings, view_variable)
self.qsw_background__overlay = CTkFrame(self.qsw_background, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR)
self.qsw_background__overlay.grid(row=0, column=0, pady=(0,18), sticky="ew")
self.qsw_background__overlay.grid_columnconfigure(0, weight=1)
self.qsw_setting_box__overlay = CTkFrame(self.qsw_background__overlay, corner_radius=0, fg_color=BG_HEX_COLOR)
self.qsw_setting_box__overlay.grid(row=0, column=0, sticky="ew")
self.qsw_setting_box__overlay.grid_columnconfigure(0, weight=1)
cqsb = _CreateQuickSettingBox(self.qsw_setting_box__overlay, vrct_gui, settings, view_variable)
createSettingBoxSlider = cqsb.createSettingBoxSlider
createSettingBoxSwitch = cqsb.createSettingBoxSwitch
@@ -41,20 +44,20 @@ class QuickSettingsWindow(CTkToplevel):
# Overlay General Settings
row=0
def switchCallback(switch_widget):
def overlaySmallLogSwitchCallback(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),
command=lambda: overlaySmallLogSwitchCallback(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):
def overlayOpacitySliderCallback(e):
value = round(e,2)
callFunctionIfCallable(view_variable.CALLBACK_SET_OVERLAY_SETTINGS, value, "opacity")
view_variable.VAR_CURRENT_VALUE_OVERLAY_OPACITY.set(floatToPctStr(value))
@@ -65,14 +68,14 @@ class QuickSettingsWindow(CTkToplevel):
slider_attr_name="qsb__overlay_opacity_slider",
slider_range=view_variable.SLIDER_RANGE_OVERLAY_OPACITY,
slider_number_of_steps=view_variable.NUMBER_OF_STEPS_OVERLAY_OPACITY,
command=sliderCallback,
command=overlayOpacitySliderCallback,
variable=view_variable.VAR_OVERLAY_OPACITY,
)
self.qsb__overlay_opacity.grid(row=row)
row+=1
def sliderCallback(e):
def overlayUiScalingSliderCallback(e):
value = round(e,2)
callFunctionIfCallable(view_variable.CALLBACK_SET_OVERLAY_SETTINGS, value, "ui_scaling")
view_variable.VAR_CURRENT_VALUE_OVERLAY_UI_SCALING.set(floatToPctStr(value))
@@ -83,7 +86,7 @@ class QuickSettingsWindow(CTkToplevel):
slider_attr_name="qsb__overlay_ui_scaling_slider",
slider_range=view_variable.SLIDER_RANGE_OVERLAY_UI_SCALING,
slider_number_of_steps=view_variable.NUMBER_OF_STEPS_OVERLAY_UI_SCALING,
command=sliderCallback,
command=overlayUiScalingSliderCallback,
variable=view_variable.VAR_OVERLAY_UI_SCALING,
)
self.qsb__overlay_ui_scaling.grid(row=row)
@@ -107,7 +110,7 @@ class QuickSettingsWindow(CTkToplevel):
row+=1
def sliderCallback(e):
def overlaySmallLogSettingsXPosSliderCallback(e):
value = round(e,2)
callFunctionIfCallable(view_variable.CALLBACK_SET_OVERLAY_SMALL_LOG_SETTINGS, value, "x_pos")
view_variable.VAR_CURRENT_VALUE_OVERLAY_SMALL_LOG_X_POS.set(str(value))
@@ -118,14 +121,14 @@ class QuickSettingsWindow(CTkToplevel):
slider_attr_name="qsb__overlay_small_log_settings_x_pos_slider",
slider_range=view_variable.SLIDER_RANGE_OVERLAY_SMALL_LOG_X_POS,
slider_number_of_steps=view_variable.NUMBER_OF_STEPS_OVERLAY_SMALL_LOG_X_POS,
command=sliderCallback,
command=overlaySmallLogSettingsXPosSliderCallback,
variable=view_variable.VAR_OVERLAY_SMALL_LOG_X_POS,
)
self.qsb__overlay_small_log_settings_x_pos.grid(row=row)
row+=1
def sliderCallback(e):
def overlaySmallLogSettingsYPosSliderCallback(e):
value = round(e,2)
callFunctionIfCallable(view_variable.CALLBACK_SET_OVERLAY_SMALL_LOG_SETTINGS, value, "y_pos")
view_variable.VAR_CURRENT_VALUE_OVERLAY_SMALL_LOG_Y_POS.set(str(value))
@@ -136,14 +139,14 @@ class QuickSettingsWindow(CTkToplevel):
slider_attr_name="qsb__overlay_small_log_settings_y_pos_slider",
slider_range=view_variable.SLIDER_RANGE_OVERLAY_SMALL_LOG_Y_POS,
slider_number_of_steps=view_variable.NUMBER_OF_STEPS_OVERLAY_SMALL_LOG_Y_POS,
command=sliderCallback,
command=overlaySmallLogSettingsYPosSliderCallback,
variable=view_variable.VAR_OVERLAY_SMALL_LOG_Y_POS,
)
self.qsb__overlay_small_log_settings_y_pos.grid(row=row)
row+=1
def sliderCallback(e):
def overlaySmallLogSettingsDepthSliderCallback(e):
value = round(e,2)
callFunctionIfCallable(view_variable.CALLBACK_SET_OVERLAY_SMALL_LOG_SETTINGS, value, "depth")
view_variable.VAR_CURRENT_VALUE_OVERLAY_SMALL_LOG_DEPTH.set(str(value))
@@ -154,14 +157,14 @@ class QuickSettingsWindow(CTkToplevel):
slider_attr_name="qsb__overlay_small_log_settings_depth_slider",
slider_range=view_variable.SLIDER_RANGE_OVERLAY_SMALL_LOG_DEPTH,
slider_number_of_steps=view_variable.NUMBER_OF_STEPS_OVERLAY_SMALL_LOG_DEPTH,
command=sliderCallback,
command=overlaySmallLogSettingsDepthSliderCallback,
variable=view_variable.VAR_OVERLAY_SMALL_LOG_DEPTH,
)
self.qsb__overlay_small_log_settings_depth.grid(row=row)
row+=1
def sliderCallback(e):
def overlaySmallLogSettingsDisplayDurationSliderCallback(e):
value = int(e)
callFunctionIfCallable(view_variable.CALLBACK_SET_OVERLAY_SMALL_LOG_SETTINGS, value, "display_duration")
view_variable.VAR_CURRENT_VALUE_OVERLAY_SMALL_LOG_DISPLAY_DURATION.set(f"{value} second(s)")
@@ -172,7 +175,7 @@ class QuickSettingsWindow(CTkToplevel):
slider_attr_name="qsb__overlay_small_log_settings_display_duration_slider",
slider_range=view_variable.SLIDER_RANGE_OVERLAY_SMALL_LOG_DISPLAY_DURATION,
slider_number_of_steps=view_variable.NUMBER_OF_STEPS_OVERLAY_SMALL_LOG_DISPLAY_DURATION,
command=sliderCallback,
command=overlaySmallLogSettingsDisplayDurationSliderCallback,
variable=view_variable.VAR_OVERLAY_SMALL_LOG_DISPLAY_DURATION,
)
self.qsb__overlay_small_log_settings_display_duration.grid(row=row)
@@ -180,7 +183,7 @@ class QuickSettingsWindow(CTkToplevel):
row+=1
def sliderCallback(e):
def overlaySmallLogSettingsFadeoutDurationSliderCallback(e):
value = int(e)
callFunctionIfCallable(view_variable.CALLBACK_SET_OVERLAY_SMALL_LOG_SETTINGS, value, "fadeout_duration")
view_variable.VAR_CURRENT_VALUE_OVERLAY_SMALL_LOG_FADEOUT_DURATION.set(f"{value} second(s)")
@@ -191,7 +194,7 @@ class QuickSettingsWindow(CTkToplevel):
slider_attr_name="qsb__overlay_small_log_settings_fadeout_duration_slider",
slider_range=view_variable.SLIDER_RANGE_OVERLAY_SMALL_LOG_FADEOUT_DURATION,
slider_number_of_steps=view_variable.NUMBER_OF_STEPS_OVERLAY_SMALL_LOG_FADEOUT_DURATION,
command=sliderCallback,
command=overlaySmallLogSettingsFadeoutDurationSliderCallback,
variable=view_variable.VAR_OVERLAY_SMALL_LOG_FADEOUT_DURATION,
)
self.qsb__overlay_small_log_settings_fadeout_duration.grid(row=row)
@@ -204,7 +207,7 @@ class QuickSettingsWindow(CTkToplevel):
self.qsw_setting_box_bottom = CTkFrame(self.qsw_background, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR)
self.qsw_setting_box_bottom = CTkFrame(self.qsw_background__overlay, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR)
self.qsw_setting_box_bottom.grid(row=1, column=0, sticky="nsew")
self.qsw_setting_box_bottom.grid_columnconfigure((0,2), weight=1)
@@ -236,9 +239,80 @@ class QuickSettingsWindow(CTkToplevel):
)
restore_default_settings_button.grid(row=0, column=0, pady=self.settings.uism.QSB__RESTORE_DEFAULT_SETTINGS_BUTTON_PADY)
self.qsw_background__overlay.grid_remove()
# VRChat mic mute sync
self.qsw_background__vrc_mic_mute_sync = CTkFrame(self.qsw_background, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR)
self.qsw_background__vrc_mic_mute_sync.grid(row=0, column=0, pady=(0,18), sticky="ew")
self.qsw_background__vrc_mic_mute_sync.grid_columnconfigure(0, weight=1)
self.qsw_setting_box__vrc_mic_mute_sync = CTkFrame(self.qsw_background__vrc_mic_mute_sync, corner_radius=0, fg_color=BG_HEX_COLOR)
self.qsw_setting_box__vrc_mic_mute_sync.grid(row=0, column=0, sticky="ew")
self.qsw_setting_box__vrc_mic_mute_sync.grid_columnconfigure(0, weight=1)
cqsb = _CreateQuickSettingBox(self.qsw_setting_box__vrc_mic_mute_sync, vrct_gui, settings, view_variable)
createSettingBoxSlider = cqsb.createSettingBoxSlider
createSettingBoxSwitch = cqsb.createSettingBoxSwitch
row=0
def enableVrcMicMuteSyncSwitchCallback(switch_widget):
callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_VRC_MIC_MUTE_SYNC, switch_widget.get())
self.qsb__enable_vrc_mic_mute_sync = createSettingBoxSwitch(
for_var_label_text=view_variable.VAR_LABEL_ENABLE_VRC_MIC_MUTE_SYNC,
switch_attr_name="qsb__enable_vrc_mic_mute_sync_switch",
command=lambda: enableVrcMicMuteSyncSwitchCallback(vrct_gui.qsb__enable_vrc_mic_mute_sync_switch),
variable=view_variable.VAR_ENABLE_VRC_MIC_MUTE_SYNC,
)
self.qsb__enable_vrc_mic_mute_sync.grid(row=row)
self.qsw_background__vrc_mic_mute_sync.grid_remove()
def show(self, target:str):
if target == "overlay":
self.qsw_background__vrc_mic_mute_sync.grid_remove()
self.qsw_background__overlay.grid()
elif target == "vrc_mic_mute_sync":
self.qsw_background__overlay.grid_remove()
self.qsw_background__vrc_mic_mute_sync.grid()
def show(self):
self.attributes("-alpha", 0)
self.deiconify()
self.qsw_background.update()
self.geometry("{}x{}".format(self.qsw_background.winfo_width(), self.qsw_background.winfo_height()))
setGeometryToCenterOfScreen(root_widget=self)
fadeInAnimation(self, steps=5, interval=0.02)

View File

@@ -111,6 +111,8 @@ def _darkTheme(base_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,
TOP_BAR_BUTTON_STATE_TEXT_ENABLED_COLOR = base_color.PRIMARY_300_COLOR,
TOP_BAR_BUTTON_STATE_TEXT_DISABLED_COLOR = base_color.DARK_600_COLOR,
UPDATE_AVAILABLE_BUTTON_BG_COLOR = base_color.DARK_888_COLOR,
UPDATE_AVAILABLE_BUTTON_HOVERED_BG_COLOR = base_color.DARK_850_COLOR,

View File

@@ -111,6 +111,8 @@ def _lightTheme(base_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,
TOP_BAR_BUTTON_STATE_TEXT_ENABLED_COLOR = base_color.PRIMARY_400_COLOR,
TOP_BAR_BUTTON_STATE_TEXT_DISABLED_COLOR = base_color.LIGHT_600_COLOR,
UPDATE_AVAILABLE_BUTTON_TEXT_COLOR = base_color.PRIMARY_400_COLOR,
),

View File

@@ -123,6 +123,13 @@ class UiScalingManager():
self.main.TOP_BAR_BUTTON_PADY = (self._calculateUiSize(6),0)
self.main.QUICK_SETTINGS_BUTTON_FONT_SIZE = self._calculateUiSize(12)
self.main.QUICK_SETTINGS_BUTTON_STATE_FONT_SIZE = self._calculateUiSize(10)
self.main.UPDATE_AVAILABLE_BUTTON_CORNER_RADIUS = self._calculateUiSize(6)
self.main.UPDATE_AVAILABLE_BUTTON_SIZE = (self._calculateUiSize(18), self._calculateUiSize(18))
self.main.UPDATE_AVAILABLE_BUTTON_FONT_SIZE = self._calculateUiSize(12)