1
0
Fork 0

Fix scaling/spacing issues

master v4.0
Liza 2024-03-27 09:30:17 +01:00
parent 238b58d555
commit bc65bfe24c
Signed by: liza
GPG Key ID: 7199F8D727D55F67
2 changed files with 77 additions and 38 deletions

View File

@ -0,0 +1,7 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/UserDictionary/Words/=Allagan/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=gatherbtn/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=gatherfish/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=gathermin/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=relog/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Teamcraft/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@ -31,7 +31,7 @@ internal sealed class ConfigWindow : LWindow
private static readonly Vector4 ColorGreen = ImGuiColors.HealerGreen; private static readonly Vector4 ColorGreen = ImGuiColors.HealerGreen;
private static readonly Vector4 ColorRed = ImGuiColors.DalamudRed; private static readonly Vector4 ColorRed = ImGuiColors.DalamudRed;
private static readonly Vector4 ColorGrey = ImGuiColors.DalamudGrey; private static readonly Vector4 ColorGrey = ImGuiColors.DalamudGrey;
private static readonly string[] StockingTypeLabels = { "Collect Once", "Keep in Stock" }; private static readonly string[] StockingTypeLabels = ["Collect Once", "Keep in Stock"];
private static readonly string[] PriorityLabels = private static readonly string[] PriorityLabels =
{ "Collect in order of the list", "Collect item with lowest inventory first" }; { "Collect in order of the list", "Collect item with lowest inventory first" };
@ -51,6 +51,8 @@ internal sealed class ConfigWindow : LWindow
private readonly Dictionary<Guid, TemporaryConfig> _currentEditPopups = new(); private readonly Dictionary<Guid, TemporaryConfig> _currentEditPopups = new();
private string _searchString = string.Empty; private string _searchString = string.Empty;
private float _mainIndentSize = 1;
private float _mainIconSize = 23;
private TemporaryConfig _newGroup = new() { Name = string.Empty }; private TemporaryConfig _newGroup = new() { Name = string.Empty };
private TemporaryConfig _newList = new() private TemporaryConfig _newList = new()
@ -92,18 +94,26 @@ internal sealed class ConfigWindow : LWindow
{ {
if (ImGui.BeginTabBar("ARConfigTabs")) if (ImGui.BeginTabBar("ARConfigTabs"))
{ {
ImGui.PushFont(UiBuilder.IconFont);
_mainIndentSize = ImGui.CalcTextSize(FontAwesomeIcon.Cog.ToIconString()).X +
ImGui.GetStyle().FramePadding.X * 2f +
ImGui.GetStyle().ItemSpacing.X - ImGui.GetStyle().WindowPadding.X / 2;
ImGui.PopFont();
_mainIconSize = ImGui.CalcTextSize("X").Y + ImGui.GetStyle().FramePadding.Y * 2;
DrawVentureLists(); DrawVentureLists();
DrawCharacterGroups(); DrawCharacterGroups();
DrawCharacters(); DrawCharacters();
DrawGatheredItemsToCheck(); DrawGatheredItemsToCheck();
DrawMiscTab(); DrawMiscTab();
ImGui.EndTabBar(); ImGui.EndTabBar();
} }
} }
private void DrawVentureLists() private void DrawVentureLists()
{ {
if (ImGui.BeginTabItem("Venture Lists")) if (ImGui.BeginTabItem("Venture Lists###TabVentureLists"))
{ {
Configuration.ItemList? listToDelete = null; Configuration.ItemList? listToDelete = null;
IReadOnlySet<uint> itemsToDiscard = _discardHelperIpc.GetItemsToDiscard(); IReadOnlySet<uint> itemsToDiscard = _discardHelperIpc.GetItemsToDiscard();
@ -131,9 +141,9 @@ internal sealed class ConfigWindow : LWindow
if (ImGui.CollapsingHeader(label)) if (ImGui.CollapsingHeader(label))
{ {
ImGui.Indent(30); ImGui.Indent(_mainIndentSize);
DrawVentureListItemSelection(list, itemsToDiscard); DrawVentureListItemSelection(list, itemsToDiscard);
ImGui.Unindent(30); ImGui.Unindent(_mainIndentSize);
} }
ImGui.PopID(); ImGui.PopID();
@ -375,7 +385,6 @@ internal sealed class ConfigWindow : LWindow
Configuration.QueuedItem? itemToRemove = null; Configuration.QueuedItem? itemToRemove = null;
Configuration.QueuedItem? itemToAdd = null; Configuration.QueuedItem? itemToAdd = null;
int indexToAdd = 0; int indexToAdd = 0;
float windowX = ImGui.GetContentRegionAvail().X;
for (int i = 0; i < list.Items.Count; ++i) for (int i = 0; i < list.Items.Count; ++i)
{ {
var item = list.Items[i]; var item = list.Items[i];
@ -399,11 +408,11 @@ internal sealed class ConfigWindow : LWindow
IDalamudTextureWrap? icon = _iconCache.GetIcon(venture.IconId); IDalamudTextureWrap? icon = _iconCache.GetIcon(venture.IconId);
if (icon != null) if (icon != null)
{ {
ImGui.Image(icon.ImGuiHandle, new Vector2(23, 23)); ImGui.Image(icon.ImGuiHandle, new Vector2(_mainIconSize, _mainIconSize));
ImGui.SameLine(0, 3); ImGui.SameLine(0, 3);
} }
ImGui.SetNextItemWidth(130); ImGui.SetNextItemWidth(130 * ImGuiHelpers.GlobalScale);
int quantity = item.RemainingQuantity; int quantity = item.RemainingQuantity;
if (ImGui.InputInt($"{venture.Name} ({string.Join(" ", ventures.Select(x => x.CategoryName))})", if (ImGui.InputInt($"{venture.Name} ({string.Join(" ", ventures.Select(x => x.CategoryName))})",
ref quantity, 100)) ref quantity, 100))
@ -416,7 +425,16 @@ internal sealed class ConfigWindow : LWindow
{ {
bool wrap = _configuration.ConfigUiOptions.WrapAroundWhenReordering; bool wrap = _configuration.ConfigUiOptions.WrapAroundWhenReordering;
ImGui.SameLine(windowX - 31); ImGui.PushFont(UiBuilder.IconFont);
ImGui.SameLine(ImGui.GetContentRegionAvail().X +
_mainIndentSize +
ImGui.GetStyle().WindowPadding.X -
ImGui.CalcTextSize(FontAwesomeIcon.ArrowUp.ToIconString()).X -
ImGui.CalcTextSize(FontAwesomeIcon.ArrowDown.ToIconString()).X -
ImGui.CalcTextSize(FontAwesomeIcon.Times.ToIconString()).X -
ImGui.GetStyle().FramePadding.X * 6 -
ImGui.GetStyle().ItemSpacing.X);
ImGui.PopFont();
ImGui.BeginDisabled(i == 0 && !wrap); ImGui.BeginDisabled(i == 0 && !wrap);
if (ImGuiComponents.IconButton($"##Up{i}", FontAwesomeIcon.ArrowUp)) if (ImGuiComponents.IconButton($"##Up{i}", FontAwesomeIcon.ArrowUp))
{ {
@ -444,7 +462,15 @@ internal sealed class ConfigWindow : LWindow
ImGui.SameLine(); ImGui.SameLine();
} }
else else
ImGui.SameLine(windowX + 19); {
ImGui.PushFont(UiBuilder.IconFont);
ImGui.SameLine(ImGui.GetContentRegionAvail().X +
_mainIndentSize +
ImGui.GetStyle().WindowPadding.X -
ImGui.CalcTextSize(FontAwesomeIcon.Times.ToIconString()).X -
ImGui.GetStyle().FramePadding.X * 2);
ImGui.PopFont();
}
if (ImGuiComponents.IconButton($"##Remove{i}", FontAwesomeIcon.Times)) if (ImGuiComponents.IconButton($"##Remove{i}", FontAwesomeIcon.Times))
itemToRemove = item; itemToRemove = item;
@ -575,7 +601,7 @@ internal sealed class ConfigWindow : LWindow
private void DrawCharacters() private void DrawCharacters()
{ {
if (ImGui.BeginTabItem("Retainers")) if (ImGui.BeginTabItem("Retainers###TabRetainers"))
{ {
foreach (var world in _configuration.Characters foreach (var world in _configuration.Characters
.Where(x => x.Retainers.Any(y => y.Job != 0)) .Where(x => x.Retainers.Any(y => y.Job != 0))
@ -589,7 +615,7 @@ internal sealed class ConfigWindow : LWindow
ImGui.PushID($"Char{character.LocalContentId}"); ImGui.PushID($"Char{character.LocalContentId}");
ImGui.SetNextItemWidth(ImGui.GetFontSize() * 30); ImGui.SetNextItemWidth(ImGui.GetFontSize() * 30);
Vector4 buttonColor = new Vector4(); Vector4 buttonColor = ImGui.ColorConvertU32ToFloat4(ImGui.GetColorU32(ImGuiCol.FrameBg));
if (character is { Type: not Configuration.CharacterType.NotManaged, Retainers.Count: > 0 }) if (character is { Type: not Configuration.CharacterType.NotManaged, Retainers.Count: > 0 })
{ {
if (character.Retainers.All(x => x.Managed)) if (character.Retainers.All(x => x.Managed))
@ -621,7 +647,7 @@ internal sealed class ConfigWindow : LWindow
if (ImGui.CollapsingHeader( if (ImGui.CollapsingHeader(
$"{character.CharacterName} {(character.Type != Configuration.CharacterType.NotManaged ? $"({character.Retainers.Count(x => x.Managed)} / {character.Retainers.Count})" : "")}###{character.LocalContentId}")) $"{character.CharacterName} {(character.Type != Configuration.CharacterType.NotManaged ? $"({character.Retainers.Count(x => x.Managed)} / {character.Retainers.Count})" : "")}###{character.LocalContentId}"))
{ {
ImGui.Indent(30); ImGui.Indent(_mainIndentSize);
List<(Guid Id, string Name)> groups = List<(Guid Id, string Name)> groups =
new List<(Guid Id, string Name)> { (Guid.Empty, "No Group (manually assign lists)") } new List<(Guid Id, string Name)> { (Guid.Empty, "No Group (manually assign lists)") }
@ -657,9 +683,8 @@ internal sealed class ConfigWindow : LWindow
ImGui.Separator(); ImGui.Separator();
if (groupIndex == 0) if (groupIndex == 0)
{ {
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract // ReSharper disable once NullCoalescingConditionIsAlwaysNotNullAccordingToAPIContract
if (character.ItemListIds == null) character.ItemListIds ??= new();
character.ItemListIds = new();
DrawVentureListSelection( DrawVentureListSelection(
character.LocalContentId.ToString(CultureInfo.InvariantCulture), character.LocalContentId.ToString(CultureInfo.InvariantCulture),
character.ItemListIds); character.ItemListIds);
@ -667,7 +692,7 @@ internal sealed class ConfigWindow : LWindow
else else
{ {
ImGui.TextWrapped($"Retainers will participate in the following lists:"); ImGui.TextWrapped($"Retainers will participate in the following lists:");
ImGui.Indent(30); ImGui.Indent(_mainIndentSize);
var group = _configuration.CharacterGroups.Single( var group = _configuration.CharacterGroups.Single(
x => x.Id == groups[groupIndex].Id); x => x.Id == groups[groupIndex].Id);
@ -685,7 +710,7 @@ internal sealed class ConfigWindow : LWindow
else else
ImGui.TextColored(ImGuiColors.DalamudRed, "(None)"); ImGui.TextColored(ImGuiColors.DalamudRed, "(None)");
ImGui.Unindent(30); ImGui.Unindent(_mainIndentSize);
ImGui.Spacing(); ImGui.Spacing();
} }
@ -700,13 +725,13 @@ internal sealed class ConfigWindow : LWindow
{ {
ImGui.BeginDisabled(retainer.Level < MinLevel); ImGui.BeginDisabled(retainer.Level < MinLevel);
bool managed = retainer.Managed && retainer.Level >= MinLevel; bool managed = retainer is { Managed: true, Level: >= MinLevel };
IDalamudTextureWrap? icon = _iconCache.GetIcon(62000 + retainer.Job); IDalamudTextureWrap? icon = _iconCache.GetIcon(62000 + retainer.Job);
if (icon != null) if (icon != null)
{ {
ImGui.Image(icon.ImGuiHandle, new Vector2(23, 23)); ImGui.Image(icon.ImGuiHandle, new Vector2(_mainIconSize, _mainIconSize));
ImGui.SameLine(); ImGui.SameLine(0, 3);
} }
if (ImGui.Checkbox( if (ImGui.Checkbox(
@ -727,7 +752,7 @@ internal sealed class ConfigWindow : LWindow
} }
ImGui.Unindent(30); ImGui.Unindent(_mainIndentSize);
} }
ImGui.PopID(); ImGui.PopID();
@ -740,7 +765,7 @@ internal sealed class ConfigWindow : LWindow
private void DrawCharacterGroups() private void DrawCharacterGroups()
{ {
if (ImGui.BeginTabItem("Groups")) if (ImGui.BeginTabItem("Groups###TabGroups"))
{ {
Configuration.CharacterGroup? groupToDelete = null; Configuration.CharacterGroup? groupToDelete = null;
foreach (var group in _configuration.CharacterGroups) foreach (var group in _configuration.CharacterGroups)
@ -835,7 +860,7 @@ internal sealed class ConfigWindow : LWindow
: $"{assignedCharacters.Count} characters"; : $"{assignedCharacters.Count} characters";
if (ImGui.CollapsingHeader($"{group.Name} ({countLabel})")) if (ImGui.CollapsingHeader($"{group.Name} ({countLabel})"))
{ {
ImGui.Indent(30); ImGui.Indent(_mainIndentSize);
if (ImGui.BeginTabBar("GroupOptions")) if (ImGui.BeginTabBar("GroupOptions"))
{ {
if (ImGui.BeginTabItem("Venture Lists")) if (ImGui.BeginTabItem("Venture Lists"))
@ -847,17 +872,18 @@ internal sealed class ConfigWindow : LWindow
if (ImGui.BeginTabItem("Characters")) if (ImGui.BeginTabItem("Characters"))
{ {
ImGui.Text("Characters in this group:"); ImGui.Text("Characters in this group:");
ImGui.Indent(30); ImGui.Indent(_mainIndentSize);
foreach (var character in assignedCharacters.OrderBy(x => x.WorldName) foreach (var character in assignedCharacters.OrderBy(x => x.WorldName)
.ThenBy(x => x.LocalContentId)) .ThenBy(x => x.LocalContentId))
ImGui.TextUnformatted($"{character.CharacterName} @ {character.WorldName}"); ImGui.TextUnformatted($"{character.CharacterName} @ {character.WorldName}");
ImGui.Unindent(30); ImGui.Unindent(_mainIndentSize);
ImGui.EndTabItem();
} }
ImGui.EndTabBar(); ImGui.EndTabBar();
} }
ImGui.Unindent(30); ImGui.Unindent(_mainIndentSize);
} }
} }
@ -920,7 +946,7 @@ internal sealed class ConfigWindow : LWindow
private void DrawGatheredItemsToCheck() private void DrawGatheredItemsToCheck()
{ {
if (ImGui.BeginTabItem("Locked Items")) if (ImGui.BeginTabItem("Locked Items###TabLockedItems"))
{ {
bool checkPerCharacter = _configuration.ConfigUiOptions.CheckGatheredItemsPerCharacter; bool checkPerCharacter = _configuration.ConfigUiOptions.CheckGatheredItemsPerCharacter;
if (ImGui.Checkbox("Group by character", ref checkPerCharacter)) if (ImGui.Checkbox("Group by character", ref checkPerCharacter))
@ -989,7 +1015,7 @@ internal sealed class ConfigWindow : LWindow
if (expanded) if (expanded)
{ {
ImGui.Indent(30); ImGui.Indent(_mainIndentSize + ImGui.GetStyle().FramePadding.X);
foreach (var item in itemsToCheck.Where(x => foreach (var item in itemsToCheck.Where(x =>
ch.ToCheck(onlyShowMissing).ContainsKey(x.ItemId))) ch.ToCheck(onlyShowMissing).ContainsKey(x.ItemId)))
{ {
@ -1022,7 +1048,7 @@ internal sealed class ConfigWindow : LWindow
} }
} }
ImGui.Unindent(30); ImGui.Unindent(_mainIndentSize + ImGui.GetStyle().FramePadding.X);
} }
} }
} }
@ -1033,7 +1059,7 @@ internal sealed class ConfigWindow : LWindow
{ {
if (ImGui.CollapsingHeader($"{item.GatheredItem.Name}##Gathered{item.GatheredItem.ItemId}")) if (ImGui.CollapsingHeader($"{item.GatheredItem.Name}##Gathered{item.GatheredItem.ItemId}"))
{ {
ImGui.Indent(30); ImGui.Indent(_mainIndentSize + ImGui.GetStyle().FramePadding.X);
foreach (var ch in charactersToCheck) foreach (var ch in charactersToCheck)
{ {
var color = ch.Items[item.ItemId]; var color = ch.Items[item.ItemId];
@ -1059,7 +1085,7 @@ internal sealed class ConfigWindow : LWindow
} }
} }
ImGui.Unindent(30); ImGui.Unindent(_mainIndentSize + ImGui.GetStyle().FramePadding.X);
} }
} }
} }
@ -1087,14 +1113,20 @@ internal sealed class ConfigWindow : LWindow
int? itemToRemove = null; int? itemToRemove = null;
int? itemToAdd = null; int? itemToAdd = null;
int indexToAdd = 0; int indexToAdd = 0;
float windowX = ImGui.GetContentRegionAvail().X;
for (int i = 0; i < selectedLists.Count; ++i) for (int i = 0; i < selectedLists.Count; ++i)
{ {
ImGui.PushID($"##{id}_Item{i}"); ImGui.PushID($"##{id}_Item{i}");
var listId = selectedLists[i]; var listId = selectedLists[i];
var listIndex = itemLists.FindIndex(x => x.Id == listId); var listIndex = itemLists.FindIndex(x => x.Id == listId);
ImGui.SetNextItemWidth(windowX - 76); ImGui.PushFont(UiBuilder.IconFont);
ImGui.SetNextItemWidth(ImGui.GetContentRegionAvail().X -
ImGui.CalcTextSize(FontAwesomeIcon.ArrowUp.ToIconString()).X -
ImGui.CalcTextSize(FontAwesomeIcon.ArrowDown.ToIconString()).X -
ImGui.CalcTextSize(FontAwesomeIcon.Times.ToIconString()).X -
ImGui.GetStyle().FramePadding.X * 6 -
ImGui.GetStyle().ItemSpacing.X * 2);
ImGui.PopFont();
if (ImGui.Combo("", ref listIndex, itemLists.Select(x => x.Name).ToArray(), itemLists.Count)) if (ImGui.Combo("", ref listIndex, itemLists.Select(x => x.Name).ToArray(), itemLists.Count))
{ {
selectedLists[i] = itemLists[listIndex].Id; selectedLists[i] = itemLists[listIndex].Id;
@ -1144,14 +1176,14 @@ internal sealed class ConfigWindow : LWindow
{ {
if (selectedLists.Take(i).Any(x => x == listId)) if (selectedLists.Take(i).Any(x => x == listId))
{ {
ImGui.Indent(30); ImGui.Indent(_mainIndentSize);
ImGui.TextColored(ImGuiColors.DalamudYellow, "This entry is a duplicate and will be ignored."); ImGui.TextColored(ImGuiColors.DalamudYellow, "This entry is a duplicate and will be ignored.");
ImGui.Unindent(30); ImGui.Unindent(_mainIndentSize);
} }
else if (_configuration.ConfigUiOptions.ShowVentureListContents) else if (_configuration.ConfigUiOptions.ShowVentureListContents)
{ {
var list = itemLists[listIndex].List; var list = itemLists[listIndex].List;
ImGui.Indent(30); ImGui.Indent(_mainIndentSize);
ImGui.Text(list.Type == Configuration.ListType.CollectOneTime ImGui.Text(list.Type == Configuration.ListType.CollectOneTime
? "Items on this list will be collected once." ? "Items on this list will be collected once."
: "Items on this list will be kept in stock on each character."); : "Items on this list will be kept in stock on each character.");
@ -1162,7 +1194,7 @@ internal sealed class ConfigWindow : LWindow
ImGui.Text($"{item.RemainingQuantity}x {venture.Name}"); ImGui.Text($"{item.RemainingQuantity}x {venture.Name}");
} }
ImGui.Unindent(30); ImGui.Unindent(_mainIndentSize);
} }
} }
@ -1209,7 +1241,7 @@ internal sealed class ConfigWindow : LWindow
private void DrawMiscTab() private void DrawMiscTab()
{ {
if (ImGui.BeginTabItem("Misc")) if (ImGui.BeginTabItem("Misc###TabMisc"))
{ {
ImGui.Text("Venture Settings"); ImGui.Text("Venture Settings");
ImGui.Spacing(); ImGui.Spacing();