Added Extract PCK Contents menu tool

This commit is contained in:
MayNL
2026-06-29 11:20:24 -04:00
parent 3fd36696eb
commit f32f740b53
4 changed files with 61 additions and 5 deletions
+30 -5
View File
@@ -1694,6 +1694,33 @@ namespace PckStudio.Controls
} }
} }
public void extractEntirePCK()
{
OpenFolderDialog dialog = new OpenFolderDialog();
dialog.Title = @"Select destination folder";
if (dialog.ShowDialog(Handle) == true)
{
foreach (TreeNode node in treeViewMain.Nodes)
{
if(node == null)
continue;
if (node.Tag == null)
{
extractFolder(dialog.ResultPath, node);
}
else if (node.TryGetTagData(out PckAsset asset))
{
extractFile(Path.Combine(dialog.ResultPath, Path.GetFileName(asset.Filename)), asset);
}
}
// Verification that file extraction path was successful
MessageBox.Show(this, $"{TitleName} successfully extracted");
}
}
private void extractToolStripMenuItem_Click(object sender, EventArgs e) private void extractToolStripMenuItem_Click(object sender, EventArgs e)
{ {
TreeNode node = treeViewMain.SelectedNode; TreeNode node = treeViewMain.SelectedNode;
@@ -1711,7 +1738,7 @@ namespace PckStudio.Controls
dialog.Title = @"Select destination folder"; dialog.Title = @"Select destination folder";
if (dialog.ShowDialog(Handle) == true) if (dialog.ShowDialog(Handle) == true)
extractFolder(dialog.ResultPath); extractFolder(dialog.ResultPath, node);
} }
else if (node.TryGetTagData(out PckAsset asset)) else if (node.TryGetTagData(out PckAsset asset))
{ {
@@ -1734,10 +1761,8 @@ namespace PckStudio.Controls
MessageBox.Show(this, $"\"{node.Text}\" successfully extracted"); MessageBox.Show(this, $"\"{node.Text}\" successfully extracted");
} }
private void extractFolder(string outPath) private void extractFolder(string outPath, TreeNode node)
{ {
TreeNode node = treeViewMain.SelectedNode;
string selectedFolder = node.FullPath; string selectedFolder = node.FullPath;
foreach (PckAsset asset in EditorValue.File.GetAssets().Where(asset => asset.Filename.StartsWith(selectedFolder))) foreach (PckAsset asset in EditorValue.File.GetAssets().Where(asset => asset.Filename.StartsWith(selectedFolder)))
@@ -1750,7 +1775,7 @@ namespace PckStudio.Controls
if (!Directory.Exists(finalPath)) if (!Directory.Exists(finalPath))
Directory.CreateDirectory(finalPath); Directory.CreateDirectory(finalPath);
extractFile(finalPath + "/" + Path.GetFileName(asset.Filename), asset); extractFile(Path.Combine(finalPath, Path.GetFileName(asset.Filename)), asset);
} }
} }
+9
View File
@@ -53,6 +53,7 @@
this.setXMLVersion1MenuItem = new PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem(); this.setXMLVersion1MenuItem = new PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem();
this.setXMLVersion2MenuItem = new PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem(); this.setXMLVersion2MenuItem = new PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem();
this.setXMLVersion3MenuItem = new PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem(); this.setXMLVersion3MenuItem = new PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem();
this.extractToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.quickChangeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.quickChangeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.miscToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.miscToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openPckManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openPckManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -216,6 +217,7 @@
this.pckToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.pckToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.setPackIDToolStripMenuItem, this.setPackIDToolStripMenuItem,
this.setXMLVersionStripMenuItem, this.setXMLVersionStripMenuItem,
this.extractToolStripMenuItem,
this.quickChangeToolStripMenuItem}); this.quickChangeToolStripMenuItem});
this.pckToolStripMenuItem.ForeColor = System.Drawing.Color.Silver; this.pckToolStripMenuItem.ForeColor = System.Drawing.Color.Silver;
this.pckToolStripMenuItem.Name = "pckToolStripMenuItem"; this.pckToolStripMenuItem.Name = "pckToolStripMenuItem";
@@ -269,6 +271,12 @@
this.setXMLVersion3MenuItem.Tag = 3; this.setXMLVersion3MenuItem.Tag = 3;
this.setXMLVersion3MenuItem.Click += new System.EventHandler(this.setXMLVersionMenuItem_Click); this.setXMLVersion3MenuItem.Click += new System.EventHandler(this.setXMLVersionMenuItem_Click);
// //
// extractToolStripMenuItem
//
this.extractToolStripMenuItem.Name = "extractToolStripMenuItem";
resources.ApplyResources(this.extractToolStripMenuItem, "extractToolStripMenuItem");
this.extractToolStripMenuItem.Click += new System.EventHandler(this.extractToolStripMenuItem_Click);
//
// quickChangeToolStripMenuItem // quickChangeToolStripMenuItem
// //
resources.ApplyResources(this.quickChangeToolStripMenuItem, "quickChangeToolStripMenuItem"); resources.ApplyResources(this.quickChangeToolStripMenuItem, "quickChangeToolStripMenuItem");
@@ -612,6 +620,7 @@
public ToolboxItems.ToolStripRadioButtonMenuItem setXMLVersion2MenuItem; public ToolboxItems.ToolStripRadioButtonMenuItem setXMLVersion2MenuItem;
public ToolboxItems.ToolStripRadioButtonMenuItem setXMLVersion3MenuItem; public ToolboxItems.ToolStripRadioButtonMenuItem setXMLVersion3MenuItem;
private System.Windows.Forms.ToolStripMenuItem setPackIDToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem setPackIDToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem extractToolStripMenuItem;
} }
} }
+10
View File
@@ -641,5 +641,15 @@ namespace PckStudio
} }
} }
} }
private void extractToolStripMenuItem_Click(object sender, EventArgs e)
{
if (TryGetCurrentEditor(out IEditor<PackInfo> editor))
{
PckEditor pckEditor = editor as PckEditor;
pckEditor.extractEntirePCK();
}
}
} }
} }
+12
View File
@@ -356,6 +356,12 @@
<data name="setXMLVersionStripMenuItem.Text" xml:space="preserve"> <data name="setXMLVersionStripMenuItem.Text" xml:space="preserve">
<value>Set Skin BOX Version</value> <value>Set Skin BOX Version</value>
</data> </data>
<data name="extractToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 22</value>
</data>
<data name="extractToolStripMenuItem.Text" xml:space="preserve">
<value>Extract PCK Contents</value>
</data>
<data name="quickChangeToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="quickChangeToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@@ -5890,6 +5896,12 @@
<data name="&gt;&gt;setXMLVersion3MenuItem.Type" xml:space="preserve"> <data name="&gt;&gt;setXMLVersion3MenuItem.Type" xml:space="preserve">
<value>PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem, PCK-Studio, Version=7.0.1.2, Culture=neutral, PublicKeyToken=null</value> <value>PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem, PCK-Studio, Version=7.0.1.2, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;extractToolStripMenuItem.Name" xml:space="preserve">
<value>extractToolStripMenuItem</value>
</data>
<data name="&gt;&gt;extractToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;quickChangeToolStripMenuItem.Name" xml:space="preserve"> <data name="&gt;&gt;quickChangeToolStripMenuItem.Name" xml:space="preserve">
<value>quickChangeToolStripMenuItem</value> <value>quickChangeToolStripMenuItem</value>
</data> </data>