mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
Add rename mod field.
This commit is contained in:
parent
e94cdaec46
commit
21a55b95d9
4 changed files with 117 additions and 12 deletions
|
|
@ -11,6 +11,7 @@ using Penumbra.Mods;
|
||||||
using Penumbra.Mods.Manager;
|
using Penumbra.Mods.Manager;
|
||||||
using Penumbra.Services;
|
using Penumbra.Services;
|
||||||
using Penumbra.UI.Classes;
|
using Penumbra.UI.Classes;
|
||||||
|
using Penumbra.UI.ModsTab;
|
||||||
using Penumbra.UI.ResourceWatcher;
|
using Penumbra.UI.ResourceWatcher;
|
||||||
using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs;
|
using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs;
|
||||||
|
|
||||||
|
|
@ -40,17 +41,18 @@ public class Configuration : IPluginConfiguration, ISavable
|
||||||
public bool HideUiWhenUiHidden { get; set; } = false;
|
public bool HideUiWhenUiHidden { get; set; } = false;
|
||||||
public bool UseDalamudUiTextureRedirection { get; set; } = true;
|
public bool UseDalamudUiTextureRedirection { get; set; } = true;
|
||||||
|
|
||||||
public bool UseCharacterCollectionInMainWindow { get; set; } = true;
|
public bool UseCharacterCollectionInMainWindow { get; set; } = true;
|
||||||
public bool UseCharacterCollectionsInCards { get; set; } = true;
|
public bool UseCharacterCollectionsInCards { get; set; } = true;
|
||||||
public bool UseCharacterCollectionInInspect { get; set; } = true;
|
public bool UseCharacterCollectionInInspect { get; set; } = true;
|
||||||
public bool UseCharacterCollectionInTryOn { get; set; } = true;
|
public bool UseCharacterCollectionInTryOn { get; set; } = true;
|
||||||
public bool UseOwnerNameForCharacterCollection { get; set; } = true;
|
public bool UseOwnerNameForCharacterCollection { get; set; } = true;
|
||||||
public bool UseNoModsInInspect { get; set; } = false;
|
public bool UseNoModsInInspect { get; set; } = false;
|
||||||
public bool HideChangedItemFilters { get; set; } = false;
|
public bool HideChangedItemFilters { get; set; } = false;
|
||||||
public bool ReplaceNonAsciiOnImport { get; set; } = false;
|
public bool ReplaceNonAsciiOnImport { get; set; } = false;
|
||||||
public bool HidePrioritiesInSelector { get; set; } = false;
|
public bool HidePrioritiesInSelector { get; set; } = false;
|
||||||
public bool HideRedrawBar { get; set; } = false;
|
public bool HideRedrawBar { get; set; } = false;
|
||||||
public int OptionGroupCollapsibleMin { get; set; } = 5;
|
public RenameField ShowRename { get; set; } = RenameField.BothDataPrio;
|
||||||
|
public int OptionGroupCollapsibleMin { get; set; } = 5;
|
||||||
|
|
||||||
public Vector2 MinimumSize = new(Constants.MinimumSizeX, Constants.MinimumSizeY);
|
public Vector2 MinimumSize = new(Constants.MinimumSizeX, Constants.MinimumSizeY);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
||||||
SubscribeRightClickMain(() => ClearQuickMove(1, _config.QuickMoveFolder2, () => {_config.QuickMoveFolder2 = string.Empty; _config.Save();}), 120);
|
SubscribeRightClickMain(() => ClearQuickMove(1, _config.QuickMoveFolder2, () => {_config.QuickMoveFolder2 = string.Empty; _config.Save();}), 120);
|
||||||
SubscribeRightClickMain(() => ClearQuickMove(2, _config.QuickMoveFolder3, () => {_config.QuickMoveFolder3 = string.Empty; _config.Save();}), 130);
|
SubscribeRightClickMain(() => ClearQuickMove(2, _config.QuickMoveFolder3, () => {_config.QuickMoveFolder3 = string.Empty; _config.Save();}), 130);
|
||||||
UnsubscribeRightClickLeaf(RenameLeaf);
|
UnsubscribeRightClickLeaf(RenameLeaf);
|
||||||
SubscribeRightClickLeaf(RenameLeafMod, 1000);
|
SetRenameSearchPath(_config.ShowRename);
|
||||||
AddButton(AddNewModButton, 0);
|
AddButton(AddNewModButton, 0);
|
||||||
AddButton(AddImportModButton, 1);
|
AddButton(AddImportModButton, 1);
|
||||||
AddButton(AddHelpButton, 2);
|
AddButton(AddHelpButton, 2);
|
||||||
|
|
@ -92,6 +92,37 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
||||||
OnCollectionChange(CollectionType.Current, null, _collectionManager.Active.Current, "");
|
OnCollectionChange(CollectionType.Current, null, _collectionManager.Active.Current, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetRenameSearchPath(RenameField value)
|
||||||
|
{
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
case RenameField.RenameSearchPath:
|
||||||
|
SubscribeRightClickLeaf(RenameLeafMod, 1000);
|
||||||
|
UnsubscribeRightClickLeaf(RenameMod);
|
||||||
|
break;
|
||||||
|
case RenameField.RenameData:
|
||||||
|
UnsubscribeRightClickLeaf(RenameLeafMod);
|
||||||
|
SubscribeRightClickLeaf(RenameMod, 1000);
|
||||||
|
break;
|
||||||
|
case RenameField.BothSearchPathPrio:
|
||||||
|
UnsubscribeRightClickLeaf(RenameLeafMod);
|
||||||
|
UnsubscribeRightClickLeaf(RenameMod);
|
||||||
|
SubscribeRightClickLeaf(RenameLeafMod, 1001);
|
||||||
|
SubscribeRightClickLeaf(RenameMod, 1000);
|
||||||
|
break;
|
||||||
|
case RenameField.BothDataPrio:
|
||||||
|
UnsubscribeRightClickLeaf(RenameLeafMod);
|
||||||
|
UnsubscribeRightClickLeaf(RenameMod);
|
||||||
|
SubscribeRightClickLeaf(RenameLeafMod, 1000);
|
||||||
|
SubscribeRightClickLeaf(RenameMod, 1001);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
UnsubscribeRightClickLeaf(RenameLeafMod);
|
||||||
|
UnsubscribeRightClickLeaf(RenameMod);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static readonly string[] ValidModExtensions =
|
private static readonly string[] ValidModExtensions =
|
||||||
[
|
[
|
||||||
".ttmp",
|
".ttmp",
|
||||||
|
|
@ -302,6 +333,22 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|
||||||
RenameLeaf(leaf);
|
RenameLeaf(leaf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RenameMod(ModFileSystem.Leaf leaf)
|
||||||
|
{
|
||||||
|
ImGui.Separator();
|
||||||
|
var currentName = leaf.Value.Name.Text;
|
||||||
|
if (ImGui.IsWindowAppearing())
|
||||||
|
ImGui.SetKeyboardFocusHere(0);
|
||||||
|
ImGui.TextUnformatted("Rename Mod:");
|
||||||
|
if (ImGui.InputText("##RenameMod", ref currentName, 256, ImGuiInputTextFlags.EnterReturnsTrue))
|
||||||
|
{
|
||||||
|
_modManager.DataEditor.ChangeModName(leaf.Value, currentName);
|
||||||
|
ImGui.CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGuiUtil.HoverTooltip("Enter a new name here to rename the changed mod.");
|
||||||
|
}
|
||||||
|
|
||||||
private void DeleteModButton(Vector2 size)
|
private void DeleteModButton(Vector2 size)
|
||||||
=> DeleteSelectionButton(size, _config.DeleteModModifier, "mod", "mods", _modManager.DeleteMod);
|
=> DeleteSelectionButton(size, _config.DeleteModModifier, "mod", "mods", _modManager.DeleteMod);
|
||||||
|
|
||||||
|
|
|
||||||
26
Penumbra/UI/ModsTab/RenameField.cs
Normal file
26
Penumbra/UI/ModsTab/RenameField.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
namespace Penumbra.UI.ModsTab;
|
||||||
|
|
||||||
|
public enum RenameField
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
RenameSearchPath,
|
||||||
|
RenameData,
|
||||||
|
BothSearchPathPrio,
|
||||||
|
BothDataPrio,
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class RenameFieldExtensions
|
||||||
|
{
|
||||||
|
public static (string Name, string Desc) GetData(this RenameField value)
|
||||||
|
=> value switch
|
||||||
|
{
|
||||||
|
RenameField.None => ("None", "Show no rename fields in the context menu for mods."),
|
||||||
|
RenameField.RenameSearchPath => ("Search Path", "Show only the search path / move field in the context menu for mods."),
|
||||||
|
RenameField.RenameData => ("Mod Name", "Show only the mod name field in the context menu for mods."),
|
||||||
|
RenameField.BothSearchPathPrio => ("Both (Focus Search Path)",
|
||||||
|
"Show both rename fields in the context menu for mods, but put the keyboard cursor on the search path field."),
|
||||||
|
RenameField.BothDataPrio => ("Both (Focus Mod Name)",
|
||||||
|
"Show both rename fields in the context menu for mods, but put the keyboard cursor on the mod name field"),
|
||||||
|
_ => (string.Empty, string.Empty),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -533,12 +533,42 @@ public class SettingsTab : ITab
|
||||||
"Instead of keeping the mod-selector in the Installed Mods tab a fixed width, this will let it scale with the total size of the Penumbra window.");
|
"Instead of keeping the mod-selector in the Installed Mods tab a fixed width, this will let it scale with the total size of the Penumbra window.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DrawRenameSettings()
|
||||||
|
{
|
||||||
|
ImGui.SetNextItemWidth(UiHelpers.InputTextWidth.X);
|
||||||
|
using (var combo = ImRaii.Combo("##renameSettings", _config.ShowRename.GetData().Name))
|
||||||
|
{
|
||||||
|
if (combo)
|
||||||
|
foreach (var value in Enum.GetValues<RenameField>())
|
||||||
|
{
|
||||||
|
var (name, desc) = value.GetData();
|
||||||
|
if (ImGui.Selectable(name, _config.ShowRename == value))
|
||||||
|
{
|
||||||
|
_config.ShowRename = value;
|
||||||
|
_selector.SetRenameSearchPath(value);
|
||||||
|
_config.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGuiUtil.HoverTooltip(desc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.SameLine();
|
||||||
|
const string tt =
|
||||||
|
"Select which of the two renaming input fields are visible when opening the right-click context menu of a mod in the mod selector.";
|
||||||
|
ImGuiComponents.HelpMarker(tt);
|
||||||
|
ImGui.SameLine();
|
||||||
|
ImGui.TextUnformatted("Rename Fields in Mod Context Menu");
|
||||||
|
ImGuiUtil.HoverTooltip(tt);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary> Draw all settings pertaining to the mod selector. </summary>
|
/// <summary> Draw all settings pertaining to the mod selector. </summary>
|
||||||
private void DrawModSelectorSettings()
|
private void DrawModSelectorSettings()
|
||||||
{
|
{
|
||||||
DrawFolderSortType();
|
DrawFolderSortType();
|
||||||
DrawAbsoluteSizeSelector();
|
DrawAbsoluteSizeSelector();
|
||||||
DrawRelativeSizeSelector();
|
DrawRelativeSizeSelector();
|
||||||
|
DrawRenameSettings();
|
||||||
Checkbox("Open Folders by Default", "Whether to start with all folders collapsed or expanded in the mod selector.",
|
Checkbox("Open Folders by Default", "Whether to start with all folders collapsed or expanded in the mod selector.",
|
||||||
_config.OpenFoldersByDefault, v =>
|
_config.OpenFoldersByDefault, v =>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue