From 2daeb5603a7bf25d28e4531adf1b0b042c2ff8de Mon Sep 17 00:00:00 2001 From: Anna Date: Wed, 17 Mar 2021 13:53:22 -0400 Subject: [PATCH] feat: add button to remove window from layout --- HUD Manager/PluginUi.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/HUD Manager/PluginUi.cs b/HUD Manager/PluginUi.cs index bada306..59258f2 100644 --- a/HUD Manager/PluginUi.cs +++ b/HUD Manager/PluginUi.cs @@ -935,14 +935,16 @@ namespace HUD_Manager { foreach (var window in WindowKindExt.All) { var addon = this.Plugin.Interface.Framework.Gui.GetAddonByName(window, 1); - var flags = addon?.Visible == true ? ImGuiSelectableFlags.None : ImGuiSelectableFlags.Disabled; + var flags = addon?.Visible == true && !layout.Windows.ContainsKey(window) + ? ImGuiSelectableFlags.None + : ImGuiSelectableFlags.Disabled; if (!ImGui.Selectable(window, false, flags)) { continue; } var pos = this.Plugin.GameFunctions.GetAddonPosition(window); - if (pos != null && !layout.Windows.ContainsKey(window)) { + if (pos != null) { layout.Windows.Add(window, new Window(pos)); } } @@ -954,6 +956,8 @@ namespace HUD_Manager { return; } + var toRemove = new HashSet(); + foreach (var entry in layout.Windows) { if (!ImGui.CollapsingHeader($"{entry.Key}##uimanager-window-{entry.Key}")) { continue; @@ -967,6 +971,11 @@ namespace HUD_Manager { this.Plugin.GameFunctions.SetAddonPosition(entry.Key, pos.X, pos.Y); } + ImGui.SameLine(ImGui.GetContentRegionAvail().X - ImGui.GetStyle().ItemSpacing.X * 3); + if (IconButton(FontAwesomeIcon.Trash, $"uimanager-remove-window-{entry.Key}")) { + toRemove.Add(entry.Key); + } + var y = (int) pos.Y; if (ImGui.InputInt($"Y##uimanager-window-{entry.Key}", ref y)) { pos.Y = (short) y; @@ -974,6 +983,10 @@ namespace HUD_Manager { } } + foreach (var remove in toRemove) { + layout.Windows.Remove(remove); + } + ImGui.EndChild(); }