A bunch of filesystem fixes.

This commit is contained in:
Ottermandias 2022-05-11 20:58:21 +02:00
parent 0b9a48a485
commit f0af9f1274
4 changed files with 16 additions and 7 deletions

@ -1 +1 @@
Subproject commit 2539675a1bff56088ea7be1f6ad9da2f20115032 Subproject commit dd26a7f416106a5bed4ea68c500dfcd5c0818d59

View file

@ -71,9 +71,9 @@ public readonly struct FullPath : IComparable, IEquatable< FullPath >
public int CompareTo( object? obj ) public int CompareTo( object? obj )
=> obj switch => obj switch
{ {
FullPath p => InternalName.CompareTo( p.InternalName ), FullPath p => InternalName?.CompareTo( p.InternalName ) ?? -1,
FileInfo f => string.Compare( FullName, f.FullName, StringComparison.InvariantCultureIgnoreCase ), FileInfo f => string.Compare( FullName, f.FullName, StringComparison.InvariantCultureIgnoreCase ),
Utf8String u => InternalName.CompareTo( u ), Utf8String u => InternalName?.CompareTo( u ) ?? -1,
string s => string.Compare( FullName, s, StringComparison.InvariantCultureIgnoreCase ), string s => string.Compare( FullName, s, StringComparison.InvariantCultureIgnoreCase ),
_ => -1, _ => -1,
}; };

View file

@ -68,7 +68,7 @@ public sealed class ModFileSystem : FileSystem< Mod >, IDisposable
if( type.HasFlag( MetaChangeType.Name ) && oldName != null ) if( type.HasFlag( MetaChangeType.Name ) && oldName != null )
{ {
var old = oldName.FixName(); var old = oldName.FixName();
if( Find( old, out var child ) ) if( Find( old, out var child ) && child is not Folder)
{ {
Rename( child, mod.Name.Text ); Rename( child, mod.Name.Text );
} }
@ -117,7 +117,7 @@ public sealed class ModFileSystem : FileSystem< Mod >, IDisposable
private static (string, bool) SaveMod( Mod mod, string fullPath ) private static (string, bool) SaveMod( Mod mod, string fullPath )
{ {
var regex = new Regex( $@"^{Regex.Escape( ModToName( mod ) )}( \(\d+\))?" ); var regex = new Regex( $@"^{Regex.Escape( ModToName( mod ) )}( \(\d+\))?$" );
// Only save pairs with non-default paths. // Only save pairs with non-default paths.
if( regex.IsMatch( fullPath ) ) if( regex.IsMatch( fullPath ) )
{ {

View file

@ -5,6 +5,7 @@ using System.IO;
using System.Numerics; using System.Numerics;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Interface.Components; using Dalamud.Interface.Components;
using Dalamud.Logging;
using Dalamud.Memory; using Dalamud.Memory;
using ImGuiNET; using ImGuiNET;
using OtterGui; using OtterGui;
@ -44,9 +45,16 @@ public partial class ConfigWindow
if( Input.Text( "Mod Path", Input.Path, Input.None, _leaf.FullName(), out var newPath, 256, if( Input.Text( "Mod Path", Input.Path, Input.None, _leaf.FullName(), out var newPath, 256,
_window._inputTextWidth.X ) ) _window._inputTextWidth.X ) )
{
try
{ {
_window._penumbra.ModFileSystem.RenameAndMove( _leaf, newPath ); _window._penumbra.ModFileSystem.RenameAndMove( _leaf, newPath );
} }
catch( Exception e )
{
PluginLog.Warning( e.Message );
}
}
ImGui.Dummy( _window._defaultSpace ); ImGui.Dummy( _window._defaultSpace );
AddOptionGroup.Draw( _window, _mod ); AddOptionGroup.Draw( _window, _mod );
@ -138,6 +146,7 @@ public partial class ConfigWindow
_window.ModEditPopup.ChangeOption( -1, 0 ); _window.ModEditPopup.ChangeOption( -1, 0 );
_window.ModEditPopup.IsOpen = true; _window.ModEditPopup.IsOpen = true;
} }
ImGui.SameLine(); ImGui.SameLine();
fileExists = File.Exists( _mod.DefaultFile ); fileExists = File.Exists( _mod.DefaultFile );
tt = fileExists tt = fileExists