mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
Improve mod filters.
This commit is contained in:
parent
2a7d2ef0d5
commit
176001195b
4 changed files with 41 additions and 35 deletions
2
OtterGui
2
OtterGui
|
|
@ -1 +1 @@
|
||||||
Subproject commit 17bd4b75b6d7750c92b65caf09715886d4df57cf
|
Subproject commit 3e6b085749741f35dd6732c33d0720c6a51ebb97
|
||||||
|
|
@ -204,7 +204,7 @@ public static class TexFileParser
|
||||||
TexFile.TextureFormat.BC1 => DXGIFormat.BC1UNorm,
|
TexFile.TextureFormat.BC1 => DXGIFormat.BC1UNorm,
|
||||||
TexFile.TextureFormat.BC2 => DXGIFormat.BC2UNorm,
|
TexFile.TextureFormat.BC2 => DXGIFormat.BC2UNorm,
|
||||||
TexFile.TextureFormat.BC3 => DXGIFormat.BC3UNorm,
|
TexFile.TextureFormat.BC3 => DXGIFormat.BC3UNorm,
|
||||||
(TexFile.TextureFormat)0x6120 => DXGIFormat.BC4UNorm, // TODO: upstream to Lumina
|
(TexFile.TextureFormat)0x6120 => DXGIFormat.BC4UNorm, // TODO: upstream to Lumina
|
||||||
TexFile.TextureFormat.BC5 => DXGIFormat.BC5UNorm,
|
TexFile.TextureFormat.BC5 => DXGIFormat.BC5UNorm,
|
||||||
(TexFile.TextureFormat)0x6330 => DXGIFormat.BC6HUF16, // TODO: upstream to Lumina
|
(TexFile.TextureFormat)0x6330 => DXGIFormat.BC6HUF16, // TODO: upstream to Lumina
|
||||||
TexFile.TextureFormat.BC7 => DXGIFormat.BC7UNorm,
|
TexFile.TextureFormat.BC7 => DXGIFormat.BC7UNorm,
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ using OtterGui.Filesystem;
|
||||||
using OtterGui.FileSystem.Selector;
|
using OtterGui.FileSystem.Selector;
|
||||||
using OtterGui.Raii;
|
using OtterGui.Raii;
|
||||||
using OtterGui.Services;
|
using OtterGui.Services;
|
||||||
|
using OtterGui.Text;
|
||||||
|
using OtterGui.Text.Widget;
|
||||||
using Penumbra.Api.Enums;
|
using Penumbra.Api.Enums;
|
||||||
using Penumbra.Collections;
|
using Penumbra.Collections;
|
||||||
using Penumbra.Collections.Manager;
|
using Penumbra.Collections.Manager;
|
||||||
|
|
@ -84,8 +86,8 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
||||||
_communicator.ModDiscoveryFinished.Subscribe(RestoreLastSelection, ModDiscoveryFinished.Priority.ModFileSystemSelector);
|
_communicator.ModDiscoveryFinished.Subscribe(RestoreLastSelection, ModDiscoveryFinished.Priority.ModFileSystemSelector);
|
||||||
SetFilterDirty();
|
SetFilterDirty();
|
||||||
SelectionChanged += OnSelectionChanged;
|
SelectionChanged += OnSelectionChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetRenameSearchPath(RenameField value)
|
public void SetRenameSearchPath(RenameField value)
|
||||||
{
|
{
|
||||||
switch (value)
|
switch (value)
|
||||||
|
|
@ -703,8 +705,6 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
||||||
|
|
||||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing,
|
using var style = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing,
|
||||||
ImGui.GetStyle().ItemSpacing with { Y = 3 * UiHelpers.Scale });
|
ImGui.GetStyle().ItemSpacing with { Y = 3 * UiHelpers.Scale });
|
||||||
var flags = (int)_stateFilter;
|
|
||||||
|
|
||||||
|
|
||||||
if (ImGui.Checkbox("Everything", ref everything))
|
if (ImGui.Checkbox("Everything", ref everything))
|
||||||
{
|
{
|
||||||
|
|
@ -713,12 +713,19 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui.Dummy(new Vector2(0, 5 * UiHelpers.Scale));
|
ImGui.Dummy(new Vector2(0, 5 * UiHelpers.Scale));
|
||||||
foreach (ModFilter flag in Enum.GetValues(typeof(ModFilter)))
|
foreach (var (onFlag, offFlag, name) in ModFilterExtensions.TriStatePairs)
|
||||||
{
|
{
|
||||||
if (ImGui.CheckboxFlags(flag.ToName(), ref flags, (int)flag))
|
if (TriStateCheckbox.Instance.Draw(name, ref _stateFilter, onFlag, offFlag))
|
||||||
{
|
|
||||||
_stateFilter = (ModFilter)flags;
|
|
||||||
SetFilterDirty();
|
SetFilterDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var group in ModFilterExtensions.Groups)
|
||||||
|
{
|
||||||
|
ImGui.Separator();
|
||||||
|
foreach (var (flag, name) in group)
|
||||||
|
{
|
||||||
|
if (ImUtf8.Checkbox(name, ref _stateFilter, flag))
|
||||||
|
SetFilterDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,29 +29,28 @@ public static class ModFilterExtensions
|
||||||
{
|
{
|
||||||
public const ModFilter UnfilteredStateMods = (ModFilter)((1 << 20) - 1);
|
public const ModFilter UnfilteredStateMods = (ModFilter)((1 << 20) - 1);
|
||||||
|
|
||||||
public static string ToName(this ModFilter filter)
|
public static IReadOnlyList<(ModFilter On, ModFilter Off, string Name)> TriStatePairs =
|
||||||
=> filter switch
|
[
|
||||||
{
|
(ModFilter.Enabled, ModFilter.Disabled, "Enabled"),
|
||||||
ModFilter.Enabled => "Enabled",
|
(ModFilter.IsNew, ModFilter.NotNew, "Newly Imported"),
|
||||||
ModFilter.Disabled => "Disabled",
|
(ModFilter.Favorite, ModFilter.NotFavorite, "Favorite"),
|
||||||
ModFilter.Favorite => "Favorite",
|
(ModFilter.HasConfig, ModFilter.HasNoConfig, "Has Options"),
|
||||||
ModFilter.NotFavorite => "No Favorite",
|
(ModFilter.HasFiles, ModFilter.HasNoFiles, "Has Redirections"),
|
||||||
ModFilter.NoConflict => "No Conflicts",
|
(ModFilter.HasMetaManipulations, ModFilter.HasNoMetaManipulations, "Has Meta Manipulations"),
|
||||||
ModFilter.SolvedConflict => "Solved Conflicts",
|
(ModFilter.HasFileSwaps, ModFilter.HasNoFileSwaps, "Has File Swaps"),
|
||||||
ModFilter.UnsolvedConflict => "Unsolved Conflicts",
|
];
|
||||||
ModFilter.HasNoMetaManipulations => "No Meta Manipulations",
|
|
||||||
ModFilter.HasMetaManipulations => "Meta Manipulations",
|
public static IReadOnlyList<IReadOnlyList<(ModFilter Filter, string Name)>> Groups =
|
||||||
ModFilter.HasNoFileSwaps => "No File Swaps",
|
[
|
||||||
ModFilter.HasFileSwaps => "File Swaps",
|
[
|
||||||
ModFilter.HasNoConfig => "No Configuration",
|
(ModFilter.NoConflict, "Has No Conflicts"),
|
||||||
ModFilter.HasConfig => "Configuration",
|
(ModFilter.SolvedConflict, "Has Solved Conflicts"),
|
||||||
ModFilter.HasNoFiles => "No Files",
|
(ModFilter.UnsolvedConflict, "Has Unsolved Conflicts"),
|
||||||
ModFilter.HasFiles => "Files",
|
],
|
||||||
ModFilter.IsNew => "Newly Imported",
|
[
|
||||||
ModFilter.NotNew => "Not Newly Imported",
|
(ModFilter.Undefined, "Not Configured"),
|
||||||
ModFilter.Inherited => "Inherited Configuration",
|
(ModFilter.Inherited, "Inherited Configuration"),
|
||||||
ModFilter.Uninherited => "Own Configuration",
|
(ModFilter.Uninherited, "Own Configuration"),
|
||||||
ModFilter.Undefined => "Not Configured",
|
],
|
||||||
_ => throw new ArgumentOutOfRangeException(nameof(filter), filter, null),
|
];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue