mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 10:17:22 +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.BC2 => DXGIFormat.BC2UNorm,
|
||||
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)0x6330 => DXGIFormat.BC6HUF16, // TODO: upstream to Lumina
|
||||
TexFile.TextureFormat.BC7 => DXGIFormat.BC7UNorm,
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ using OtterGui.Filesystem;
|
|||
using OtterGui.FileSystem.Selector;
|
||||
using OtterGui.Raii;
|
||||
using OtterGui.Services;
|
||||
using OtterGui.Text;
|
||||
using OtterGui.Text.Widget;
|
||||
using Penumbra.Api.Enums;
|
||||
using Penumbra.Collections;
|
||||
using Penumbra.Collections.Manager;
|
||||
|
|
@ -84,8 +86,8 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
|||
_communicator.ModDiscoveryFinished.Subscribe(RestoreLastSelection, ModDiscoveryFinished.Priority.ModFileSystemSelector);
|
||||
SetFilterDirty();
|
||||
SelectionChanged += OnSelectionChanged;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void SetRenameSearchPath(RenameField value)
|
||||
{
|
||||
switch (value)
|
||||
|
|
@ -703,8 +705,6 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
|||
|
||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing,
|
||||
ImGui.GetStyle().ItemSpacing with { Y = 3 * UiHelpers.Scale });
|
||||
var flags = (int)_stateFilter;
|
||||
|
||||
|
||||
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));
|
||||
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))
|
||||
{
|
||||
_stateFilter = (ModFilter)flags;
|
||||
if (TriStateCheckbox.Instance.Draw(name, ref _stateFilter, onFlag, offFlag))
|
||||
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 static string ToName(this ModFilter filter)
|
||||
=> filter switch
|
||||
{
|
||||
ModFilter.Enabled => "Enabled",
|
||||
ModFilter.Disabled => "Disabled",
|
||||
ModFilter.Favorite => "Favorite",
|
||||
ModFilter.NotFavorite => "No Favorite",
|
||||
ModFilter.NoConflict => "No Conflicts",
|
||||
ModFilter.SolvedConflict => "Solved Conflicts",
|
||||
ModFilter.UnsolvedConflict => "Unsolved Conflicts",
|
||||
ModFilter.HasNoMetaManipulations => "No Meta Manipulations",
|
||||
ModFilter.HasMetaManipulations => "Meta Manipulations",
|
||||
ModFilter.HasNoFileSwaps => "No File Swaps",
|
||||
ModFilter.HasFileSwaps => "File Swaps",
|
||||
ModFilter.HasNoConfig => "No Configuration",
|
||||
ModFilter.HasConfig => "Configuration",
|
||||
ModFilter.HasNoFiles => "No Files",
|
||||
ModFilter.HasFiles => "Files",
|
||||
ModFilter.IsNew => "Newly Imported",
|
||||
ModFilter.NotNew => "Not Newly Imported",
|
||||
ModFilter.Inherited => "Inherited Configuration",
|
||||
ModFilter.Uninherited => "Own Configuration",
|
||||
ModFilter.Undefined => "Not Configured",
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(filter), filter, null),
|
||||
};
|
||||
public static IReadOnlyList<(ModFilter On, ModFilter Off, string Name)> TriStatePairs =
|
||||
[
|
||||
(ModFilter.Enabled, ModFilter.Disabled, "Enabled"),
|
||||
(ModFilter.IsNew, ModFilter.NotNew, "Newly Imported"),
|
||||
(ModFilter.Favorite, ModFilter.NotFavorite, "Favorite"),
|
||||
(ModFilter.HasConfig, ModFilter.HasNoConfig, "Has Options"),
|
||||
(ModFilter.HasFiles, ModFilter.HasNoFiles, "Has Redirections"),
|
||||
(ModFilter.HasMetaManipulations, ModFilter.HasNoMetaManipulations, "Has Meta Manipulations"),
|
||||
(ModFilter.HasFileSwaps, ModFilter.HasNoFileSwaps, "Has File Swaps"),
|
||||
];
|
||||
|
||||
public static IReadOnlyList<IReadOnlyList<(ModFilter Filter, string Name)>> Groups =
|
||||
[
|
||||
[
|
||||
(ModFilter.NoConflict, "Has No Conflicts"),
|
||||
(ModFilter.SolvedConflict, "Has Solved Conflicts"),
|
||||
(ModFilter.UnsolvedConflict, "Has Unsolved Conflicts"),
|
||||
],
|
||||
[
|
||||
(ModFilter.Undefined, "Not Configured"),
|
||||
(ModFilter.Inherited, "Inherited Configuration"),
|
||||
(ModFilter.Uninherited, "Own Configuration"),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue