From 46f8818cee7cae30c5ac2d444290b389c85350a9 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Fri, 4 Apr 2025 22:35:42 +0200 Subject: [PATCH] Add Incognito Modifier. --- Glamourer/Configuration.cs | 1 + Glamourer/Gui/Tabs/ActorTab/ActorPanel.cs | 2 +- Glamourer/Gui/Tabs/AutomationTab/SetPanel.cs | 2 +- Glamourer/Gui/Tabs/DesignTab/DesignPanel.cs | 2 +- .../Gui/Tabs/DesignTab/MultiDesignPanel.cs | 2 +- Glamourer/Gui/Tabs/HeaderDrawer.cs | 28 ++++++++++++++----- Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs | 4 +++ 7 files changed, 30 insertions(+), 11 deletions(-) diff --git a/Glamourer/Configuration.cs b/Glamourer/Configuration.cs index ef51544..b1b9ec2 100644 --- a/Glamourer/Configuration.cs +++ b/Glamourer/Configuration.cs @@ -75,6 +75,7 @@ public class Configuration : IPluginConfiguration, ISavable public RenameField ShowRename { get; set; } = RenameField.BothDataPrio; public ModifiableHotkey ToggleQuickDesignBar { get; set; } = new(VirtualKey.NO_KEY); public DoubleModifier DeleteDesignModifier { get; set; } = new(ModifierHotkey.Control, ModifierHotkey.Shift); + public DoubleModifier IncognitoModifier { get; set; } = new(ModifierHotkey.Control); public ChangeLogDisplayType ChangeLogDisplayType { get; set; } = ChangeLogDisplayType.New; public QdbButtons QdbButtons { get; set; } = diff --git a/Glamourer/Gui/Tabs/ActorTab/ActorPanel.cs b/Glamourer/Gui/Tabs/ActorTab/ActorPanel.cs index 0071b1f..0381a17 100644 --- a/Glamourer/Gui/Tabs/ActorTab/ActorPanel.cs +++ b/Glamourer/Gui/Tabs/ActorTab/ActorPanel.cs @@ -87,7 +87,7 @@ public class ActorPanel _rightButtons = [ new LockedButton(this), - new HeaderDrawer.IncognitoButton(_config.Ephemeral), + new HeaderDrawer.IncognitoButton(_config), ]; } diff --git a/Glamourer/Gui/Tabs/AutomationTab/SetPanel.cs b/Glamourer/Gui/Tabs/AutomationTab/SetPanel.cs index 94329e5..badeaeb 100644 --- a/Glamourer/Gui/Tabs/AutomationTab/SetPanel.cs +++ b/Glamourer/Gui/Tabs/AutomationTab/SetPanel.cs @@ -31,7 +31,7 @@ public class SetPanel( RandomRestrictionDrawer _randomDrawer) { private readonly JobGroupCombo _jobGroupCombo = new(_manager, _jobs, Glamourer.Log); - private readonly HeaderDrawer.Button[] _rightButtons = [new HeaderDrawer.IncognitoButton(_config.Ephemeral)]; + private readonly HeaderDrawer.Button[] _rightButtons = [new HeaderDrawer.IncognitoButton(_config)]; private string? _tempName; private int _dragIndex = -1; diff --git a/Glamourer/Gui/Tabs/DesignTab/DesignPanel.cs b/Glamourer/Gui/Tabs/DesignTab/DesignPanel.cs index 04e51ce..3543b68 100644 --- a/Glamourer/Gui/Tabs/DesignTab/DesignPanel.cs +++ b/Glamourer/Gui/Tabs/DesignTab/DesignPanel.cs @@ -89,7 +89,7 @@ public class DesignPanel _rightButtons = [ new LockButton(this), - new IncognitoButton(_config.Ephemeral), + new IncognitoButton(_config), ]; } diff --git a/Glamourer/Gui/Tabs/DesignTab/MultiDesignPanel.cs b/Glamourer/Gui/Tabs/DesignTab/MultiDesignPanel.cs index 2235160..2a5b3e1 100644 --- a/Glamourer/Gui/Tabs/DesignTab/MultiDesignPanel.cs +++ b/Glamourer/Gui/Tabs/DesignTab/MultiDesignPanel.cs @@ -13,7 +13,7 @@ namespace Glamourer.Gui.Tabs.DesignTab; public class MultiDesignPanel(DesignFileSystemSelector selector, DesignManager editor, DesignColors colors, Configuration config) { private readonly Button[] _leftButtons = []; - private readonly Button[] _rightButtons = [new IncognitoButton(config.Ephemeral)]; + private readonly Button[] _rightButtons = [new IncognitoButton(config)]; private readonly DesignColorCombo _colorCombo = new(colors, true); diff --git a/Glamourer/Gui/Tabs/HeaderDrawer.cs b/Glamourer/Gui/Tabs/HeaderDrawer.cs index 0e9237d..d6baeb9 100644 --- a/Glamourer/Gui/Tabs/HeaderDrawer.cs +++ b/Glamourer/Gui/Tabs/HeaderDrawer.cs @@ -44,22 +44,36 @@ public static class HeaderDrawer } } - public sealed class IncognitoButton(EphemeralConfig config) : Button + public sealed class IncognitoButton(Configuration config) : Button { protected override string Description - => config.IncognitoMode - ? "Toggle incognito mode off." - : "Toggle incognito mode on."; + { + get + { + var hold = config.IncognitoModifier.IsActive(); + return (config.Ephemeral.IncognitoMode, hold) + switch + { + (true, true) => "Toggle incognito mode off.", + (false, true) => "Toggle incognito mode on.", + (true, false) => $"Toggle incognito mode off.\n\nHold {config.IncognitoModifier} while clicking to toggle.", + (false, false) => $"Toggle incognito mode on.\n\nHold {config.IncognitoModifier} while clicking to toggle.", + }; + } + } protected override FontAwesomeIcon Icon - => config.IncognitoMode + => config.Ephemeral.IncognitoMode ? FontAwesomeIcon.EyeSlash : FontAwesomeIcon.Eye; protected override void OnClick() { - config.IncognitoMode = !config.IncognitoMode; - config.Save(); + if (!config.IncognitoModifier.IsActive()) + return; + + config.Ephemeral.IncognitoMode = !config.Ephemeral.IncognitoMode; + config.Ephemeral.Save(); } } diff --git a/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs b/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs index d6d2c15..11af9b9 100644 --- a/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs +++ b/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs @@ -188,6 +188,10 @@ public class SettingsTab( "A modifier you need to hold while clicking the Delete Design button for it to take effect.", 100 * ImGuiHelpers.GlobalScale, config.DeleteDesignModifier, v => config.DeleteDesignModifier = v)) config.Save(); + if (Widget.DoubleModifierSelector("Incognito Modifier", + "A modifier you need to hold while clicking the Incognito button for it to take effect.", 100 * ImGuiHelpers.GlobalScale, + config.IncognitoModifier, v => config.IncognitoModifier = v)) + config.Save(); DrawRenameSettings(); Checkbox("Auto-Open Design Folders"u8, "Have design folders open or closed as their default state after launching."u8, config.OpenFoldersByDefault,