Added skin file drag and drop sorting (:

This commit is contained in:
MayNL
2026-07-02 14:49:13 -04:00
parent 626af233a1
commit 30671812c5
+20 -3
View File
@@ -687,12 +687,12 @@ namespace PckStudio.Controls
node.ImageKey = node.SelectedImageKey = GetNodeIconKey(asset, resetNodes); node.ImageKey = node.SelectedImageKey = GetNodeIconKey(asset, resetNodes);
} }
treeViewMain.Sort();
TreeNode[] selectedNodes = treeViewMain.FindPath(selectedNodeText); TreeNode[] selectedNodes = treeViewMain.FindPath(selectedNodeText);
if (selectedNodes.Length > 0) if (selectedNodes.Length > 0)
{ {
treeViewMain.SelectedNode = selectedNodes[0]; treeViewMain.SelectedNode = selectedNodes[0];
} }
treeViewMain.Sort();
} }
private string GetDefaultSkinNodeIconKey(SkinANIM anim) private string GetDefaultSkinNodeIconKey(SkinANIM anim)
@@ -1254,6 +1254,13 @@ namespace PckStudio.Controls
return; return;
} }
bool targetNodeIsFile = targetNode.TryGetTagData(out PckAsset targetAsset);
bool draggedNodeIsFile = draggedNode.TryGetTagData(out PckAsset draggedAsset);
bool draggedNodeIsSkinAsset = draggedNodeIsFile && (draggedAsset.Type == PckAssetType.SkinFile || draggedAsset.Type == PckAssetType.CapeFile);
bool targetNodeIsSkinAsset = targetNodeIsFile && (targetAsset.Type == PckAssetType.SkinFile || targetAsset.Type == PckAssetType.CapeFile);
if(!(draggedNodeIsSkinAsset && targetNodeIsSkinAsset))
{
if (targetNode.Parent == null && isTargetPckFile && draggedNode.Parent == null) if (targetNode.Parent == null && isTargetPckFile && draggedNode.Parent == null)
{ {
Debug.WriteLine("target node is file and is in the root... nothing done."); Debug.WriteLine("target node is file and is in the root... nothing done.");
@@ -1265,13 +1272,23 @@ namespace PckStudio.Controls
Debug.WriteLine("target node and dragged node have the same parent... nothing done."); Debug.WriteLine("target node and dragged node have the same parent... nothing done.");
return; return;
} }
}
Debug.WriteLine($"Target drop location is {(isTargetPckFile ? "file" : "folder")}."); Debug.WriteLine($"Target drop location is {(isTargetPckFile ? "file" : "folder")}.");
// Retrieve the node that was dragged.
if (draggedNode.TryGetTagData(out PckAsset draggedAsset) &&
string selectedNodePath = ""; string selectedNodePath = "";
if (draggedNodeIsSkinAsset && targetNodeIsSkinAsset)
{
// I overthought this for so long, I guess this works lol - May
int draggedIndex = EditorValue.File.IndexOfAsset(draggedAsset);
int targetIndex = EditorValue.File.IndexOfAsset(targetAsset);
EditorValue.File.RemoveAsset(draggedAsset);
EditorValue.File.InsertAsset(targetIndex, draggedAsset);
selectedNodePath = draggedAsset.Filename;
}
if (draggedNodeIsFile &&
targetNode.FullPath != draggedAsset.Filename) targetNode.FullPath != draggedAsset.Filename)
{ {
Debug.WriteLine(draggedAsset.Filename + " was dropped onto " + targetNode.FullPath); Debug.WriteLine(draggedAsset.Filename + " was dropped onto " + targetNode.FullPath);