mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2026-02-22 23:47:45 +01:00
Add a Toggle Main Window button to the QDB
This commit is contained in:
parent
6b7039f743
commit
85bd351d9b
3 changed files with 62 additions and 34 deletions
|
|
@ -24,6 +24,7 @@ public enum QdbButtons
|
|||
ReapplyAutomation = 0x40,
|
||||
ResetSettings = 0x80,
|
||||
RevertAdvancedCustomization = 0x100,
|
||||
ToggleMainWindow = 0x200,
|
||||
}
|
||||
|
||||
public sealed class DesignQuickBar : Window, IDisposable
|
||||
|
|
@ -45,6 +46,8 @@ public sealed class DesignQuickBar : Window, IDisposable
|
|||
private int _numButtons;
|
||||
private readonly StringBuilder _tooltipBuilder = new(512);
|
||||
|
||||
public event Action? ToggleMainWindow;
|
||||
|
||||
public DesignQuickBar(Configuration.Configuration config, QuickDesignCombo designCombo, StateManager stateManager, IKeyState keyState,
|
||||
ActorObjectManager objects, AutoDesignApplier autoDesignApplier, PenumbraService penumbra)
|
||||
: base("Glamourer Quick Bar", WindowFlags.NoDecoration | WindowFlags.NoDocking)
|
||||
|
|
@ -77,38 +80,41 @@ public sealed class DesignQuickBar : Window, IDisposable
|
|||
public override void PreDraw()
|
||||
{
|
||||
Flags = GetFlags;
|
||||
UpdateWidth();
|
||||
|
||||
_style.Push(ImStyleDouble.WindowPadding, new Vector2(Im.Style.GlobalScale * 4))
|
||||
.Push(ImStyleSingle.WindowBorderThickness, 0);
|
||||
_style.Push(ImGuiColor.WindowBackground, ColorId.QuickDesignBg.Value())
|
||||
.Push(ImGuiColor.Button, ColorId.QuickDesignButton.Value())
|
||||
.Push(ImGuiColor.FrameBackground, ColorId.QuickDesignFrame.Value());
|
||||
|
||||
UpdateWidth();
|
||||
}
|
||||
|
||||
public override void PostDraw()
|
||||
=> _style.Dispose();
|
||||
|
||||
public void DrawAtEnd(float yPos)
|
||||
public void DrawAtEnd(float yPos, bool mainWindow)
|
||||
{
|
||||
var width = UpdateWidth();
|
||||
var numButtons = CalculateButtonCount(mainWindow);
|
||||
var width = CalculateWidth(numButtons, mainWindow);
|
||||
Im.Cursor.Position = new Vector2(Im.ContentRegion.Maximum.X - width, yPos - Im.Style.GlobalScale);
|
||||
Draw();
|
||||
Draw(Im.ContentRegion.Available.X, numButtons, mainWindow);
|
||||
}
|
||||
|
||||
public override void Draw()
|
||||
=> Draw(Im.ContentRegion.Available.X);
|
||||
=> Draw(Im.ContentRegion.Available.X, _numButtons, false);
|
||||
|
||||
private void Draw(float width)
|
||||
private void Draw(float width, int numButtons, bool mainWindow)
|
||||
{
|
||||
using var group = Im.Group();
|
||||
var spacing = Im.Style.ItemInnerSpacing;
|
||||
using var style = ImStyleDouble.ItemSpacing.Push(spacing);
|
||||
var buttonSize = new Vector2(Im.Style.FrameHeight);
|
||||
PrepareButtons();
|
||||
DrawToggleMainWindowButton(buttonSize, mainWindow);
|
||||
if (_config.QdbButtons.HasFlag(QdbButtons.ApplyDesign))
|
||||
{
|
||||
var comboSize = width - _numButtons * (buttonSize.X + spacing.X);
|
||||
var comboSize = width - numButtons * (buttonSize.X + spacing.X);
|
||||
_designCombo.Draw(StringU8.Empty, comboSize);
|
||||
Im.Line.Same();
|
||||
DrawApplyButton(buttonSize);
|
||||
|
|
@ -485,6 +491,16 @@ public sealed class DesignQuickBar : Window, IDisposable
|
|||
}
|
||||
}
|
||||
|
||||
private void DrawToggleMainWindowButton(Vector2 buttonSize, bool mainWindow)
|
||||
{
|
||||
if (mainWindow || !_config.QdbButtons.HasFlag(QdbButtons.ToggleMainWindow))
|
||||
return;
|
||||
|
||||
if (ImEx.Icon.Button(FontAwesomeIcon.TheaterMasks.Icon(), "Toggle Glamourer's main window."u8, ToggleMainWindow is null, buttonSize))
|
||||
ToggleMainWindow?.Invoke();
|
||||
Im.Line.Same();
|
||||
}
|
||||
|
||||
private (bool, ActorIdentifier, ActorData, ActorState?) ResolveTarget(AwesomeIcon icon, Vector2 buttonSize, int available)
|
||||
{
|
||||
var enumerator = _tooltipBuilder.GetChunks();
|
||||
|
|
@ -516,44 +532,51 @@ public sealed class DesignQuickBar : Window, IDisposable
|
|||
return _keyState[key.Hotkey] && key.Modifiers.IsActive();
|
||||
}
|
||||
|
||||
private float UpdateWidth()
|
||||
private int CalculateButtonCount(bool mainWindow)
|
||||
{
|
||||
_numButtons = 0;
|
||||
var numButtons = 0;
|
||||
if (_config.QdbButtons.HasFlag(QdbButtons.RevertAll))
|
||||
++_numButtons;
|
||||
++numButtons;
|
||||
if (_config.EnableAutoDesigns)
|
||||
{
|
||||
if (_config.QdbButtons.HasFlag(QdbButtons.RevertAutomation))
|
||||
++_numButtons;
|
||||
++numButtons;
|
||||
if (_config.QdbButtons.HasFlag(QdbButtons.ReapplyAutomation))
|
||||
++_numButtons;
|
||||
++numButtons;
|
||||
}
|
||||
|
||||
if (_config.QdbButtons.HasFlag(QdbButtons.RevertAdvancedCustomization))
|
||||
++_numButtons;
|
||||
++numButtons;
|
||||
if (_config.QdbButtons.HasFlag(QdbButtons.RevertAdvancedDyes))
|
||||
++_numButtons;
|
||||
++numButtons;
|
||||
if (_config.QdbButtons.HasFlag(QdbButtons.RevertCustomize))
|
||||
++_numButtons;
|
||||
++numButtons;
|
||||
if (_config.QdbButtons.HasFlag(QdbButtons.RevertEquip))
|
||||
++_numButtons;
|
||||
++numButtons;
|
||||
if (_config.UseTemporarySettings && _config.QdbButtons.HasFlag(QdbButtons.ResetSettings))
|
||||
++_numButtons;
|
||||
++numButtons;
|
||||
if (_config.QdbButtons.HasFlag(QdbButtons.ApplyDesign))
|
||||
{
|
||||
++_numButtons;
|
||||
Size = new Vector2((7 + _numButtons) * Im.Style.FrameHeight + _numButtons * Im.Style.ItemInnerSpacing.X,
|
||||
Im.Style.FrameHeight);
|
||||
}
|
||||
else
|
||||
{
|
||||
Size = new Vector2(
|
||||
_numButtons * Im.Style.FrameHeight
|
||||
+ (_numButtons - 1) * Im.Style.ItemInnerSpacing.X
|
||||
+ Im.Style.WindowPadding.X * 2,
|
||||
Im.Style.FrameHeight);
|
||||
}
|
||||
++numButtons;
|
||||
if (!mainWindow && _config.QdbButtons.HasFlag(QdbButtons.ToggleMainWindow))
|
||||
++numButtons;
|
||||
|
||||
return Size.Value.X;
|
||||
return numButtons;
|
||||
}
|
||||
|
||||
private float CalculateWidth(int numButtons, bool mainWindow)
|
||||
{
|
||||
var content = _config.QdbButtons.HasFlag(QdbButtons.ApplyDesign)
|
||||
? (7 + numButtons) * Im.Style.FrameHeight + numButtons * Im.Style.ItemInnerSpacing.X
|
||||
: numButtons * Im.Style.FrameHeight + (numButtons - 1) * Im.Style.ItemInnerSpacing.X;
|
||||
var padding = mainWindow ? 0 : Im.Style.WindowPadding.X * 2;
|
||||
|
||||
return content + padding;
|
||||
}
|
||||
|
||||
private void UpdateWidth()
|
||||
{
|
||||
_numButtons = CalculateButtonCount(false);
|
||||
var width = CalculateWidth(_numButtons, false);
|
||||
Size = new Vector2(width, Im.Style.FrameHeight);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ public sealed class MainWindow : Window, IDisposable
|
|||
IsOpen = _config.OpenWindowAtStart;
|
||||
|
||||
_penumbra.DrawSettingsSection += _mainTabBar.Settings.DrawPenumbraIntegrationSettings;
|
||||
_quickBar.ToggleMainWindow += Toggle;
|
||||
}
|
||||
|
||||
public void OpenSettings()
|
||||
|
|
@ -49,7 +50,10 @@ public sealed class MainWindow : Window, IDisposable
|
|||
}
|
||||
|
||||
public void Dispose()
|
||||
=> _penumbra.DrawSettingsSection -= _mainTabBar.Settings.DrawPenumbraIntegrationSettings;
|
||||
{
|
||||
_penumbra.DrawSettingsSection -= _mainTabBar.Settings.DrawPenumbraIntegrationSettings;
|
||||
_quickBar.ToggleMainWindow -= Toggle;
|
||||
}
|
||||
|
||||
public override void Draw()
|
||||
{
|
||||
|
|
@ -74,7 +78,7 @@ public sealed class MainWindow : Window, IDisposable
|
|||
{
|
||||
_mainTabBar.Draw();
|
||||
if (_config.ShowQuickBarInTabs)
|
||||
_quickBar.DrawAtEnd(yPos);
|
||||
_quickBar.DrawAtEnd(yPos, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -302,6 +302,7 @@ public sealed class SettingsTab(
|
|||
|
||||
private readonly (StringU8, QdbButtons)[] _columns =
|
||||
[
|
||||
(new StringU8("Toggle Main Window"u8), QdbButtons.ToggleMainWindow),
|
||||
(new StringU8("Apply Design"u8), QdbButtons.ApplyDesign),
|
||||
(new StringU8("Revert All"u8), QdbButtons.RevertAll),
|
||||
(new StringU8("Revert to Auto"u8), QdbButtons.RevertAutomation),
|
||||
|
|
@ -325,7 +326,7 @@ public sealed class SettingsTab(
|
|||
private void DrawQuickDesignBoxes()
|
||||
{
|
||||
var showAuto = config.EnableAutoDesigns;
|
||||
var numColumns = 9 - (showAuto ? 0 : 2) - (config.UseTemporarySettings ? 0 : 1);
|
||||
var numColumns = 10 - (showAuto ? 0 : 2) - (config.UseTemporarySettings ? 0 : 1);
|
||||
Im.Line.New();
|
||||
Im.Text("Show the Following Buttons in the Quick Design Bar:"u8);
|
||||
Im.Dummy(Vector2.Zero);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue