From 61d29d9491199553b7c04bed760e1310e2d049dd Mon Sep 17 00:00:00 2001 From: MayNL Date: Thu, 2 Jul 2026 23:20:14 -0400 Subject: [PATCH] Added Move Up/Down content menu buttons for Skins --- .../Controls/Editor/PckEditor.Designer.cs | 36 +++++++++++-- PCK-Studio/Controls/Editor/PckEditor.cs | 54 ++++++++++++++++--- PCK-Studio/Controls/Editor/PckEditor.resx | 51 ++++++++++++++---- 3 files changed, 121 insertions(+), 20 deletions(-) diff --git a/PCK-Studio/Controls/Editor/PckEditor.Designer.cs b/PCK-Studio/Controls/Editor/PckEditor.Designer.cs index b60b55bd..3a182c2c 100644 --- a/PCK-Studio/Controls/Editor/PckEditor.Designer.cs +++ b/PCK-Studio/Controls/Editor/PckEditor.Designer.cs @@ -70,6 +70,8 @@ namespace PckStudio.Controls this.importFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.as3DSTextureFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.moveUpStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); this.miscFunctionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.setFileTypeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -99,6 +101,7 @@ namespace PckStudio.Controls this.exportIconToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.fullBodyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.croppedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.convertToFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.extractToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); this.cloneFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -109,7 +112,7 @@ namespace PckStudio.Controls this.addMultipleEntriesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.BigEndianCheckBox = new MetroFramework.Controls.MetroCheckBox(); this.previewPictureBox = new PckStudio.ToolboxItems.InterpolationPictureBox(); - this.convertToFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveDownStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); logoPictureBox = new System.Windows.Forms.PictureBox(); ((System.ComponentModel.ISupportInitialize)(logoPictureBox)).BeginInit(); this.ParametersTabControl.SuspendLayout(); @@ -362,6 +365,9 @@ namespace PckStudio.Controls this.createToolStripMenuItem, this.importToolStripMenuItem, this.exportToolStripMenuItem, + this.toolStripSeparator1, + this.moveUpStripMenuItem, + this.moveDownStripMenuItem, this.toolStripSeparator5, this.miscFunctionsToolStripMenuItem, this.extractToolStripMenuItem, @@ -474,6 +480,17 @@ namespace PckStudio.Controls resources.ApplyResources(this.as3DSTextureFileToolStripMenuItem, "as3DSTextureFileToolStripMenuItem"); this.as3DSTextureFileToolStripMenuItem.Click += new System.EventHandler(this.as3DSTextureFileToolStripMenuItem_Click); // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); + // + // moveUpStripMenuItem + // + this.moveUpStripMenuItem.Name = "moveUpStripMenuItem"; + resources.ApplyResources(this.moveUpStripMenuItem, "moveUpStripMenuItem"); + this.moveUpStripMenuItem.Click += new System.EventHandler(this.moveUpStripMenuItem_Click); + // // toolStripSeparator5 // this.toolStripSeparator5.Name = "toolStripSeparator5"; @@ -676,6 +693,12 @@ namespace PckStudio.Controls resources.ApplyResources(this.croppedToolStripMenuItem, "croppedToolStripMenuItem"); this.croppedToolStripMenuItem.Click += new System.EventHandler(this.croppedToolStripMenuItem_Click); // + // convertToFolderToolStripMenuItem + // + this.convertToFolderToolStripMenuItem.Name = "convertToFolderToolStripMenuItem"; + resources.ApplyResources(this.convertToFolderToolStripMenuItem, "convertToFolderToolStripMenuItem"); + this.convertToFolderToolStripMenuItem.Click += new System.EventHandler(this.convertToFolderToolStripMenuItem_Click); + // // extractToolStripMenuItem // resources.ApplyResources(this.extractToolStripMenuItem, "extractToolStripMenuItem"); @@ -742,11 +765,11 @@ namespace PckStudio.Controls this.previewPictureBox.Name = "previewPictureBox"; this.previewPictureBox.TabStop = false; // - // convertToFolderToolStripMenuItem + // moveDownStripMenuItem // - this.convertToFolderToolStripMenuItem.Name = "convertToFolderToolStripMenuItem"; - resources.ApplyResources(this.convertToFolderToolStripMenuItem, "convertToFolderToolStripMenuItem"); - this.convertToFolderToolStripMenuItem.Click += new System.EventHandler(this.convertToFolderToolStripMenuItem_Click); + this.moveDownStripMenuItem.Name = "moveDownStripMenuItem"; + resources.ApplyResources(this.moveDownStripMenuItem, "moveDownStripMenuItem"); + this.moveDownStripMenuItem.Click += new System.EventHandler(this.moveDownStripMenuItem_Click); // // PckEditor // @@ -855,5 +878,8 @@ namespace PckStudio.Controls private ToolStripMenuItem croppedToolStripMenuItem; private ToolStripMenuItem addOFFSETParameterToolStripMenuItem; private ToolStripMenuItem convertToFolderToolStripMenuItem; + private ToolStripSeparator toolStripSeparator1; + private ToolStripMenuItem moveUpStripMenuItem; + private ToolStripMenuItem moveDownStripMenuItem; } } \ No newline at end of file diff --git a/PCK-Studio/Controls/Editor/PckEditor.cs b/PCK-Studio/Controls/Editor/PckEditor.cs index 35ea98ff..0e6fa509 100644 --- a/PCK-Studio/Controls/Editor/PckEditor.cs +++ b/PCK-Studio/Controls/Editor/PckEditor.cs @@ -1191,6 +1191,15 @@ namespace PckStudio.Controls treeViewMain.SelectedNode = selectedNodes[0]; } + private void MovePckAsset(PckAsset movingAsset, PckAsset targetAsset) + { + // I overthought this for so long, I guess this works lol - May + int targetIndex = EditorValue.File.IndexOfAsset(targetAsset); + + EditorValue.File.RemoveAsset(movingAsset); + EditorValue.File.InsertAsset(targetIndex, movingAsset); + } + private void treeViewMain_DragDrop(object sender, DragEventArgs e) { // Retrieve the client coordinates of the drop location. @@ -1280,12 +1289,7 @@ namespace PckStudio.Controls 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); + MovePckAsset(draggedAsset, targetAsset); selectedNodePath = draggedAsset.Filename; } if (draggedNodeIsFile && @@ -2604,6 +2608,8 @@ namespace PckStudio.Controls toolStripSeparator6.Visible = false; exportIconToolStripMenuItem.Visible = false; convertToFolderToolStripMenuItem.Visible = false; + moveDownStripMenuItem.Visible = false; + moveUpStripMenuItem.Visible = false; if (treeViewMain?.SelectedNode.TryGetTagData(out PckAsset asset) ?? false) { @@ -2619,10 +2625,16 @@ namespace PckStudio.Controls case PckAssetType.SkinFile: exportToolStripMenuItem.Visible = true; + moveDownStripMenuItem.Visible = true; // allow for skin sorting + moveUpStripMenuItem.Visible = true; + exportIconToolStripMenuItem.Visible = Settings.Default.UseCustomSkinIcons; // only enable if setting is true, no point in exporting custom icons otherwise break; case PckAssetType.CapeFile: exportIconToolStripMenuItem.Visible = Settings.Default.UseCustomCapeIcons; + + moveDownStripMenuItem.Visible = true; // allow for cape sorting + moveUpStripMenuItem.Visible = true; break; case PckAssetType.TextureFile: generateMipMapTextureToolStripMenuItem1.Visible = true; @@ -2714,5 +2726,35 @@ namespace PckStudio.Controls } } } + + private void moveUpStripMenuItem_Click(object sender, EventArgs e) + { + if (treeViewMain.SelectedNode is TreeNode selectedNode && selectedNode.Tag is PckAsset selectedAsset) + { + int index = EditorValue.File.IndexOfAsset(selectedAsset); + if (index == 0 || selectedNode.Index == 0) + return; + + MovePckAsset(selectedAsset, EditorValue.File.GetAssets().ElementAt(index - 1)); + _wasModified = true; + BuildMainTreeView(); + SelectNodeByPath(selectedAsset.Filename); + } + } + + private void moveDownStripMenuItem_Click(object sender, EventArgs e) + { + if (treeViewMain.SelectedNode is TreeNode selectedNode && selectedNode.Tag is PckAsset selectedAsset) + { + int index = EditorValue.File.IndexOfAsset(selectedAsset); + if (index == EditorValue.File.AssetCount || selectedNode == selectedNode.Parent.LastNode) + return; + + MovePckAsset(selectedAsset, EditorValue.File.GetAssets().ElementAt(EditorValue.File.IndexOfAsset(selectedAsset) + 1)); + _wasModified = true; + BuildMainTreeView(); + SelectNodeByPath(selectedAsset.Filename); + } + } } } \ No newline at end of file diff --git a/PCK-Studio/Controls/Editor/PckEditor.resx b/PCK-Studio/Controls/Editor/PckEditor.resx index 8c9b6f4b..952b935d 100644 --- a/PCK-Studio/Controls/Editor/PckEditor.resx +++ b/PCK-Studio/Controls/Editor/PckEditor.resx @@ -912,7 +912,7 @@ True - 76, 42 + 76, 36 0, 0 @@ -957,7 +957,7 @@ False - 215, 12 + 215, 6 146, 20 @@ -1002,7 +1002,7 @@ False - 215, 44 + 215, 38 146, 20 @@ -1026,7 +1026,7 @@ Bottom, Right - 215, 70 + 215, 64 146, 33 @@ -1059,7 +1059,7 @@ True - 138, -65 + 138, -71 0, 0 @@ -1407,6 +1407,21 @@ Export + + 177, 6 + + + 180, 22 + + + Move Up + + + 180, 22 + + + Move Down + 177, 6 @@ -1644,7 +1659,7 @@ Delete - 181, 236 + 181, 286 contextMenuPCKEntries @@ -1912,6 +1927,18 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + toolStripSeparator1 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + moveUpStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + toolStripSeparator5 @@ -2086,6 +2113,12 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + convertToFolderToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + extractToolStripMenuItem @@ -2134,10 +2167,10 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - convertToFolderToolStripMenuItem + + moveDownStripMenuItem - + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089