From c330859abc9b235f65332d662da0ab1390fd205c Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Sun, 19 Jun 2022 11:42:38 +0200 Subject: [PATCH] Add customizable hotkeys for mod deletion. --- OtterGui | 2 +- Penumbra/Configuration.cs | 2 ++ Penumbra/UI/Classes/ModFileSystemSelector.cs | 5 +++-- Penumbra/UI/ConfigWindow.SettingsTab.General.cs | 10 ++++++++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/OtterGui b/OtterGui index 729f12c5..6ce8ca81 160000 --- a/OtterGui +++ b/OtterGui @@ -1 +1 @@ -Subproject commit 729f12c5560536fe77f2a09f3b76c1c3c4cdb1ff +Subproject commit 6ce8ca816678e7a363f9f4a6f43f009f8d79c070 diff --git a/Penumbra/Configuration.cs b/Penumbra/Configuration.cs index dfa22fd2..3d38a069 100644 --- a/Penumbra/Configuration.cs +++ b/Penumbra/Configuration.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using Dalamud.Configuration; using Dalamud.Logging; +using OtterGui.Classes; using OtterGui.Filesystem; using Penumbra.Import; using Penumbra.UI.Classes; @@ -46,6 +47,7 @@ public partial class Configuration : IPluginConfiguration public int ModSelectorScaledSize { get; set; } = Constants.DefaultScaledSize; public bool OpenFoldersByDefault { get; set; } = false; public string DefaultImportFolder { get; set; } = string.Empty; + public DoubleModifier DeleteModModifier { get; set; } = new(ModifierHotkey.Control, ModifierHotkey.Shift); public bool FixMainWindow { get; set; } = false; public bool ShowAdvanced { get; set; } diff --git a/Penumbra/UI/Classes/ModFileSystemSelector.cs b/Penumbra/UI/Classes/ModFileSystemSelector.cs index 51490733..a062ff89 100644 --- a/Penumbra/UI/Classes/ModFileSystemSelector.cs +++ b/Penumbra/UI/Classes/ModFileSystemSelector.cs @@ -14,6 +14,7 @@ using System.Collections.Concurrent; using System.IO; using System.Linq; using System.Numerics; +using OtterGui.Classes; namespace Penumbra.UI.Classes; @@ -286,14 +287,14 @@ public sealed partial class ModFileSystemSelector : FileSystemSelector< Mod, Mod private void DeleteModButton( Vector2 size ) { - var keys = ImGui.GetIO().KeyCtrl && ImGui.GetIO().KeyShift; + var keys = Penumbra.Config.DeleteModModifier.IsActive(); var tt = SelectedLeaf == null ? "No mod selected." : "Delete the currently selected mod entirely from your drive.\n" + "This can not be undone."; if( !keys ) { - tt += "\nHold Control and Shift while clicking to delete the mod."; + tt += $"\nHold {Penumbra.Config.DeleteModModifier} while clicking to delete the mod."; } if( ImGuiUtil.DrawDisabledButton( FontAwesomeIcon.Trash.ToIconString(), size, tt, SelectedLeaf == null || !keys, true ) diff --git a/Penumbra/UI/ConfigWindow.SettingsTab.General.cs b/Penumbra/UI/ConfigWindow.SettingsTab.General.cs index b545b1eb..22319bfc 100644 --- a/Penumbra/UI/ConfigWindow.SettingsTab.General.cs +++ b/Penumbra/UI/ConfigWindow.SettingsTab.General.cs @@ -6,6 +6,7 @@ using ImGuiNET; using OtterGui; using OtterGui.Filesystem; using OtterGui.Raii; +using OtterGui.Widgets; namespace Penumbra.UI; @@ -89,6 +90,15 @@ public partial class ConfigWindow Penumbra.Config.OpenFoldersByDefault = v; _window._selector.SetFilterDirty(); } ); + + Widget.DoubleModifierSelector( "Mod Deletion Modifier", + "A modifier you need to hold while clicking the Delete Mod button for it to take effect.", _window._inputTextWidth.X, + Penumbra.Config.DeleteModModifier, + v => + { + Penumbra.Config.DeleteModModifier = v; + Penumbra.Config.Save(); + } ); ImGui.Dummy( _window._defaultSpace ); Checkbox( "Always Open Import at Default Directory", "Open the import window at the location specified here every time, forgetting your previous path.",