mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 10:17:22 +01:00
Replace all occurences of ImGuiCol.
This commit is contained in:
parent
a4302c9145
commit
74d35870e2
46 changed files with 1586 additions and 1475 deletions
2
Luna
2
Luna
|
|
@ -1 +1 @@
|
|||
Subproject commit 1ffa8c5de118f94b609f7d6352e3b63de463398c
|
||||
Subproject commit ec5cc05211c5083f276e32816d8c3eb8c09d04b4
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 3a9406bc634228cc0815ddb6fe5e20419cafb864
|
||||
Subproject commit 182cca56a49411430233d73d7a8a6bb3d983f8f0
|
||||
|
|
@ -54,8 +54,8 @@ public static class FeatureChecker
|
|||
const int numButtons = 5;
|
||||
var innerSpacing = ImGui.GetStyle().ItemInnerSpacing;
|
||||
var size = new Vector2((width - (numButtons - 1) * innerSpacing.X) / numButtons, 0);
|
||||
var buttonColor = ImGui.GetColorU32(ImGuiCol.FrameBg);
|
||||
var textColor = ImGui.GetColorU32(ImGuiCol.TextDisabled);
|
||||
var buttonColor = Im.Style[ImGuiColor.FrameBackground];
|
||||
var textColor = Im.Style[ImGuiColor.TextDisabled];
|
||||
using (var style = ImStyleBorder.Frame.Push(ColorId.FolderLine.Value(), 0)
|
||||
.Push(ImStyleDouble.ItemSpacing, innerSpacing)
|
||||
.Push(ImGuiColor.Button, buttonColor)
|
||||
|
|
|
|||
|
|
@ -7,6 +7,103 @@ using FileSystemChangeType = OtterGui.Filesystem.FileSystemChangeType;
|
|||
|
||||
namespace Penumbra.Mods.Manager;
|
||||
|
||||
//public sealed class ModFileSystem2 : BaseFileSystem
|
||||
//{
|
||||
// private readonly Configuration _config;
|
||||
// private readonly SaveService _saveService;
|
||||
// public ModFileSystem2(FileSystemChanged @event, DataNodePathChange dataChangeEvent, Configuration config, SaveService saveService, IComparer<ReadOnlySpan<char>>? comparer = null)
|
||||
// : base(@event, dataChangeEvent, comparer)
|
||||
// {
|
||||
// _config = config;
|
||||
// _saveService = saveService;
|
||||
// }
|
||||
//
|
||||
// public void Dispose()
|
||||
// {
|
||||
// _communicator.ModPathChanged.Unsubscribe(OnModPathChange);
|
||||
// _communicator.ModDiscoveryFinished.Unsubscribe(Reload);
|
||||
// _communicator.ModDataChanged.Unsubscribe(OnModDataChange);
|
||||
// }
|
||||
//
|
||||
// // Save the filesystem on every filesystem change except full reloading.
|
||||
// private void OnChange(FileSystemChangeType type, IPath _1, IPath? _2, IPath? _3)
|
||||
// {
|
||||
// if (type != FileSystemChangeType.Reload)
|
||||
// _saveService.DelaySave(this);
|
||||
// }
|
||||
//
|
||||
// // Update sort order when defaulted mod names change.
|
||||
// private void OnModDataChange(in ModDataChanged.Arguments arguments)
|
||||
// {
|
||||
// if (!arguments.Type.HasFlag(ModDataChangeType.Name) || arguments.OldName == null || !TryGetValue(arguments.Mod, out var leaf))
|
||||
// return;
|
||||
//
|
||||
// var old = Extensions.FixName(arguments.OldName);
|
||||
// if (old == leaf.Name || Extensions.IsDuplicateName(leaf.Name, out var baseName, out _) && baseName == old)
|
||||
// RenameWithDuplicates(leaf, arguments.Mod.Name);
|
||||
// }
|
||||
//
|
||||
// // Update the filesystem if a mod has been added or removed.
|
||||
// // Save it, if the mod directory has been moved, since this will change the save format.
|
||||
// private void OnModPathChange(in ModPathChanged.Arguments arguments)
|
||||
// {
|
||||
// switch (arguments.Type)
|
||||
// {
|
||||
// case ModPathChangeType.Added:
|
||||
// var parent = Root;
|
||||
// if (_config.DefaultImportFolder.Length != 0)
|
||||
// try
|
||||
// {
|
||||
// parent = FindOrCreateAllFolders(_config.DefaultImportFolder);
|
||||
// }
|
||||
// catch (Exception e)
|
||||
// {
|
||||
// Penumbra.Messager.NotificationMessage(e,
|
||||
// $"Could not move newly imported mod {arguments.Mod.Name} to default import folder {_config.DefaultImportFolder}.",
|
||||
// NotificationType.Warning);
|
||||
// }
|
||||
//
|
||||
// CreateDuplicateLeaf(parent, arguments.Mod.Name, arguments.Mod);
|
||||
// break;
|
||||
// case ModPathChangeType.Deleted:
|
||||
// if (arguments.Mod.Node is not null)
|
||||
// Delete(arguments.Mod.Node);
|
||||
// break;
|
||||
// case ModPathChangeType.Moved:
|
||||
// _saveService.DelaySave(this);
|
||||
// break;
|
||||
// case ModPathChangeType.Reloaded:
|
||||
// // Nothing
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// public struct ImportDate : ISortMode
|
||||
// {
|
||||
// public ReadOnlySpan<byte> Name
|
||||
// => "Import Date (Older First)"u8;
|
||||
//
|
||||
// public ReadOnlySpan<byte> Description
|
||||
// => "In each folder, sort all subfolders lexicographically, then sort all leaves using their import date."u8;
|
||||
//
|
||||
// public IEnumerable<IFileSystemNode> GetChildren(IFileSystemFolder f)
|
||||
// => f.GetSubFolders().Cast<IFileSystemNode>().Concat(f.GetLeaves().OfType<IFileSystemData<Mod>>().OrderBy(l => l.Value.ImportDate));
|
||||
// }
|
||||
//
|
||||
// public struct InverseImportDate : ISortMode
|
||||
// {
|
||||
// public ReadOnlySpan<byte> Name
|
||||
// => "Import Date (Newer First)"u8;
|
||||
//
|
||||
// public ReadOnlySpan<byte> Description
|
||||
// => "In each folder, sort all subfolders lexicographically, then sort all leaves using their inverse import date."u8;
|
||||
//
|
||||
// public IEnumerable<IFileSystemNode> GetChildren(IFileSystemFolder f)
|
||||
// => f.GetSubFolders().Cast<IFileSystemNode>().Concat(f.GetLeaves().OfType<IFileSystemData<Mod>>().OrderByDescending(l => l.Value.ImportDate));
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
||||
public sealed class ModFileSystem : FileSystem<Mod>, IDisposable, ISavable, IService
|
||||
{
|
||||
private readonly ModManager _modManager;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ public enum FeatureFlags : ulong
|
|||
Invalid = 1ul << 62,
|
||||
}
|
||||
|
||||
public sealed class Mod : IMod
|
||||
public sealed class Mod : IMod, IFileSystemValue<Mod>
|
||||
{
|
||||
public static readonly TemporaryMod ForcedFiles = new()
|
||||
{
|
||||
|
|
@ -69,6 +69,7 @@ public sealed class Mod : IMod
|
|||
|
||||
|
||||
// Local Data
|
||||
public string FullPath { get; set; } = string.Empty;
|
||||
public long ImportDate { get; internal set; } = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds();
|
||||
public IReadOnlyList<string> LocalTags { get; internal set; } = [];
|
||||
public string Note { get; internal set; } = string.Empty;
|
||||
|
|
@ -130,14 +131,15 @@ public sealed class Mod : IMod
|
|||
}
|
||||
|
||||
// Cache
|
||||
public IFileSystemData<Mod>? Node { get; set; }
|
||||
public readonly SortedList<string, IIdentifiedObjectData> ChangedItems = new();
|
||||
|
||||
public string LowerChangedItemsString { get; internal set; } = string.Empty;
|
||||
public string AllTagsLower { get; internal set; } = string.Empty;
|
||||
|
||||
public int TotalFileCount { get; internal set; }
|
||||
public int TotalSwapCount { get; internal set; }
|
||||
public int TotalManipulations { get; internal set; }
|
||||
public ushort LastChangedItemsUpdate { get; internal set; }
|
||||
public bool HasOptions { get; internal set; }
|
||||
public int TotalFileCount { get; internal set; }
|
||||
public int TotalSwapCount { get; internal set; }
|
||||
public int TotalManipulations { get; internal set; }
|
||||
public ushort LastChangedItemsUpdate { get; internal set; }
|
||||
public bool HasOptions { get; internal set; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using Luna;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Penumbra.GameData.Structs;
|
||||
|
|
@ -24,6 +25,13 @@ public readonly struct ModLocalData(Mod mod) : ISavable
|
|||
{ nameof(Mod.Favorite), JToken.FromObject(mod.Favorite) },
|
||||
{ nameof(Mod.PreferredChangedItems), JToken.FromObject(mod.PreferredChangedItems) },
|
||||
};
|
||||
|
||||
if (mod.FullPath.Length > 0)
|
||||
{
|
||||
var baseName = mod.FullPath.GetBaseName(mod.Name, out var folder);
|
||||
jObject[nameof(Mod.FullPath)] = folder.Length > 0 ? $"{folder}/{baseName}" : baseName.ToString();
|
||||
}
|
||||
|
||||
using var jWriter = new JsonTextWriter(writer);
|
||||
jWriter.Formatting = Formatting.Indented;
|
||||
jObject.WriteTo(jWriter);
|
||||
|
|
@ -47,21 +55,21 @@ public readonly struct ModLocalData(Mod mod) : ISavable
|
|||
var text = File.ReadAllText(dataFile);
|
||||
var json = JObject.Parse(text);
|
||||
|
||||
importDate = json[nameof(Mod.ImportDate)]?.Value<long>() ?? importDate;
|
||||
favorite = json[nameof(Mod.Favorite)]?.Value<bool>() ?? favorite;
|
||||
note = json[nameof(Mod.Note)]?.Value<string>() ?? note;
|
||||
localTags = (json[nameof(Mod.LocalTags)] as JArray)?.Values<string>().OfType<string>() ?? localTags;
|
||||
preferredChangedItems = (json[nameof(Mod.PreferredChangedItems)] as JArray)?.Values<ulong>().Select(i => (CustomItemId) i).ToHashSet() ?? mod.DefaultPreferredItems;
|
||||
save = false;
|
||||
importDate = json[nameof(Mod.ImportDate)]?.Value<long>() ?? importDate;
|
||||
favorite = json[nameof(Mod.Favorite)]?.Value<bool>() ?? favorite;
|
||||
note = json[nameof(Mod.Note)]?.Value<string>() ?? note;
|
||||
localTags = (json[nameof(Mod.LocalTags)] as JArray)?.Values<string>().OfType<string>() ?? localTags;
|
||||
preferredChangedItems =
|
||||
(json[nameof(Mod.PreferredChangedItems)] as JArray)?.Values<ulong>().Select(i => (CustomItemId)i).ToHashSet()
|
||||
?? mod.DefaultPreferredItems;
|
||||
save = false;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Penumbra.Log.Error($"Could not load local mod data:\n{e}");
|
||||
}
|
||||
else
|
||||
{
|
||||
preferredChangedItems = mod.DefaultPreferredItems;
|
||||
}
|
||||
|
||||
if (importDate == 0)
|
||||
importDate = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ public static class StaticServiceManager
|
|||
{
|
||||
public static ServiceManager CreateProvider(Penumbra penumbra, IDalamudPluginInterface pi, Logger log)
|
||||
{
|
||||
var services = new ServiceManager(log)
|
||||
var services = new ServiceManager(log, Logger.GlobalPluginName)
|
||||
.AddDalamudServices(pi)
|
||||
.AddExistingService(log)
|
||||
.AddExistingService(penumbra);
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ public partial class MtrlTab
|
|||
for (var j = 0; j < 8; ++j)
|
||||
{
|
||||
var pairIndex = i + j;
|
||||
using (ImRaii.PushColor(ImGuiCol.Button, ImGui.GetColorU32(ImGuiCol.ButtonActive), pairIndex == _colorTableSelectedPair))
|
||||
using (ImGuiColor.Button.Push(Im.Style[ImGuiColor.ButtonActive], pairIndex == _colorTableSelectedPair))
|
||||
{
|
||||
if (ImUtf8.Button($"#{pairIndex + 1}".PadLeft(3 + spacePadding),
|
||||
new Vector2(buttonWidth, ImGui.GetFrameHeightWithSpacing() + frameHeight)))
|
||||
|
|
@ -101,6 +101,7 @@ public partial class MtrlTab
|
|||
{
|
||||
retA |= DrawRowHeader(rowAIdx, disabled);
|
||||
}
|
||||
|
||||
columns.Next();
|
||||
using (ImUtf8.PushId("RowHeaderB"u8))
|
||||
{
|
||||
|
|
@ -232,8 +233,8 @@ public partial class MtrlTab
|
|||
/// <remarks> Padding styles do not seem to apply to this component. It is recommended to prepend two spaces. </remarks>
|
||||
private static void DrawHeader(ReadOnlySpan<byte> label)
|
||||
{
|
||||
var headerColor = ImGui.GetColorU32(ImGuiCol.Header);
|
||||
using var _ = ImRaii.PushColor(ImGuiCol.HeaderHovered, headerColor).Push(ImGuiCol.HeaderActive, headerColor);
|
||||
var headerColor = Im.Style[ImGuiColor.Header];
|
||||
using var _ = ImGuiColor.HeaderHovered.Push(headerColor).Push(ImGuiColor.HeaderActive, headerColor);
|
||||
ImUtf8.CollapsingHeader(label, ImGuiTreeNodeFlags.Leaf);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -308,7 +308,7 @@ public partial class MtrlTab
|
|||
var style = ImGui.GetStyle();
|
||||
var frameRounding = style.FrameRounding;
|
||||
var frameThickness = style.FrameBorderSize;
|
||||
var borderColor = ImGui.GetColorU32(ImGuiCol.Border);
|
||||
var borderColor = ImGuiColor.Border.Get();
|
||||
var drawList = ImGui.GetWindowDrawList();
|
||||
if (topColor == bottomColor)
|
||||
{
|
||||
|
|
@ -328,7 +328,7 @@ public partial class MtrlTab
|
|||
bottomColor, frameRounding, ImDrawFlags.RoundCornersBottomLeft | ImDrawFlags.RoundCornersBottomRight);
|
||||
}
|
||||
|
||||
drawList.AddRect(rcMin, rcMax, borderColor, frameRounding, ImDrawFlags.RoundCornersDefault, frameThickness);
|
||||
drawList.AddRect(rcMin, rcMax, borderColor.Color, frameRounding, ImDrawFlags.RoundCornersDefault, frameThickness);
|
||||
}
|
||||
|
||||
private static bool CtColorPicker(ReadOnlySpan<byte> label, ReadOnlySpan<byte> description, HalfColor current, Action<HalfColor> setter,
|
||||
|
|
|
|||
|
|
@ -24,16 +24,15 @@ public partial class MtrlTab
|
|||
if (disabled)
|
||||
return;
|
||||
|
||||
if (ImUtf8.Button("Reload live preview"u8))
|
||||
if (Im.Button("Reload live preview"u8))
|
||||
BindToMaterialInstances();
|
||||
|
||||
if (_materialPreviewers.Count != 0 || _colorTablePreviewers.Count != 0)
|
||||
return;
|
||||
|
||||
Im.Line.Same();
|
||||
using var c = ImRaii.PushColor(ImGuiCol.Text, Colors.RegexWarningBorder);
|
||||
ImUtf8.Text(
|
||||
"The current material has not been found on your character. Please check the Import from Screen tab for more information."u8);
|
||||
Im.Text("The current material has not been found on your character. Please check the Import from Screen tab for more information."u8,
|
||||
Colors.RegexWarningBorder);
|
||||
}
|
||||
|
||||
private unsafe void BindToMaterialInstances()
|
||||
|
|
@ -292,7 +291,7 @@ public partial class MtrlTab
|
|||
{
|
||||
var level = (MathF.Sin(time * 2.0f * MathF.PI) + 2.0f) / 3.0f / 255.0f;
|
||||
var baseColor = colorId.Value();
|
||||
var color = level * new Vector3(baseColor & 0xFF, (baseColor >> 8) & 0xFF, (baseColor >> 16) & 0xFF);
|
||||
var color = level * new Vector3(baseColor.R, baseColor.G, baseColor.B);
|
||||
var halfColor = (HalfColor)(color * color);
|
||||
|
||||
row.DiffuseColor = halfColor;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using Dalamud.Interface;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using ImSharp;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OtterGui.Raii;
|
||||
using OtterGui.Text;
|
||||
|
|
@ -153,8 +154,8 @@ public sealed class AtrMetaDrawer(ModMetaEditor editor, MetaFileManager metaFile
|
|||
if (all)
|
||||
{
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.ButtonTextAlign, new Vector2(0.05f, 0.5f));
|
||||
ImUtf8.TextFramed("All IDs"u8, ImGui.GetColorU32(ImGuiCol.FrameBg, all || allSlots ? ImGui.GetStyle().DisabledAlpha : 1f),
|
||||
new Vector2(unscaledWidth, 0), ImGui.GetColorU32(ImGuiCol.TextDisabled));
|
||||
ImUtf8.TextFramed("All IDs"u8, ImGuiColor.FrameBackground.Get(all || allSlots ? ImGui.GetStyle().DisabledAlpha : 1f).Color,
|
||||
new Vector2(unscaledWidth, 0), ImGuiColor.TextDisabled.Get().Color);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -254,7 +255,7 @@ public sealed class AtrMetaDrawer(ModMetaEditor editor, MetaFileManager metaFile
|
|||
var ret = false;
|
||||
var ptr = Unsafe.AsPointer(ref buffer);
|
||||
var span = new Span<byte>(ptr, ShapeAttributeString.MaxLength + 1);
|
||||
using (new ImRaii.ColorStyle().Push(ImGuiCol.Border, Colors.RegexWarningBorder, !valid).Push(ImGuiStyleVar.FrameBorderSize, 1f, !valid))
|
||||
using (ImStyleBorder.Frame.Push(Colors.RegexWarningBorder, Im.Style.GlobalScale, !valid))
|
||||
{
|
||||
ImGui.SetNextItemWidth(unscaledWidth * ImUtf8.GlobalScale);
|
||||
if (ImUtf8.InputText("##atrAttribute"u8, span, out int newLength, "Attribute..."u8))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using Dalamud.Interface;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using ImSharp;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OtterGui;
|
||||
using OtterGui.Raii;
|
||||
|
|
@ -43,8 +44,8 @@ public abstract class MetaDrawer<TIdentifier, TEntry>(ModMetaEditor editor, Meta
|
|||
using var id = ImUtf8.PushId((int)Identifier.Type);
|
||||
DrawNew();
|
||||
|
||||
var height = ColumnHeight;
|
||||
var skips = ImGuiClip.GetNecessarySkipsAtPos(height, ImGui.GetCursorPosY(), Count);
|
||||
var height = ColumnHeight;
|
||||
var skips = ImGuiClip.GetNecessarySkipsAtPos(height, ImGui.GetCursorPosY(), Count);
|
||||
if (skips < Count)
|
||||
{
|
||||
var remainder = ImGuiClip.ClippedTableDraw(Enumerate(), skips, DrawLine, Count);
|
||||
|
|
@ -79,8 +80,7 @@ public abstract class MetaDrawer<TIdentifier, TEntry>(ModMetaEditor editor, Meta
|
|||
{
|
||||
int tmp = currentId;
|
||||
ImGui.SetNextItemWidth(unscaledWidth * ImUtf8.GlobalScale);
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.FrameBorderSize, UiHelpers.Scale, border);
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Border, Colors.RegexWarningBorder, border);
|
||||
using var style = ImStyleBorder.Frame.Push(Colors.RegexWarningBorder, Im.Style.GlobalScale, border);
|
||||
if (ImUtf8.InputScalar(label, ref tmp))
|
||||
tmp = Math.Clamp(tmp, minId, maxId);
|
||||
|
||||
|
|
@ -96,9 +96,8 @@ public abstract class MetaDrawer<TIdentifier, TEntry>(ModMetaEditor editor, Meta
|
|||
out T newValue, T minValue, T maxValue, float speed, bool addDefault) where T : unmanaged, INumber<T>
|
||||
{
|
||||
newValue = currentValue;
|
||||
using var color = ImRaii.PushColor(ImGuiCol.FrameBg,
|
||||
defaultValue > currentValue ? ColorId.DecreasedMetaValue.Value() : ColorId.IncreasedMetaValue.Value(),
|
||||
defaultValue != currentValue);
|
||||
var c = defaultValue > currentValue ? ColorId.DecreasedMetaValue.Value() : ColorId.IncreasedMetaValue.Value();
|
||||
using var color = ImGuiColor.FrameBackground.Push(c, defaultValue != currentValue);
|
||||
ImGui.SetNextItemWidth(width);
|
||||
if (ImUtf8.DragScalar(label, ref newValue, minValue, maxValue, speed))
|
||||
newValue = newValue <= minValue ? minValue : newValue >= maxValue ? maxValue : newValue;
|
||||
|
|
@ -118,9 +117,8 @@ public abstract class MetaDrawer<TIdentifier, TEntry>(ModMetaEditor editor, Meta
|
|||
protected static bool Checkmark(ReadOnlySpan<byte> label, ReadOnlySpan<byte> tooltip, bool currentValue, bool defaultValue,
|
||||
out bool newValue)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.FrameBg,
|
||||
defaultValue ? ColorId.DecreasedMetaValue.Value() : ColorId.IncreasedMetaValue.Value(),
|
||||
defaultValue != currentValue);
|
||||
var c = defaultValue ? ColorId.DecreasedMetaValue.Value() : ColorId.IncreasedMetaValue.Value();
|
||||
using var color = ImGuiColor.FrameBackground.Push(c, defaultValue != currentValue);
|
||||
newValue = currentValue;
|
||||
ImUtf8.Checkbox(label, ref newValue);
|
||||
ImUtf8.HoverTooltip(ImGuiHoveredFlags.AllowWhenDisabled, tooltip);
|
||||
|
|
@ -134,9 +132,8 @@ public abstract class MetaDrawer<TIdentifier, TEntry>(ModMetaEditor editor, Meta
|
|||
protected static bool Checkmark(ReadOnlySpan<byte> label, ReadOnlySpan<char> tooltip, bool currentValue, bool defaultValue,
|
||||
out bool newValue)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.FrameBg,
|
||||
defaultValue ? ColorId.DecreasedMetaValue.Value() : ColorId.IncreasedMetaValue.Value(),
|
||||
defaultValue != currentValue);
|
||||
var c = defaultValue != currentValue ? ColorId.DecreasedMetaValue.Value() : ColorId.IncreasedMetaValue.Value();
|
||||
using var color = ImGuiColor.FrameBackground.Push(c, defaultValue != currentValue);
|
||||
newValue = currentValue;
|
||||
ImUtf8.Checkbox(label, ref newValue);
|
||||
ImUtf8.HoverTooltip(ImGuiHoveredFlags.AllowWhenDisabled, tooltip);
|
||||
|
|
@ -146,7 +143,8 @@ public abstract class MetaDrawer<TIdentifier, TEntry>(ModMetaEditor editor, Meta
|
|||
protected void DrawMetaButtons(TIdentifier identifier, TEntry entry)
|
||||
{
|
||||
ImGui.TableNextColumn();
|
||||
CopyToClipboardButton("Copy this manipulation to clipboard."u8, new Lazy<JToken?>(() => new JArray { MetaDictionary.Serialize(identifier, entry)! }));
|
||||
CopyToClipboardButton("Copy this manipulation to clipboard."u8,
|
||||
new Lazy<JToken?>(() => new JArray { MetaDictionary.Serialize(identifier, entry)! }));
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
if (ImUtf8.IconButton(FontAwesomeIcon.Trash, "Delete this meta manipulation."u8))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using Dalamud.Interface;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using ImSharp;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OtterGui.Raii;
|
||||
using OtterGui.Text;
|
||||
|
|
@ -161,8 +162,8 @@ public sealed class ShpMetaDrawer(ModMetaEditor editor, MetaFileManager metaFile
|
|||
if (all)
|
||||
{
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.ButtonTextAlign, new Vector2(0.05f, 0.5f));
|
||||
ImUtf8.TextFramed("All IDs"u8, ImGui.GetColorU32(ImGuiCol.FrameBg, all || allSlots ? ImGui.GetStyle().DisabledAlpha : 1f),
|
||||
new Vector2(unscaledWidth, 0), ImGui.GetColorU32(ImGuiCol.TextDisabled));
|
||||
ImUtf8.TextFramed("All IDs"u8, ImGuiColor.FrameBackground.Get(all || allSlots ? ImGui.GetStyle().DisabledAlpha : 1f).Color,
|
||||
new Vector2(unscaledWidth, 0), ImGuiColor.TextDisabled.Get().Color);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -232,7 +233,7 @@ public sealed class ShpMetaDrawer(ModMetaEditor editor, MetaFileManager metaFile
|
|||
var ret = false;
|
||||
var ptr = Unsafe.AsPointer(ref buffer);
|
||||
var span = new Span<byte>(ptr, ShapeAttributeString.MaxLength + 1);
|
||||
using (new ImRaii.ColorStyle().Push(ImGuiCol.Border, Colors.RegexWarningBorder, !valid).Push(ImGuiStyleVar.FrameBorderSize, 1f, !valid))
|
||||
using (ImStyleBorder.Frame.Push(Colors.RegexWarningBorder, Im.Style.GlobalScale, !valid))
|
||||
{
|
||||
ImGui.SetNextItemWidth(unscaledWidth * ImUtf8.GlobalScale);
|
||||
if (ImUtf8.InputText("##shpShape"u8, span, out int newLength, "Shape Key..."u8))
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public partial class ModEditWindow
|
|||
continue;
|
||||
|
||||
using var id = ImUtf8.PushId(index);
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ImGui.GetColorU32(ImGuiCol.TextDisabled), deformer.RacialDeformer.IsEmpty);
|
||||
using var color = ImGuiColor.Text.Push(Im.Style[ImGuiColor.TextDisabled], deformer.RacialDeformer.IsEmpty);
|
||||
if (ImUtf8.Selectable(name, deformer.GenderRace == _pbdData.SelectedRaceCode))
|
||||
{
|
||||
_pbdData.SelectedRaceCode = deformer.GenderRace;
|
||||
|
|
@ -61,7 +61,7 @@ public partial class ModEditWindow
|
|||
}
|
||||
|
||||
Im.Line.Same();
|
||||
color.Push(ImGuiCol.Text, metaColor);
|
||||
color.Push(ImGuiColor.Text, metaColor);
|
||||
ImUtf8.TextRightAligned(raceCode);
|
||||
}
|
||||
}
|
||||
|
|
@ -142,7 +142,7 @@ public partial class ModEditWindow
|
|||
var ret = false;
|
||||
ImUtf8.TextFrameAligned("Copy the values of the bone "u8);
|
||||
ImGui.SameLine(0, 0);
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, ColorId.NewMod.Value()))
|
||||
using (ImGuiColor.Text.Push(ColorId.NewMod.Value()))
|
||||
{
|
||||
ImUtf8.TextFrameAligned(_pbdData.SelectedBone);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ public partial class ModEditWindow
|
|||
var selected = _selectedFiles.Contains(registry);
|
||||
var color = registry.SubModUsage.Count == 0 ? ColorId.ConflictingMod :
|
||||
registry.CurrentUsage == registry.SubModUsage.Count ? ColorId.NewMod : ColorId.InheritedMod;
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, color.Value()))
|
||||
using (ImGuiColor.Text.Push(color.Value()))
|
||||
{
|
||||
if (Im.Selectable(registry.RelPath.Path.Span, selected))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ public partial class ModEditWindow
|
|||
var text = $"{otherOptionData.TotalCount} Edits in other Options";
|
||||
var size = ImGui.CalcTextSize(text).X;
|
||||
ImGui.SetCursorPos(new Vector2(ImGui.GetContentRegionAvail().X - size, oldPos + ImGui.GetStyle().FramePadding.Y));
|
||||
ImGuiUtil.TextColored(ColorId.RedundantAssignment.Value() | 0xFF000000, text);
|
||||
Im.Text(text, ColorId.RedundantAssignment.Value().FullAlpha());
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using var tt = ImUtf8.Tooltip();
|
||||
|
|
|
|||
|
|
@ -275,9 +275,9 @@ public partial class ModEditWindow
|
|||
if (tab.GamePaths!.Count == 1)
|
||||
{
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.ButtonTextAlign, new Vector2(0, 0.5f));
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Button, ImGui.GetColorU32(ImGuiCol.FrameBg))
|
||||
.Push(ImGuiCol.ButtonHovered, ImGui.GetColorU32(ImGuiCol.FrameBgHovered))
|
||||
.Push(ImGuiCol.ButtonActive, ImGui.GetColorU32(ImGuiCol.FrameBgActive));
|
||||
using var color = ImGuiColor.Button.Push(Im.Style[ImGuiColor.FrameBackground])
|
||||
.Push(ImGuiColor.ButtonHovered, Im.Style[ImGuiColor.FrameBackgroundHovered])
|
||||
.Push(ImGuiColor.ButtonActive, Im.Style[ImGuiColor.FrameBackgroundActive]);
|
||||
using var group = ImRaii.Group();
|
||||
ImGui.Button(preview, new Vector2(buttonWidth, 0));
|
||||
ImGui.SameLine(0, ImGui.GetStyle().ItemInnerSpacing.X);
|
||||
|
|
@ -310,7 +310,7 @@ public partial class ModEditWindow
|
|||
var width = ImGui.CalcTextSize(text).X + framePadding.X * 2;
|
||||
|
||||
// Draw the link button. We set the background colour to transparent to mimic the look of a link.
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Button, 0x00000000);
|
||||
using var color = ImGuiColor.Button.Push(Vector4.Zero);
|
||||
SupportButton.Link(Penumbra.Messager, text, address, width, ""u8);
|
||||
|
||||
// Draw an underline for the text.
|
||||
|
|
|
|||
|
|
@ -368,7 +368,7 @@ public partial class ModEditWindow
|
|||
|
||||
var ret = ImUtf8.CollapsingHeader(label);
|
||||
ImGui.GetWindowDrawList()
|
||||
.AddText(UiBuilder.DefaultFont, UiBuilder.DefaultFont.FontSize, pos, ImGui.GetColorU32(ImGuiCol.Text), "Layout");
|
||||
.AddText(UiBuilder.DefaultFont, UiBuilder.DefaultFont.FontSize, pos, ImGuiColor.Text.Get().Color, "Layout");
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -403,7 +403,7 @@ public partial class ModEditWindow
|
|||
ImGui.TableSetupColumn("w", ImGuiTableColumnFlags.WidthFixed, 250 * UiHelpers.Scale);
|
||||
ImGui.TableHeadersRow();
|
||||
|
||||
var textColorStart = ImGui.GetColorU32(ImGuiCol.Text);
|
||||
var textColorStart = ImGuiColor.Text.Get().Color;
|
||||
|
||||
var ret = false;
|
||||
for (var i = 0; i < tab.Matrix.GetLength(0); ++i)
|
||||
|
|
@ -424,7 +424,7 @@ public partial class ModEditWindow
|
|||
var deletable = !disabled && idx >= 0;
|
||||
using (ImRaii.PushFont(UiBuilder.MonoFont, tooltip.Length > 0))
|
||||
{
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, color))
|
||||
using (ImGuiColor.Text.Push(color))
|
||||
{
|
||||
ImGui.TableNextColumn();
|
||||
ImUtf8.Selectable(name);
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public partial class ModEditWindow
|
|||
return;
|
||||
|
||||
using var id = ImRaii.PushId(label);
|
||||
ImGuiUtil.DrawTextButton(label, new Vector2(-1, 0), ImGui.GetColorU32(ImGuiCol.FrameBg));
|
||||
ImEx.TextFramed(label, new Vector2(-1, 0), ImGuiColor.FrameBackground.Get());
|
||||
ImGui.NewLine();
|
||||
|
||||
using (ImRaii.Disabled(!_center.SaveTask.IsCompleted))
|
||||
|
|
@ -206,7 +206,7 @@ public partial class ModEditWindow
|
|||
case TaskStatus.Faulted:
|
||||
{
|
||||
ImGui.TextUnformatted("Could not save file:");
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, 0xFF0000FF);
|
||||
using var color = ImGuiColor.Text.Push(new Vector4(1, 0, 0, 1));
|
||||
ImGuiUtil.TextWrapped(_center.SaveTask.Exception?.ToString() ?? "Unknown Error");
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ public partial class ModEditWindow : Window, IDisposable, Luna.IUiService
|
|||
var offsetX = ImGui.GetContentRegionAvail().X / 2 - radius;
|
||||
var offsetY = ImGui.GetContentRegionAvail().Y / 2 - radius;
|
||||
ImGui.SetCursorPos(ImGui.GetCursorPos() + new Vector2(offsetX, offsetY));
|
||||
ImUtf8.Spinner("##spinner"u8, radius, thickness, ImGui.GetColorU32(ImGuiCol.Text));
|
||||
ImEx.Spinner("##spinner"u8, radius, thickness, ImGuiColor.Text.Get());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -501,7 +501,7 @@ public partial class ModEditWindow : Window, IDisposable, Luna.IUiService
|
|||
{
|
||||
Im.Line.Same();
|
||||
ImGuiUtil.DrawTextButton($"There are {otherSwaps} file swaps configured in other options.", Vector2.Zero,
|
||||
ColorId.RedundantAssignment.Value());
|
||||
ColorId.RedundantAssignment.Value().Color);
|
||||
}
|
||||
|
||||
using var child = ImRaii.Child("##swaps", -Vector2.One, true);
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ public class ModMergeTab(ModMerger modMerger) : Luna.IUiService
|
|||
var color = group != null || modMerger.OptionGroupName.Length == 0 && modMerger.OptionName.Length == 0
|
||||
? Colors.PressEnterWarningBg
|
||||
: Colors.DiscordColor;
|
||||
using var c = ImRaii.PushColor(ImGuiCol.Border, color);
|
||||
using var c = ImGuiColor.Border.Push(color);
|
||||
ImGui.SetNextItemWidth(buttonWidth);
|
||||
ImGui.InputTextWithHint("##optionGroupInput", "Target Option Group", ref modMerger.OptionGroupName, 64);
|
||||
ImGuiUtil.HoverTooltip(
|
||||
|
|
@ -96,7 +96,7 @@ public class ModMergeTab(ModMerger modMerger) : Luna.IUiService
|
|||
: group == null || group.Options.Any(o => o.Name == modMerger.OptionName)
|
||||
? Colors.PressEnterWarningBg
|
||||
: Colors.DiscordColor;
|
||||
c.Push(ImGuiCol.Border, color);
|
||||
c.Push(ImGuiColor.Border, color);
|
||||
ImGui.SetNextItemWidth(buttonWidth);
|
||||
ImGui.InputTextWithHint("##optionInput", "Target Option Name", ref modMerger.OptionName, 64);
|
||||
ImGuiUtil.HoverTooltip(
|
||||
|
|
@ -249,7 +249,7 @@ public class ModMergeTab(ModMerger modMerger) : Luna.IUiService
|
|||
|
||||
ImGui.Separator();
|
||||
ImGui.Dummy(Vector2.One);
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, Colors.TutorialBorder);
|
||||
using var color = ImGuiColor.Text.Push(Colors.TutorialBorder);
|
||||
foreach (var warning in modMerger.Warnings.SkipLast(1))
|
||||
{
|
||||
ImGuiUtil.TextWrapped(warning);
|
||||
|
|
@ -266,7 +266,7 @@ public class ModMergeTab(ModMerger modMerger) : Luna.IUiService
|
|||
|
||||
ImGui.Separator();
|
||||
ImGui.Dummy(Vector2.One);
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, Colors.RegexWarningBorder);
|
||||
using var color = ImGuiColor.Text.Push(Colors.RegexWarningBorder);
|
||||
ImGuiUtil.TextWrapped(modMerger.Error.ToString());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
using Dalamud.Bindings.ImGui;
|
||||
using OtterGui.Raii;
|
||||
using ImSharp;
|
||||
using OtterGui.Text;
|
||||
using OtterGui.Widgets;
|
||||
using Penumbra.Mods.Editor;
|
||||
using Penumbra.UI.Classes;
|
||||
using MouseWheelType = OtterGui.Widgets.MouseWheelType;
|
||||
|
||||
namespace Penumbra.UI.AdvancedWindow;
|
||||
|
||||
|
|
@ -11,12 +12,12 @@ public sealed class OptionSelectCombo(ModEditor editor, ModEditWindow window)
|
|||
: FilterComboCache<(string FullName, (int Group, int Data) Index)>(
|
||||
() => window.Mod!.AllDataContainers.Select(c => (c.GetFullName(), c.GetDataIndices())).ToList(), MouseWheelType.Control, Penumbra.Log)
|
||||
{
|
||||
private ImRaii.ColorStyle _border;
|
||||
private readonly Im.ColorStyleDisposable _border = new();
|
||||
|
||||
protected override void DrawCombo(string label, string preview, string tooltip, int currentSelected, float previewWidth, float itemHeight,
|
||||
ImGuiComboFlags flags)
|
||||
{
|
||||
_border = ImRaii.PushFrameBorder(ImUtf8.GlobalScale, ColorId.FolderLine.Value());
|
||||
_border.PushBorder(ImStyleBorder.Frame, ColorId.FolderLine.Value());
|
||||
base.DrawCombo(label, preview, tooltip, currentSelected, previewWidth, itemHeight, flags);
|
||||
_border.Dispose();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class ResourceTreeViewer(
|
|||
else if (_task.Exception != null)
|
||||
{
|
||||
ImGui.NewLine();
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, Colors.RegexWarningBorder);
|
||||
using var color = ImGuiColor.Text.Push(Colors.RegexWarningBorder);
|
||||
ImGui.TextUnformatted($"Error during calculation of character list:\n\n{_task.Exception}");
|
||||
}
|
||||
else if (_task.IsCompletedSuccessfully)
|
||||
|
|
@ -82,7 +82,7 @@ public class ResourceTreeViewer(
|
|||
if (!_categoryFilter.HasFlag(category) || !tree.Name.Contains(_nameFilter, StringComparison.OrdinalIgnoreCase))
|
||||
continue;
|
||||
|
||||
using (var c = ImRaii.PushColor(ImGuiCol.Text, CategoryColor(category).Value()))
|
||||
using (ImGuiColor.Text.Push(CategoryColor(category).Value()))
|
||||
{
|
||||
var isOpen = ImGui.CollapsingHeader($"{(incognito.IncognitoMode ? tree.AnonymizedName : tree.Name)}###{index}",
|
||||
index == 0 ? ImGuiTreeNodeFlags.DefaultOpen : 0);
|
||||
|
|
@ -164,7 +164,7 @@ public class ResourceTreeViewer(
|
|||
if (!gameData.HasModifiedGameDataFiles)
|
||||
return;
|
||||
|
||||
using var style = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudOrange);
|
||||
using var style = ImGuiColor.Text.Push(ImGuiColors.DalamudOrange);
|
||||
|
||||
ImUtf8.TextWrapped(
|
||||
"Dalamud is reporting your FFXIV installation has modified game files. Any mods installed through TexTools will produce this message."u8);
|
||||
|
|
@ -189,12 +189,12 @@ public class ResourceTreeViewer(
|
|||
var checkPadding = 10 * ImGuiHelpers.GlobalScale + ImGui.GetStyle().ItemSpacing.X;
|
||||
ImGui.SameLine(0, checkPadding);
|
||||
|
||||
using (var id = ImRaii.PushId("TreeCategoryFilter"))
|
||||
using (ImRaii.PushId("TreeCategoryFilter"))
|
||||
{
|
||||
var categoryFilter = (uint)_categoryFilter;
|
||||
foreach (var category in Enum.GetValues<TreeCategory>())
|
||||
{
|
||||
using var c = ImRaii.PushColor(ImGuiCol.CheckMark, CategoryColor(category).Value());
|
||||
using var c = ImGuiColor.CheckMark.Push(CategoryColor(category).Value());
|
||||
ImGui.CheckboxFlags($"##{category}", ref categoryFilter, (uint)category);
|
||||
ImGuiUtil.HoverTooltip(CategoryFilterDescription(category));
|
||||
ImGui.SameLine(0.0f, checkSpacing);
|
||||
|
|
@ -257,7 +257,7 @@ public class ResourceTreeViewer(
|
|||
if (visibility == NodeVisibility.Hidden)
|
||||
continue;
|
||||
|
||||
using var mutedColor = ImRaii.PushColor(ImGuiCol.Text, ImGuiUtil.HalfTransparentText(), resourceNode.Internal);
|
||||
using var mutedColor = ImGuiColor.Text.Push(ImGuiUtil.HalfTransparentText(), resourceNode.Internal);
|
||||
|
||||
var filterIcon = resourceNode.IconFlag != 0 ? resourceNode.IconFlag : parentFilterIconFlag;
|
||||
|
||||
|
|
@ -335,7 +335,7 @@ public class ResourceTreeViewer(
|
|||
var modName = $"[{(hasMod ? mod!.Name : resourceNode.ModName)}]";
|
||||
var textPos = ImGui.GetCursorPosX() + ImUtf8.CalcTextSize(modName).X + ImGui.GetStyle().ItemInnerSpacing.X;
|
||||
using var group = ImUtf8.Group();
|
||||
using (var color = ImRaii.PushColor(ImGuiCol.Text, (hasMod ? ColorId.NewMod : ColorId.DisabledMod).Value()))
|
||||
using (ImGuiColor.Text.Push((hasMod ? ColorId.NewMod : ColorId.DisabledMod).Value()))
|
||||
{
|
||||
ImUtf8.Selectable(modName, false, ImGuiSelectableFlags.AllowItemOverlap,
|
||||
new Vector2(ImGui.GetContentRegionAvail().X, frameHeight));
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ public class ChangedItemDrawer : IDisposable, IUiService
|
|||
|
||||
Im.Line.Same();
|
||||
using var color = ImGuiColor.Text.Push(ColorId.ItemId.Value());
|
||||
Im.Cursor.Y += height - Im.Style.TextHeight / 2;
|
||||
Im.Cursor.Y += (height - Im.Style.TextHeight) / 2;
|
||||
ImEx.TextRightAligned(additionalData, Im.Style.ItemInnerSpacing.X);
|
||||
}
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ public class ChangedItemDrawer : IDisposable, IUiService
|
|||
|
||||
Im.Line.Same();
|
||||
using var color = ImGuiColor.Text.Push(ColorId.ItemId.Value());
|
||||
Im.Cursor.Y += height - Im.Style.TextHeight / 2;
|
||||
Im.Cursor.Y += (height - Im.Style.TextHeight) / 2;
|
||||
ImEx.TextRightAligned(text, Im.Style.ItemInnerSpacing.X);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ public class MigrationSectionDrawer(MigrationManager migrationManager, Configura
|
|||
return;
|
||||
|
||||
Im.Line.Same();
|
||||
ImUtf8.Spinner("Spinner"u8, ImGui.GetTextLineHeight() / 2, 2, ImGui.GetColorU32(ImGuiCol.Text));
|
||||
ImEx.Spinner("Spinner"u8, ImGui.GetTextLineHeight() / 2, 2, ImGuiColor.Text.Get());
|
||||
}
|
||||
|
||||
private void DrawCancelButton(MigrationManager.TaskType task, ReadOnlySpan<byte> tooltip)
|
||||
|
|
|
|||
|
|
@ -283,7 +283,7 @@ public sealed class CollectionPanel(
|
|||
if (!context)
|
||||
return;
|
||||
|
||||
using (var color = ImRaii.PushColor(ImGuiCol.Text, Colors.DiscordColor))
|
||||
using (var color = ImGuiColor.Text.Push(Colors.DiscordColor))
|
||||
{
|
||||
if (ImGui.MenuItem("Use no mods."))
|
||||
_active.SetCollection(ModCollection.Empty, type, _active.Individuals.GetGroup(identifier));
|
||||
|
|
@ -291,7 +291,7 @@ public sealed class CollectionPanel(
|
|||
|
||||
if (collection != null && type.CanBeRemoved())
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, Colors.RegexWarningBorder);
|
||||
using var color = ImGuiColor.Text.Push(Colors.RegexWarningBorder);
|
||||
if (ImGui.MenuItem("Remove this assignment."))
|
||||
_active.SetCollection(null, type, _active.Individuals.GetGroup(identifier));
|
||||
}
|
||||
|
|
@ -303,15 +303,15 @@ public sealed class CollectionPanel(
|
|||
}
|
||||
}
|
||||
|
||||
private bool DrawButton(string text, CollectionType type, Vector2 width, uint borderColor, ActorIdentifier id, char suffix,
|
||||
private bool DrawButton(string text, CollectionType type, Vector2 width, Rgba32 borderColor, ActorIdentifier id, char suffix,
|
||||
ModCollection? collection = null)
|
||||
{
|
||||
using var group = ImRaii.Group();
|
||||
var invalid = type == CollectionType.Individual && !id.IsValid;
|
||||
var redundancy = _active.RedundancyCheck(type, id);
|
||||
collection ??= _active.ByType(type, id);
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Button,
|
||||
collection == null
|
||||
using var color = ImGuiColor.Button.Push(
|
||||
collection is null
|
||||
? ColorId.NoAssignment.Value()
|
||||
: redundancy.Length > 0
|
||||
? ColorId.RedundantAssignment.Value()
|
||||
|
|
@ -319,8 +319,8 @@ public sealed class CollectionPanel(
|
|||
? ColorId.SelectedCollection.Value()
|
||||
: collection == ModCollection.Empty
|
||||
? ColorId.NoModsAssignment.Value()
|
||||
: ImGui.GetColorU32(ImGuiCol.Button), !invalid)
|
||||
.Push(ImGuiCol.Border, borderColor == 0 ? ImGui.GetColorU32(ImGuiCol.TextDisabled) : borderColor);
|
||||
: ImGuiColor.Button.Get(), !invalid)
|
||||
.Push(ImGuiColor.Border, borderColor == 0 ? ImGuiColor.TextDisabled.Get().Color : borderColor);
|
||||
using var disabled = ImRaii.Disabled(invalid);
|
||||
var button = ImGui.Button(text, width) || ImGui.IsItemClicked(ImGuiMouseButton.Right);
|
||||
var hovered = redundancy.Length > 0 && ImGui.IsItemHovered();
|
||||
|
|
@ -332,7 +332,7 @@ public sealed class CollectionPanel(
|
|||
var name = Name(collection);
|
||||
var size = ImGui.CalcTextSize(name);
|
||||
var textPos = ImGui.GetItemRectMax() - size - ImGui.GetStyle().FramePadding;
|
||||
ImGui.GetWindowDrawList().AddText(textPos, ImGui.GetColorU32(ImGuiCol.Text), name);
|
||||
ImGui.GetWindowDrawList().AddText(textPos, ImGuiColor.Text.Get().Color, name);
|
||||
DrawContext(button, collection, type, id, text, suffix);
|
||||
}
|
||||
|
||||
|
|
@ -484,7 +484,7 @@ public sealed class CollectionPanel(
|
|||
private void DrawCollectionName(ModCollection collection)
|
||||
{
|
||||
ImGui.Dummy(Vector2.One);
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Border, Colors.MetaInfoText);
|
||||
using var color = ImGuiColor.Border.Push(Colors.MetaInfoText);
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.FrameBorderSize, 2 * UiHelpers.Scale);
|
||||
using var f = _nameFont.Push();
|
||||
var name = Name(collection);
|
||||
|
|
@ -574,7 +574,7 @@ public sealed class CollectionPanel(
|
|||
|
||||
using var f = _nameFont.Push();
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.FrameBorderSize, ImGuiHelpers.GlobalScale);
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Border, Colors.MetaInfoText);
|
||||
using var color = ImGuiColor.Border.Push(Colors.MetaInfoText);
|
||||
ImGuiUtil.DrawTextButton(Name(collection.Inheritance.DirectlyInheritedBy[0]), Vector2.Zero, 0);
|
||||
var constOffset = (ImGui.GetStyle().FramePadding.X + ImGuiHelpers.GlobalScale) * 2
|
||||
+ ImGui.GetStyle().ItemSpacing.X
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Dalamud.Bindings.ImGui;
|
||||
using ImSharp;
|
||||
using OtterGui;
|
||||
using OtterGui.Raii;
|
||||
using Penumbra.Collections;
|
||||
|
|
@ -75,7 +76,7 @@ public sealed class CollectionSelector : ItemSelector<ModCollection>, IDisposabl
|
|||
|
||||
protected override bool OnDraw(int idx)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Header, ColorId.SelectedCollection.Value());
|
||||
using var color = ImGuiColor.Header.Push(ColorId.SelectedCollection.Value());
|
||||
var ret = ImGui.Selectable(Name(Items[idx]), idx == CurrentIdx);
|
||||
using var source = ImRaii.DragDropSource();
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public class InheritanceUi(CollectionManager collectionManager, IncognitoService
|
|||
{
|
||||
using var id = ImRaii.PushId("##Inheritance");
|
||||
ImGuiUtil.DrawColoredText(($"The {TutorialService.SelectedCollection} ", 0),
|
||||
(Name(_active.Current), ColorId.SelectedCollection.Value() | 0xFF000000), (" inherits from:", 0));
|
||||
(Name(_active.Current), ColorId.SelectedCollection.Value().FullAlpha().Color), (" inherits from:", 0));
|
||||
ImGui.Dummy(Vector2.One);
|
||||
|
||||
DrawCurrentCollectionInheritance();
|
||||
|
|
@ -111,7 +111,7 @@ public class InheritanceUi(CollectionManager collectionManager, IncognitoService
|
|||
foreach (var inheritance in collection.Inheritance.FlatHierarchy.Skip(1))
|
||||
{
|
||||
// Draw the child, already seen collections are colored as conflicts.
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ColorId.HandledConflictMod.Value(),
|
||||
using var color = ImGuiColor.Text.Push(ColorId.HandledConflictMod.Value(),
|
||||
_seenInheritedCollections.Contains(inheritance));
|
||||
_seenInheritedCollections.Add(inheritance);
|
||||
|
||||
|
|
@ -138,7 +138,7 @@ public class InheritanceUi(CollectionManager collectionManager, IncognitoService
|
|||
/// <summary> Draw a single primary inherited collection. </summary>
|
||||
private void DrawInheritance(ModCollection collection)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ColorId.HandledConflictMod.Value(),
|
||||
using var color = ImGuiColor.Text.Push(ColorId.HandledConflictMod.Value(),
|
||||
_seenInheritedCollections.Contains(collection));
|
||||
_seenInheritedCollections.Add(collection);
|
||||
using var tree = ImRaii.TreeNode($"{Name(collection)}###{collection.Identity.Name}", ImGuiTreeNodeFlags.NoTreePushOnOpen);
|
||||
|
|
@ -172,10 +172,10 @@ public class InheritanceUi(CollectionManager collectionManager, IncognitoService
|
|||
private void DrawInheritanceTrashButton()
|
||||
{
|
||||
var size = UiHelpers.IconButtonSize with { Y = ImGui.GetTextLineHeightWithSpacing() * InheritedCollectionHeight };
|
||||
var buttonColor = ImGui.GetColorU32(ImGuiCol.Button);
|
||||
var buttonColor = Im.Style[ImGuiColor.Button];
|
||||
// Prevent hovering from highlighting the button.
|
||||
using var color = ImRaii.PushColor(ImGuiCol.ButtonActive, buttonColor)
|
||||
.Push(ImGuiCol.ButtonHovered, buttonColor);
|
||||
using var color = ImGuiColor.ButtonActive.Push(buttonColor)
|
||||
.Push(ImGuiColor.ButtonHovered, buttonColor);
|
||||
ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.Trash.ToIconString(), size,
|
||||
"Drag primary inheritance here to remove it from the list.", false, true);
|
||||
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ public sealed class ConfigWindow : Window, Luna.IUiService
|
|||
|
||||
private void DrawProblemWindow(string text)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, Colors.RegexWarningBorder);
|
||||
using var color = ImGuiColor.Text.Push(Colors.RegexWarningBorder);
|
||||
ImGui.NewLine();
|
||||
ImGui.NewLine();
|
||||
ImUtf8.TextWrapped(text);
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public readonly struct ImcModGroupEditDrawer(ModGroupEditDrawer editor, ImcModGr
|
|||
var changes = false;
|
||||
|
||||
var width = editor.AvailableWidth.X - 3 * ImUtf8.ItemInnerSpacing.X - ImUtf8.ItemSpacing.X - ImUtf8.CalcTextSize("All Variants"u8).X - ImUtf8.CalcTextSize("Only Attributes"u8).X - 2 * ImUtf8.FrameHeight;
|
||||
ImUtf8.TextFramed(identifier.ToString(), 0, new Vector2(width, 0), borderColor: ImGui.GetColorU32(ImGuiCol.Border));
|
||||
ImEx.TextFramed(identifier.ToString(), new Vector2(width, 0), Rgba32.Transparent);
|
||||
|
||||
ImUtf8.SameLineInner();
|
||||
var allVariants = group.AllVariants;
|
||||
|
|
@ -175,7 +175,7 @@ public readonly struct ImcModGroupEditDrawer(ModGroupEditDrawer editor, ImcModGr
|
|||
protected override void RenderSymbol(bool value, Vector2 position, float size)
|
||||
{
|
||||
if (value)
|
||||
SymbolHelpers.RenderCross(ImGui.GetWindowDrawList(), position, ImGui.GetColorU32(ImGuiCol.CheckMark), size);
|
||||
SymbolHelpers.RenderCross(ImGui.GetWindowDrawList(), position, ImGuiColor.CheckMark.Get().Color, size);
|
||||
}
|
||||
|
||||
protected override bool NextValue(bool value)
|
||||
|
|
|
|||
|
|
@ -836,7 +836,7 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
|||
|
||||
ImGui.SetCursorPos(comboPos);
|
||||
// Draw combo button
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Button, Colors.FilterActive, !everything);
|
||||
using var color = ImGuiColor.Button.Push(Colors.FilterActive, !everything);
|
||||
var rightClick = DrawFilterCombo(ref everything);
|
||||
_tutorial.OpenTutorial(BasicTutorialSteps.ModFilters);
|
||||
if (rightClick)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
using ImSharp;
|
||||
using Luna;
|
||||
using OtterGui;
|
||||
using OtterGui.Services;
|
||||
using OtterGui.Text;
|
||||
|
|
@ -213,7 +215,7 @@ public class ModPanelChangedItemsTab(
|
|||
private ImGuiStoragePtr _stateStorage;
|
||||
|
||||
private Vector2 _buttonSize;
|
||||
private uint _starColor;
|
||||
private Rgba32 _starColor;
|
||||
|
||||
public void DrawContent()
|
||||
{
|
||||
|
|
@ -230,7 +232,9 @@ public class ModPanelChangedItemsTab(
|
|||
.Push(ImGuiStyleVar.ItemSpacing, Vector2.Zero)
|
||||
.Push(ImGuiStyleVar.FramePadding, Vector2.Zero)
|
||||
.Push(ImGuiStyleVar.SelectableTextAlign, new Vector2(0.01f, 0.5f));
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Button, 0);
|
||||
using var color = ImGuiColor.Button.Push(Rgba32.Transparent)
|
||||
.Push(ImGuiColor.ButtonActive, Rgba32.Transparent)
|
||||
.Push(ImGuiColor.ButtonHovered, Rgba32.Transparent);
|
||||
|
||||
using var table = ImUtf8.Table("##changedItems"u8, cache.AnyExpandable ? 2 : 1, ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollY,
|
||||
new Vector2(ImGui.GetContentRegionAvail().X, -1));
|
||||
|
|
@ -287,8 +291,13 @@ public class ModPanelChangedItemsTab(
|
|||
|
||||
private void DrawPreferredButton(IdentifiedItem item, int idx)
|
||||
{
|
||||
if (ImUtf8.IconButton(FontAwesomeIcon.Star, "Prefer displaying this item instead of the current primary item.\n\nRight-click for more options."u8, _buttonSize,
|
||||
false, _starColor))
|
||||
var textColor = Im.Mouse.IsHoveringRectangle(Rectangle.FromSize(Im.Cursor.ScreenPosition, _buttonSize))
|
||||
? LunaStyle.FavoriteColor
|
||||
: _starColor;
|
||||
|
||||
if (ImEx.Icon.Button(LunaStyle.FavoriteIcon,
|
||||
"Prefer displaying this item instead of the current primary item.\n\nRight-click for more options."u8,
|
||||
textColor: textColor, size: _buttonSize))
|
||||
dataEditor.AddPreferredItem(selector.Selected!, item.Item.Id, false, true);
|
||||
using var context = ImUtf8.PopupContextItem("StarContext"u8);
|
||||
if (!context)
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class ModPanelConflictsTab(CollectionManager collectionManager, ModFileSy
|
|||
private void DrawCurrentRow(float priorityWidth)
|
||||
{
|
||||
ImGui.TableNextColumn();
|
||||
using var c = ImRaii.PushColor(ImGuiCol.Text, ColorId.FolderLine.Value());
|
||||
using var c = ImGuiColor.Text.Push(ColorId.FolderLine.Value());
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.TextUnformatted(selector.Selected!.Name);
|
||||
ImGui.TableNextColumn();
|
||||
|
|
@ -165,8 +165,7 @@ public class ModPanelConflictsTab(CollectionManager collectionManager, ModFileSy
|
|||
|
||||
private int DrawPriorityInput(ModConflicts conflict, float priorityWidth)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text,
|
||||
conflict.HasPriority ? ColorId.HandledConflictMod.Value() : ColorId.ConflictingMod.Value());
|
||||
using var color = ImGuiColor.Text.Push(conflict.HasPriority ? ColorId.HandledConflictMod.Value() : ColorId.ConflictingMod.Value());
|
||||
using var disabled = ImRaii.Disabled(conflict.Mod2.Index < 0);
|
||||
var priority = _currentPriority ?? GetPriority(conflict).Value;
|
||||
|
||||
|
|
|
|||
|
|
@ -208,8 +208,8 @@ public class ModPanelEditTab(
|
|||
|
||||
private void DrawImportDate()
|
||||
{
|
||||
ImUtf8.TextFramed($"{DateTimeOffset.FromUnixTimeMilliseconds(_mod.ImportDate).ToLocalTime():yyyy/MM/dd HH:mm}",
|
||||
ImGui.GetColorU32(ImGuiCol.FrameBg, 0.5f), new Vector2(UiHelpers.InputTextMinusButton3, 0));
|
||||
ImEx.TextFramed($"{DateTimeOffset.FromUnixTimeMilliseconds(_mod.ImportDate).ToLocalTime():yyyy/MM/dd HH:mm}",
|
||||
new Vector2(UiHelpers.InputTextMinusButton3, 0), ImGuiColor.FrameBackground.Get(0.5f));
|
||||
ImGui.SameLine(0, 3 * ImUtf8.GlobalScale);
|
||||
|
||||
var canRefresh = config.DeleteModModifier.IsActive();
|
||||
|
|
|
|||
|
|
@ -149,8 +149,7 @@ public class ModPanelHeader : IDisposable
|
|||
ImGui.SetCursorPosX(offset);
|
||||
}
|
||||
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Border, Colors.MetaInfoText);
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.FrameBorderSize, 2 * UiHelpers.Scale);
|
||||
using var style = ImStyleBorder.Frame.Push(Colors.MetaInfoText, 2 * Im.Style.GlobalScale);
|
||||
using var f = _nameFont.Push();
|
||||
ImGuiUtil.DrawTextButton(_modName, Vector2.Zero, 0);
|
||||
_nameWidth = ImGui.GetItemRectSize().X;
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ public class ModPanelSettingsTab(
|
|||
if (!_inherited)
|
||||
return;
|
||||
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Button, Colors.PressEnterWarningBg);
|
||||
using var color = ImGuiColor.Button.Push(Colors.PressEnterWarningBg);
|
||||
var width = new Vector2(ImGui.GetContentRegionAvail().X, 0);
|
||||
if (ImUtf8.ButtonEx($"These settings are inherited from {selection.Collection.Identity.Name}.", width, _locked))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,15 +1,18 @@
|
|||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface;
|
||||
using ImSharp;
|
||||
using Luna;
|
||||
using OtterGui;
|
||||
using OtterGui.Raii;
|
||||
using OtterGui.Widgets;
|
||||
using Penumbra.Mods;
|
||||
using Penumbra.Mods.Manager;
|
||||
using Penumbra.UI.AdvancedWindow;
|
||||
using ImGuiColor = ImSharp.ImGuiColor;
|
||||
|
||||
namespace Penumbra.UI.ModsTab;
|
||||
|
||||
public class ModPanelTabBar : Luna.IUiService
|
||||
public class ModPanelTabBar : IUiService
|
||||
{
|
||||
private enum ModPanelTabType
|
||||
{
|
||||
|
|
@ -129,25 +132,22 @@ public class ModPanelTabBar : Luna.IUiService
|
|||
|
||||
private void DrawFavoriteButton(Mod mod, float height)
|
||||
{
|
||||
using (var font = ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
var size = ImGui.CalcTextSize(FontAwesomeIcon.Star.ToIconString()) + ImGui.GetStyle().FramePadding * 2;
|
||||
var newPos = new Vector2(ImGui.GetWindowWidth() - size.X - ImGui.GetStyle().ItemSpacing.X, height);
|
||||
if (ImGui.GetScrollMaxX() > 0)
|
||||
newPos.X += ImGui.GetScrollX();
|
||||
var size = ImEx.Icon.CalculateSize(LunaStyle.FavoriteIcon) + ImGui.GetStyle().FramePadding * 2;
|
||||
var newPos = new Vector2(ImGui.GetWindowWidth() - size.X - ImGui.GetStyle().ItemSpacing.X, height);
|
||||
if (ImGui.GetScrollMaxX() > 0)
|
||||
newPos.X += ImGui.GetScrollX();
|
||||
|
||||
var rectUpper = ImGui.GetWindowPos() + newPos;
|
||||
var color = ImGui.IsMouseHoveringRect(rectUpper, rectUpper + size) ? ImGui.GetColorU32(ImGuiCol.Text) :
|
||||
mod.Favorite ? 0xFF00FFFF : ImGui.GetColorU32(ImGuiCol.TextDisabled);
|
||||
using var c = ImRaii.PushColor(ImGuiCol.Text, color)
|
||||
.Push(ImGuiCol.Button, 0)
|
||||
.Push(ImGuiCol.ButtonHovered, 0)
|
||||
.Push(ImGuiCol.ButtonActive, 0);
|
||||
var rectUpper = ImGui.GetWindowPos() + newPos;
|
||||
var color = ImGui.IsMouseHoveringRect(rectUpper, rectUpper + size) ? Im.Style[ImGuiColor.Text] :
|
||||
mod.Favorite ? LunaStyle.FavoriteColor : Im.Style[ImGuiColor.TextDisabled];
|
||||
using var c = ImGuiColor.Text.Push(color)
|
||||
.Push(ImGuiColor.Button, Vector4.Zero)
|
||||
.Push(ImGuiColor.ButtonHovered, Vector4.Zero)
|
||||
.Push(ImGuiColor.ButtonActive, Vector4.Zero);
|
||||
|
||||
ImGui.SetCursorPos(newPos);
|
||||
if (ImGui.Button(FontAwesomeIcon.Star.ToIconString()))
|
||||
_modManager.DataEditor.ChangeModFavorite(mod, !mod.Favorite);
|
||||
}
|
||||
ImGui.SetCursorPos(newPos);
|
||||
if (ImEx.Icon.Button(LunaStyle.FavoriteIcon))
|
||||
_modManager.DataEditor.ChangeModFavorite(mod, !mod.Favorite);
|
||||
|
||||
var hovered = ImGui.IsItemHovered();
|
||||
_tutorial.OpenTutorial(BasicTutorialSteps.Favorites);
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ public sealed class PredefinedTagManager : ISavable, IReadOnlyList<string>, ISer
|
|||
private readonly SaveService _saveService;
|
||||
|
||||
private bool _isListOpen;
|
||||
private uint _enabledColor;
|
||||
private uint _disabledColor;
|
||||
private Rgba32 _enabledColor;
|
||||
private Rgba32 _disabledColor;
|
||||
|
||||
private readonly SortedList<string, TagData> _predefinedTags = [];
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface;
|
||||
using ImSharp;
|
||||
using Luna;
|
||||
using OtterGui;
|
||||
using OtterGui.Raii;
|
||||
|
|
@ -336,17 +337,13 @@ internal sealed class ResourceWatcherTable : Table<Record>
|
|||
$"Successfully loaded ({(byte)item.LoadState})."),
|
||||
LoadState.FailedSubResource => (FontAwesomeIcon.ExclamationCircle, ColorId.DecreasedMetaValue.Value(),
|
||||
$"Dependencies failed to load ({(byte)item.LoadState})."),
|
||||
<= LoadState.Constructed => (FontAwesomeIcon.QuestionCircle, ColorId.UndefinedMod.Value(), $"Not yet loaded ({(byte)item.LoadState})."),
|
||||
<= LoadState.Constructed => (FontAwesomeIcon.QuestionCircle, ColorId.UndefinedMod.Value(),
|
||||
$"Not yet loaded ({(byte)item.LoadState})."),
|
||||
< LoadState.Success => (FontAwesomeIcon.Clock, ColorId.FolderLine.Value(), $"Loading asynchronously ({(byte)item.LoadState})."),
|
||||
> LoadState.Success => (FontAwesomeIcon.Times, ColorId.DecreasedMetaValue.Value(),
|
||||
$"Failed to load ({(byte)item.LoadState})."),
|
||||
};
|
||||
using (var font = ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
using var c = ImRaii.PushColor(ImGuiCol.Text, color);
|
||||
ImGui.TextUnformatted(icon.ToIconString());
|
||||
}
|
||||
|
||||
ImEx.Icon.Draw(icon.Icon(), color);
|
||||
ImGuiUtil.HoverTooltip(tt);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -86,29 +86,30 @@ public sealed class CollectionsTab : IDisposable, ITab, Luna.IUiService
|
|||
using var style = ImRaii.PushStyle(ImGuiStyleVar.FrameRounding, 0).Push(ImGuiStyleVar.ItemSpacing, Vector2.Zero);
|
||||
var buttonSize = new Vector2((ImGui.GetContentRegionAvail().X - withSpacing) / 4f, ImGui.GetFrameHeight());
|
||||
|
||||
using var _ = ImRaii.Group();
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Button, ImGui.GetColorU32(ImGuiCol.TabActive), Mode is PanelMode.SimpleAssignment);
|
||||
using var _ = ImRaii.Group();
|
||||
var tabSelectedColor = Im.Style[ImGuiColor.TabSelected];
|
||||
using var color = ImGuiColor.Button.Push(tabSelectedColor, Mode is PanelMode.SimpleAssignment);
|
||||
if (ImGui.Button("Simple Assignments", buttonSize))
|
||||
Mode = PanelMode.SimpleAssignment;
|
||||
color.Pop();
|
||||
_tutorial.OpenTutorial(BasicTutorialSteps.SimpleAssignments);
|
||||
Im.Line.Same();
|
||||
|
||||
color.Push(ImGuiCol.Button, ImGui.GetColorU32(ImGuiCol.TabActive), Mode is PanelMode.IndividualAssignment);
|
||||
color.Push(ImGuiColor.Button, tabSelectedColor, Mode is PanelMode.IndividualAssignment);
|
||||
if (ImGui.Button("Individual Assignments", buttonSize))
|
||||
Mode = PanelMode.IndividualAssignment;
|
||||
color.Pop();
|
||||
_tutorial.OpenTutorial(BasicTutorialSteps.IndividualAssignments);
|
||||
Im.Line.Same();
|
||||
|
||||
color.Push(ImGuiCol.Button, ImGui.GetColorU32(ImGuiCol.TabActive), Mode is PanelMode.GroupAssignment);
|
||||
color.Push(ImGuiColor.Button, tabSelectedColor, Mode is PanelMode.GroupAssignment);
|
||||
if (ImGui.Button("Group Assignments", buttonSize))
|
||||
Mode = PanelMode.GroupAssignment;
|
||||
color.Pop();
|
||||
_tutorial.OpenTutorial(BasicTutorialSteps.GroupAssignments);
|
||||
Im.Line.Same();
|
||||
|
||||
color.Push(ImGuiCol.Button, ImGui.GetColorU32(ImGuiCol.TabActive), Mode is PanelMode.Details);
|
||||
color.Push(ImGuiColor.Button, tabSelectedColor, Mode is PanelMode.Details);
|
||||
if (ImGui.Button("Collection Details", buttonSize))
|
||||
Mode = PanelMode.Details;
|
||||
color.Pop();
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ using Penumbra.Mods.Manager;
|
|||
using Penumbra.Services;
|
||||
using Penumbra.String;
|
||||
using Penumbra.UI.Classes;
|
||||
using static OtterGui.Raii.ImRaii;
|
||||
using CharacterBase = FFXIVClientStructs.FFXIV.Client.Graphics.Scene.CharacterBase;
|
||||
using ImGuiClip = OtterGui.ImGuiClip;
|
||||
using Penumbra.Api.IpcTester;
|
||||
|
|
@ -68,7 +67,7 @@ public class Diagnostics(ServiceManager provider) : IUiService
|
|||
}
|
||||
}
|
||||
|
||||
public class DebugTab : Window, ITab, IUiService
|
||||
public class DebugTab : Window, ITab
|
||||
{
|
||||
private readonly Configuration _config;
|
||||
private readonly CollectionManager _collectionManager;
|
||||
|
|
@ -180,7 +179,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
|
||||
public void DrawContent()
|
||||
{
|
||||
using var child = Child("##DebugTab", -Vector2.One);
|
||||
using var child = Im.Child.Begin("##DebugTab"u8, -Vector2.One);
|
||||
if (!child)
|
||||
return;
|
||||
|
||||
|
|
@ -218,9 +217,9 @@ public class DebugTab : Window, ITab, IUiService
|
|||
{
|
||||
if (collection.HasCache)
|
||||
{
|
||||
using var color = PushColor(ImGuiCol.Text, ColorId.FolderExpanded.Value());
|
||||
using var color = ImGuiColor.Text.Push(ColorId.FolderExpanded.Value());
|
||||
using var node =
|
||||
TreeNode($"{collection.Identity.Name} (Change Counter {collection.Counters.Change})###{collection.Identity.Name}");
|
||||
Im.Tree.Node($"{collection.Identity.Name} (Change Counter {collection.Counters.Change})###{collection.Identity.Name}");
|
||||
if (!node)
|
||||
continue;
|
||||
|
||||
|
|
@ -272,24 +271,24 @@ public class DebugTab : Window, ITab, IUiService
|
|||
if (modNode)
|
||||
foreach (var (mod, paths, manips) in collection._cache!.ModData.Data.OrderBy(t => t.Item1.Name))
|
||||
{
|
||||
using var id = mod is TemporaryMod t ? PushId(t.Priority.Value) : PushId(((Mod)mod).ModPath.Name);
|
||||
using var node2 = TreeNode(mod.Name);
|
||||
using var id = mod is TemporaryMod t ? Im.Id.Push(t.Priority.Value) : Im.Id.Push(((Mod)mod).ModPath.Name);
|
||||
using var node2 = Im.Tree.Node(mod.Name);
|
||||
if (!node2)
|
||||
continue;
|
||||
|
||||
foreach (var path in paths)
|
||||
|
||||
TreeNode(path.ToString(), ImGuiTreeNodeFlags.Bullet | ImGuiTreeNodeFlags.Leaf).Dispose();
|
||||
Im.Tree.Node(path.Path.Span, TreeNodeFlags.Bullet | TreeNodeFlags.Leaf).Dispose();
|
||||
|
||||
foreach (var manip in manips)
|
||||
TreeNode(manip.ToString(), ImGuiTreeNodeFlags.Bullet | ImGuiTreeNodeFlags.Leaf).Dispose();
|
||||
Im.Tree.Node($"{manip}", TreeNodeFlags.Bullet | TreeNodeFlags.Leaf).Dispose();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using var color = PushColor(ImGuiCol.Text, ColorId.UndefinedMod.Value());
|
||||
TreeNode($"{collection.Identity.Name} (Change Counter {collection.Counters.Change})",
|
||||
ImGuiTreeNodeFlags.Bullet | ImGuiTreeNodeFlags.Leaf).Dispose();
|
||||
using var color = ImGuiColor.Text.Push(ColorId.UndefinedMod.Value());
|
||||
Im.Tree.Node($"{collection.Identity.Name} (Change Counter {collection.Counters.Change})",
|
||||
TreeNodeFlags.Bullet | TreeNodeFlags.Leaf).Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -308,7 +307,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
_config.Ephemeral.Save();
|
||||
}
|
||||
|
||||
using (var table = Table("##DebugGeneralTable", 2, ImGuiTableFlags.SizingFixedFit))
|
||||
using (var table = Im.Table.Begin("##DebugGeneralTable"u8, 2, TableFlags.SizingFixedFit))
|
||||
{
|
||||
if (table)
|
||||
{
|
||||
|
|
@ -329,11 +328,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
|
||||
|
||||
var issues = _modManager.Index().Count(p => p.Index != p.Item.Index);
|
||||
using (var tree = TreeNode($"Mods ({issues} Issues)###Mods"))
|
||||
using (var tree = Im.Tree.Node($"Mods ({issues} Issues)###Mods"))
|
||||
{
|
||||
if (tree)
|
||||
{
|
||||
using var table = Table("##DebugModsTable", 3, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("##DebugModsTable"u8, 3, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
{
|
||||
var lastIndex = -1;
|
||||
|
|
@ -350,11 +349,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var tree = TreeNode("Mod Import"))
|
||||
using (var tree = Im.Tree.Node("Mod Import"u8))
|
||||
{
|
||||
if (tree)
|
||||
{
|
||||
using var table = Table("##DebugModImport", 2, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("##DebugModImport"u8, 2, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
{
|
||||
var importing = _modImporter.IsImporting(out var importer);
|
||||
|
|
@ -384,11 +383,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var tree = TreeNode("Framework"))
|
||||
using (var tree = Im.Tree.Node("Framework"u8))
|
||||
{
|
||||
if (tree)
|
||||
{
|
||||
using var table = Table("##DebugFramework", 2, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("##DebugFramework"u8, 2, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
{
|
||||
foreach (var important in _framework.Important)
|
||||
|
|
@ -406,11 +405,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var tree = TreeNode($"Texture Manager {_textureManager.Tasks.Count}###Texture Manager"))
|
||||
using (var tree = Im.Tree.Node($"Texture Manager {_textureManager.Tasks.Count}###Texture Manager"))
|
||||
{
|
||||
if (tree)
|
||||
{
|
||||
using var table = Table("##Tasks", 2, ImGuiTableFlags.RowBg);
|
||||
using var table = Im.Table.Begin("##Tasks"u8, 2, TableFlags.RowBackground);
|
||||
if (table)
|
||||
foreach (var task in _textureManager.Tasks)
|
||||
{
|
||||
|
|
@ -420,11 +419,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var tree = TreeNode("Redraw Service"))
|
||||
using (var tree = Im.Tree.Node("Redraw Service"u8))
|
||||
{
|
||||
if (tree)
|
||||
{
|
||||
using var table = Table("##redraws", 3, ImGuiTableFlags.RowBg);
|
||||
using var table = Im.Table.Begin("##redraws"u8, 3, TableFlags.RowBackground);
|
||||
if (table)
|
||||
{
|
||||
ImGuiUtil.DrawTableColumn("In GPose");
|
||||
|
|
@ -494,7 +493,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
if (!ImGui.CollapsingHeader("Performance"))
|
||||
return;
|
||||
|
||||
using (var start = TreeNode("Startup Performance", ImGuiTreeNodeFlags.DefaultOpen))
|
||||
using (var start = Im.Tree.Node("Startup Performance"u8, TreeNodeFlags.DefaultOpen))
|
||||
{
|
||||
if (start)
|
||||
ImGui.NewLine();
|
||||
|
|
@ -512,7 +511,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
{
|
||||
_objects.DrawDebug();
|
||||
|
||||
using var table = Table("##actors", 8, ImGuiTableFlags.RowBg | ImGuiTableFlags.SizingFixedFit,
|
||||
using var table = Im.Table.Begin("##actors"u8, 8, TableFlags.RowBackground | TableFlags.SizingFixedFit,
|
||||
-Vector2.UnitX);
|
||||
if (!table)
|
||||
return;
|
||||
|
|
@ -581,11 +580,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
|
||||
ImGui.TextUnformatted(
|
||||
$"Last Game Object: 0x{_collectionResolver.IdentifyLastGameObjectCollection(true).AssociatedGameObject:X} ({_collectionResolver.IdentifyLastGameObjectCollection(true).ModCollection.Identity.Name})");
|
||||
using (var drawTree = TreeNode("Draw Object to Object"))
|
||||
using (var drawTree = Im.Tree.Node("Draw Object to Object"u8))
|
||||
{
|
||||
if (drawTree)
|
||||
{
|
||||
using var table = Table("###DrawObjectResolverTable", 8, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("###DrawObjectResolverTable"u8, 8, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
foreach (var (drawObject, (gameObjectPtr, idx, child)) in _drawObjectState
|
||||
.OrderBy(kvp => kvp.Value.Item2.Index)
|
||||
|
|
@ -595,7 +594,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
ImGui.TableNextColumn();
|
||||
ImUtf8.CopyOnClickSelectable($"{drawObject}");
|
||||
ImUtf8.DrawTableColumn($"{gameObjectPtr.Index}");
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, 0xFF0000FF, gameObjectPtr.Index != idx))
|
||||
using (ImGuiColor.Text.Push(new Vector4(1, 0, 0, 1), gameObjectPtr.Index != idx))
|
||||
{
|
||||
ImUtf8.DrawTableColumn($"{idx}");
|
||||
}
|
||||
|
|
@ -603,7 +602,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
ImUtf8.DrawTableColumn(child ? "Child"u8 : "Main"u8);
|
||||
ImGui.TableNextColumn();
|
||||
ImUtf8.CopyOnClickSelectable($"{gameObjectPtr}");
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, 0xFF0000FF, _objects[idx] != gameObjectPtr))
|
||||
using (ImGuiColor.Text.Push(new Vector4(1, 0, 0, 1), _objects[idx] != gameObjectPtr))
|
||||
{
|
||||
ImUtf8.DrawTableColumn($"{_objects[idx]}");
|
||||
}
|
||||
|
|
@ -615,11 +614,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var pathTree = TreeNode("Path Collections"))
|
||||
using (var pathTree = Im.Tree.Node("Path Collections"u8))
|
||||
{
|
||||
if (pathTree)
|
||||
{
|
||||
using var table = Table("###PathCollectionResolverTable", 2, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("###PathCollectionResolverTable"u8, 2, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
foreach (var data in _pathState.CurrentData)
|
||||
{
|
||||
|
|
@ -631,11 +630,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var resourceTree = TreeNode("Subfile Collections"))
|
||||
using (var resourceTree = Im.Tree.Node("Subfile Collections"u8))
|
||||
{
|
||||
if (resourceTree)
|
||||
{
|
||||
using var table = Table("###ResourceCollectionResolverTable", 4, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("###ResourceCollectionResolverTable"u8, 4, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
{
|
||||
ImGuiUtil.DrawTableColumn("Current Mtrl Data");
|
||||
|
|
@ -664,11 +663,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var identifiedTree = TreeNode("Identified Collections"))
|
||||
using (var identifiedTree = Im.Tree.Node("Identified Collections"u8))
|
||||
{
|
||||
if (identifiedTree)
|
||||
{
|
||||
using var table = Table("##PathCollectionsIdentifiedTable", 4, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("##PathCollectionsIdentifiedTable"u8, 4, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
foreach (var (address, identifier, collection) in _identifiedCollectionCache
|
||||
.OrderBy(kvp => ((GameObject*)kvp.Address)->ObjectIndex))
|
||||
|
|
@ -681,11 +680,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var cutsceneTree = TreeNode("Cutscene Actors"))
|
||||
using (var cutsceneTree = Im.Tree.Node("Cutscene Actors"u8))
|
||||
{
|
||||
if (cutsceneTree)
|
||||
{
|
||||
using var table = Table("###PCutsceneResolverTable", 2, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("###PCutsceneResolverTable"u8, 2, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
foreach (var (idx, actor) in _cutsceneService.Actors)
|
||||
{
|
||||
|
|
@ -695,11 +694,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var groupTree = TreeNode("Group"))
|
||||
using (var groupTree = Im.Tree.Node("Group"u8))
|
||||
{
|
||||
if (groupTree)
|
||||
{
|
||||
using var table = Table("###PGroupTable", 2, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("###PGroupTable"u8, 2, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
{
|
||||
ImGuiUtil.DrawTableColumn("Group Members");
|
||||
|
|
@ -714,7 +713,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var bannerTree = TreeNode("Party Banner"))
|
||||
using (var bannerTree = Im.Tree.Node("Party Banner"u8))
|
||||
{
|
||||
if (bannerTree)
|
||||
{
|
||||
|
|
@ -727,7 +726,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
Penumbra.Dynamis.DrawPointer((nint)agent);
|
||||
if (agent->Data != null)
|
||||
{
|
||||
using var table = Table("###PBannerTable", 2, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("###PBannerTable"u8, 2, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
for (var i = 0; i < 8; ++i)
|
||||
{
|
||||
|
|
@ -744,11 +743,11 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using (var tmbCache = TreeNode("TMB Cache"))
|
||||
using (var tmbCache = Im.Tree.Node("TMB Cache"u8))
|
||||
{
|
||||
if (tmbCache)
|
||||
{
|
||||
using var table = Table("###TmbTable", 2, ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("###TmbTable"u8, 2, TableFlags.SizingFixedFit);
|
||||
if (table)
|
||||
foreach (var (id, name) in _schedulerService.ListedTmbs.OrderBy(kvp => kvp.Key))
|
||||
{
|
||||
|
|
@ -777,7 +776,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
|
||||
private void DrawFileTest()
|
||||
{
|
||||
using var node = TreeNode("Game File Test");
|
||||
using var node = Im.Tree.Node("Game File Test"u8);
|
||||
if (!node)
|
||||
return;
|
||||
|
||||
|
|
@ -803,7 +802,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
|
||||
private void DrawChangedItemTest()
|
||||
{
|
||||
using var node = TreeNode("Changed Item Test");
|
||||
using var node = Im.Tree.Node("Changed Item Test"u8);
|
||||
if (!node)
|
||||
return;
|
||||
|
||||
|
|
@ -855,13 +854,13 @@ public class DebugTab : Window, ITab, IUiService
|
|||
|
||||
private void DrawEmotes()
|
||||
{
|
||||
using var mainTree = TreeNode("Emotes");
|
||||
using var mainTree = Im.Tree.Node("Emotes"u8);
|
||||
if (!mainTree)
|
||||
return;
|
||||
|
||||
ImGui.InputText("File Name", ref _emoteSearchFile, 256);
|
||||
ImGui.InputText("Emote Name", ref _emoteSearchName, 256);
|
||||
using var table = Table("##table", 2, ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollY | ImGuiTableFlags.SizingFixedFit,
|
||||
using var table = Im.Table.Begin("##table"u8, 2, TableFlags.RowBackground | TableFlags.ScrollY | TableFlags.SizingFixedFit,
|
||||
new Vector2(-1, 12 * ImGui.GetTextLineHeightWithSpacing()));
|
||||
if (!table)
|
||||
return;
|
||||
|
|
@ -886,13 +885,13 @@ public class DebugTab : Window, ITab, IUiService
|
|||
|
||||
private void DrawActionTmbs()
|
||||
{
|
||||
using var mainTree = TreeNode("Action TMBs");
|
||||
using var mainTree = Im.Tree.Node("Action TMBs"u8);
|
||||
if (!mainTree)
|
||||
return;
|
||||
|
||||
if (ImGui.InputText("Key", ref _tmbKeyFilter, 256))
|
||||
_tmbKeyFilterU8 = CiByteString.FromString(_tmbKeyFilter, out var r, MetaDataComputation.All) ? r : CiByteString.Empty;
|
||||
using var table = Table("##table", 2, ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollY | ImGuiTableFlags.SizingFixedFit,
|
||||
using var table = Im.Table.Begin("##table"u8, 2, TableFlags.RowBackground | TableFlags.ScrollY | TableFlags.SizingFixedFit,
|
||||
new Vector2(-1, 12 * ImGui.GetTextLineHeightWithSpacing()));
|
||||
if (!table)
|
||||
return;
|
||||
|
|
@ -910,17 +909,17 @@ public class DebugTab : Window, ITab, IUiService
|
|||
|
||||
private void DrawStainTemplates()
|
||||
{
|
||||
using var mainTree = TreeNode("Staining Templates");
|
||||
using var mainTree = Im.Tree.Node("Staining Templates"u8);
|
||||
if (!mainTree)
|
||||
return;
|
||||
|
||||
using (var legacyTree = TreeNode("stainingtemplate.stm"))
|
||||
using (var legacyTree = Im.Tree.Node("stainingtemplate.stm"u8))
|
||||
{
|
||||
if (legacyTree)
|
||||
DrawStainTemplatesFile(_stains.LegacyStmFile);
|
||||
}
|
||||
|
||||
using (var gudTree = TreeNode("stainingtemplate_gud.stm"))
|
||||
using (var gudTree = Im.Tree.Node("stainingtemplate_gud.stm"u8))
|
||||
{
|
||||
if (gudTree)
|
||||
DrawStainTemplatesFile(_stains.GudStmFile);
|
||||
|
|
@ -931,12 +930,12 @@ public class DebugTab : Window, ITab, IUiService
|
|||
{
|
||||
foreach (var (key, data) in stmFile.Entries)
|
||||
{
|
||||
using var tree = TreeNode($"Template {key}");
|
||||
using var tree = Im.Tree.Node($"Template {key}");
|
||||
if (!tree)
|
||||
continue;
|
||||
|
||||
using var table = Table("##table", data.Colors.Length + data.Scalars.Length,
|
||||
ImGuiTableFlags.SizingFixedFit | ImGuiTableFlags.RowBg);
|
||||
using var table = Im.Table.Begin("##table"u8, data.Colors.Length + data.Scalars.Length,
|
||||
TableFlags.SizingFixedFit | TableFlags.RowBackground);
|
||||
if (!table)
|
||||
continue;
|
||||
|
||||
|
|
@ -974,7 +973,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
if (!enableShaderReplacementFixer)
|
||||
return;
|
||||
|
||||
using var table = Table("##ShaderReplacementFixer", 3, ImGuiTableFlags.RowBg | ImGuiTableFlags.SizingFixedFit,
|
||||
using var table = Im.Table.Begin("##ShaderReplacementFixer"u8, 3, TableFlags.RowBackground | TableFlags.SizingFixedFit,
|
||||
-Vector2.UnitX);
|
||||
if (!table)
|
||||
return;
|
||||
|
|
@ -1066,7 +1065,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
|
||||
DrawCopyableAddress("CharacterBase"u8, model);
|
||||
|
||||
using (var t1 = Table("##table", 2, ImGuiTableFlags.SizingFixedFit))
|
||||
using (var t1 = Im.Table.Begin("##table"u8, 2, TableFlags.SizingFixedFit))
|
||||
{
|
||||
if (t1)
|
||||
{
|
||||
|
|
@ -1079,7 +1078,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
}
|
||||
}
|
||||
|
||||
using var table = Table($"##{name}DrawTable", 5, ImGuiTableFlags.RowBg | ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin($"##{name}DrawTable", 5, TableFlags.RowBackground | TableFlags.SizingFixedFit);
|
||||
if (!table)
|
||||
return;
|
||||
|
||||
|
|
@ -1120,7 +1119,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
private string _crcInput = string.Empty;
|
||||
private FullPath _crcPath = FullPath.Empty;
|
||||
|
||||
private unsafe void DrawCrcCache()
|
||||
private void DrawCrcCache()
|
||||
{
|
||||
var header = ImUtf8.CollapsingHeader("CRC Cache"u8);
|
||||
if (!header)
|
||||
|
|
@ -1188,7 +1187,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
if (!header)
|
||||
return;
|
||||
|
||||
using var table = Table("##ProblemsTable", 6, ImGuiTableFlags.RowBg | ImGuiTableFlags.SizingFixedFit);
|
||||
using var table = Im.Table.Begin("##ProblemsTable"u8, 6, TableFlags.RowBackground | TableFlags.SizingFixedFit);
|
||||
if (!table)
|
||||
return;
|
||||
|
||||
|
|
@ -1240,10 +1239,7 @@ public class DebugTab : Window, ITab, IUiService
|
|||
ImUtf8.Text($"Is Cloud Synced? {_cloudTesterReturn}");
|
||||
|
||||
if (_cloudTesterError is not null)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed);
|
||||
ImUtf8.Text($"{_cloudTesterError}");
|
||||
}
|
||||
Im.Text($"{_cloudTesterError}", ImGuiColors.DalamudRed);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ public class RenderTargetDrawer(RenderTargetHdrEnabler renderTargetHdrEnabler, D
|
|||
+ record.Offset);
|
||||
if (texture != null)
|
||||
{
|
||||
using var color = Dalamud.Interface.Utility.Raii.ImRaii.PushColor(ImGuiCol.Text, ImGuiUtil.HalfBlendText(0xFF),
|
||||
using var color = ImGuiColor.Text.Push(ImGuiUtil.HalfBlendText(0xFF),
|
||||
texture->TextureFormat != record.OriginalTextureFormat);
|
||||
ImUtf8.Text($"{texture->TextureFormat}");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
using ImSharp;
|
||||
using OtterGui.Text;
|
||||
using Penumbra.Collections.Cache;
|
||||
using Penumbra.GameData.Enums;
|
||||
|
|
@ -90,10 +91,10 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
private static void DrawValues(in ShapeAttributeString shapeAttribute, ShapeAttributeHashSet set)
|
||||
{
|
||||
ImGui.TableNextColumn();
|
||||
|
||||
var disabledColor = Im.Style[ImGuiColor.TextDisabled];
|
||||
if (set.All is { } value)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ImGui.GetColorU32(ImGuiCol.TextDisabled), !value);
|
||||
using var color = ImGuiColor.Text.Push(disabledColor, !value);
|
||||
ImUtf8.Text("All, "u8);
|
||||
ImGui.SameLine(0, 0);
|
||||
}
|
||||
|
|
@ -103,7 +104,7 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
if (set[slot] is not { } value2)
|
||||
continue;
|
||||
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ImGui.GetColorU32(ImGuiCol.TextDisabled), !value2);
|
||||
using var color = ImGuiColor.Text.Push(disabledColor, !value2);
|
||||
ImUtf8.Text($"All {slot.ToName()}, ");
|
||||
ImGui.SameLine(0, 0);
|
||||
}
|
||||
|
|
@ -112,7 +113,7 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
{
|
||||
if (set[gr] is { } value3)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ImGui.GetColorU32(ImGuiCol.TextDisabled), !value3);
|
||||
using var color = ImGuiColor.Text.Push(disabledColor, !value3);
|
||||
ImUtf8.Text($"All {gr.ToName()}, ");
|
||||
ImGui.SameLine(0, 0);
|
||||
}
|
||||
|
|
@ -123,7 +124,7 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
if (set[slot, gr] is not { } value4)
|
||||
continue;
|
||||
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ImGui.GetColorU32(ImGuiCol.TextDisabled), !value4);
|
||||
using var color = ImGuiColor.Text.Push(disabledColor, !value4);
|
||||
ImUtf8.Text($"All {gr.ToName()} {slot.ToName()}, ");
|
||||
ImGui.SameLine(0, 0);
|
||||
}
|
||||
|
|
@ -138,7 +139,7 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
|
||||
if (set[slot, GenderRace.Unknown] != enabled)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ImGui.GetColorU32(ImGuiCol.TextDisabled), !enabled);
|
||||
using var color = ImGuiColor.Text.Push(disabledColor, !enabled);
|
||||
ImUtf8.Text($"{slot.ToName()} {id.Id:D4}, ");
|
||||
ImGui.SameLine(0, 0);
|
||||
}
|
||||
|
|
@ -153,7 +154,7 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
var gr = ShapeAttributeHashSet.GenderRaceValues[currentIndex];
|
||||
if (set[slot, gr] != enabled)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, ImGui.GetColorU32(ImGuiCol.TextDisabled), !enabled);
|
||||
using var color = ImGuiColor.Text.Push(disabledColor, !enabled);
|
||||
ImUtf8.Text($"{gr.ToName()} {slot.ToName()} #{id.Id:D4}, ");
|
||||
ImGui.SameLine(0, 0);
|
||||
}
|
||||
|
|
@ -186,7 +187,7 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
|
||||
ImGui.TableHeadersRow();
|
||||
|
||||
var disabledColor = ImGui.GetColorU32(ImGuiCol.TextDisabled);
|
||||
var disabledColor = Im.Style[ImGuiColor.TextDisabled];
|
||||
for (var i = 0; i < human.AsHuman->SlotCount; ++i)
|
||||
{
|
||||
ImUtf8.DrawTableColumn($"{(uint)i:D2}");
|
||||
|
|
@ -205,7 +206,7 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
foreach (var (idx, (shape, flag)) in model->ModelResourceHandle->Shapes.Index())
|
||||
{
|
||||
var disabled = (mask & (1u << flag)) is 0;
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, disabledColor, disabled);
|
||||
using var color = ImGuiColor.Text.Push(disabledColor, disabled);
|
||||
ImUtf8.Text(shape.AsSpan());
|
||||
ImGui.SameLine(0, 0);
|
||||
ImUtf8.Text(", "u8);
|
||||
|
|
@ -243,7 +244,7 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
|
||||
ImGui.TableHeadersRow();
|
||||
|
||||
var disabledColor = ImGui.GetColorU32(ImGuiCol.TextDisabled);
|
||||
var disabledColor = Im.Style[ImGuiColor.TextDisabled];
|
||||
for (var i = 0; i < human.AsHuman->SlotCount; ++i)
|
||||
{
|
||||
ImUtf8.DrawTableColumn($"{(uint)i:D2}");
|
||||
|
|
@ -262,7 +263,7 @@ public class ShapeInspector(ObjectManager objects, CollectionResolver resolver)
|
|||
foreach (var (idx, (attribute, flag)) in model->ModelResourceHandle->Attributes.Index())
|
||||
{
|
||||
var disabled = (mask & (1u << flag)) is 0;
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, disabledColor, disabled);
|
||||
using var color = ImGuiColor.Text.Push(disabledColor, disabled);
|
||||
ImUtf8.Text(attribute.AsSpan());
|
||||
ImGui.SameLine(0, 0);
|
||||
ImUtf8.Text(", "u8);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface.DragDrop;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
using ImSharp;
|
||||
using Lumina.Data.Files;
|
||||
using OtterGui.Text;
|
||||
using Penumbra.UI.Classes;
|
||||
|
|
@ -47,7 +48,7 @@ public class TexHeaderDrawer(IDragDropManager dragDrop) : Luna.IUiService
|
|||
|
||||
if (_exception != null)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Text, Colors.RegexWarningBorder);
|
||||
using var color = ImGuiColor.Text.Push(Colors.RegexWarningBorder);
|
||||
ImUtf8.TextWrapped($"Failure to load file:\n{_exception}");
|
||||
}
|
||||
else if (_tex != null)
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ public class ModsTab(
|
|||
}
|
||||
|
||||
var frameHeight = new Vector2(0, ImGui.GetFrameHeight());
|
||||
var frameColor = ImGui.GetColorU32(ImGuiCol.FrameBg);
|
||||
var frameColor = ImGuiColor.FrameBackground.Get().Color;
|
||||
using (var _ = ImRaii.Group())
|
||||
{
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ public class SettingsTab : ITab, IUiService
|
|||
/// </summary>
|
||||
private bool DrawPressEnterWarning(string newName, string old, float width, bool saved, bool selected)
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Button, Colors.PressEnterWarningBg);
|
||||
using var color = ImGuiColor.Button.Push(Colors.PressEnterWarningBg);
|
||||
var w = new Vector2(width, 0);
|
||||
var (text, valid) = CheckRootDirectoryPath(newName, old, selected);
|
||||
|
||||
|
|
@ -339,10 +339,9 @@ public class SettingsTab : ITab, IUiService
|
|||
using (ImRaii.Group())
|
||||
{
|
||||
ImGui.SetNextItemWidth(UiHelpers.InputTextMinusButton3);
|
||||
using (ImRaii.PushStyle(ImGuiStyleVar.FrameBorderSize, ImGuiHelpers.GlobalScale, !_modManager.Valid))
|
||||
using (var color = ImStyleBorder.Frame.Push(Colors.RegexWarningBorder, Im.Style.GlobalScale, !_modManager.Valid))
|
||||
{
|
||||
using var color = ImRaii.PushColor(ImGuiCol.Border, Colors.RegexWarningBorder)
|
||||
.Push(ImGuiCol.TextDisabled, Colors.RegexWarningBorder, !_modManager.Valid);
|
||||
color.Push(ImGuiColor.TextDisabled, Colors.RegexWarningBorder, !_modManager.Valid);
|
||||
save = ImGui.InputTextWithHint("##rootDirectory", "Enter Root Directory here (MANDATORY)...", ref _newModDirectory,
|
||||
RootDirectoryMaxLength, ImGuiInputTextFlags.EnterReturnsTrue);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue