mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-06-04 03:55:50 +00:00
Temporarily added Move Up/Down functionality for skins
This commit is contained in:
2042
PCK-Studio/MainForm.Designer.cs
generated
2042
PCK-Studio/MainForm.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -36,7 +36,7 @@ using PCKStudio_Updater;
|
||||
|
||||
namespace PckStudio
|
||||
{
|
||||
public partial class MainForm : MetroFramework.Forms.MetroForm
|
||||
public partial class MainForm : MetroFramework.Forms.MetroForm
|
||||
{
|
||||
private PckManager PckManager = null;
|
||||
string saveLocation = string.Empty;
|
||||
@@ -52,45 +52,45 @@ namespace PckStudio
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
skinToolStripMenuItem1.Click += (sender, e) => SetFileType(PckFileType.SkinFile);
|
||||
capeToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.CapeFile);
|
||||
textureToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.TextureFile);
|
||||
languagesFileLOCToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.LocalisationFile);
|
||||
gameRulesFileGRFToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.GameRulesFile);
|
||||
audioPCKFileToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.AudioFile);
|
||||
coloursCOLFileToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.ColourTableFile);
|
||||
gameRulesHeaderGRHToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.GameRulesHeader);
|
||||
skinsPCKToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.SkinDataFile);
|
||||
modelsFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.ModelsFile);
|
||||
behavioursFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.BehavioursFile);
|
||||
entityMaterialsFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.MaterialFile);
|
||||
skinToolStripMenuItem1.Click += (sender, e) => SetFileType(PckFileType.SkinFile);
|
||||
capeToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.CapeFile);
|
||||
textureToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.TextureFile);
|
||||
languagesFileLOCToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.LocalisationFile);
|
||||
gameRulesFileGRFToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.GameRulesFile);
|
||||
audioPCKFileToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.AudioFile);
|
||||
coloursCOLFileToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.ColourTableFile);
|
||||
gameRulesHeaderGRHToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.GameRulesHeader);
|
||||
skinsPCKToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.SkinDataFile);
|
||||
modelsFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.ModelsFile);
|
||||
behavioursFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.BehavioursFile);
|
||||
entityMaterialsFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.MaterialFile);
|
||||
|
||||
treeViewMain.TreeViewNodeSorter = new PckNodeSorter();
|
||||
treeViewMain.TreeViewNodeSorter = new PckNodeSorter();
|
||||
|
||||
pckOpen.AllowDrop = true;
|
||||
|
||||
Text = Application.ProductName;
|
||||
|
||||
labelVersion.Text = $"{Application.ProductName}: {Application.ProductVersion}";
|
||||
labelVersion.Text = $"{Application.ProductName}: {Application.ProductVersion}";
|
||||
ChangelogRichTextBox.Text = Resources.CHANGELOG;
|
||||
|
||||
pckFileTypeHandler = new Dictionary<PckFileType, Action<PckFileData>>(15)
|
||||
pckFileTypeHandler = new Dictionary<PckFileType, Action<PckFileData>>(15)
|
||||
{
|
||||
[PckFileType.SkinFile] = HandleSkinFile,
|
||||
[PckFileType.CapeFile] = null,
|
||||
[PckFileType.TextureFile] = HandleTextureFile,
|
||||
[PckFileType.UIDataFile] = _ => throw new NotSupportedException("unused in-game"),
|
||||
[PckFileType.InfoFile] = null,
|
||||
[PckFileType.SkinFile] = HandleSkinFile,
|
||||
[PckFileType.CapeFile] = null,
|
||||
[PckFileType.TextureFile] = HandleTextureFile,
|
||||
[PckFileType.UIDataFile] = _ => throw new NotSupportedException("unused in-game"),
|
||||
[PckFileType.InfoFile] = null,
|
||||
[PckFileType.TexturePackInfoFile] = null,
|
||||
[PckFileType.LocalisationFile] = HandleLocalisationFile,
|
||||
[PckFileType.GameRulesFile] = HandleGameRuleFile,
|
||||
[PckFileType.AudioFile] = HandleAudioFile,
|
||||
[PckFileType.ColourTableFile] = HandleColourFile,
|
||||
[PckFileType.GameRulesHeader] = HandleGameRuleFile,
|
||||
[PckFileType.SkinDataFile] = null,
|
||||
[PckFileType.ModelsFile] = HandleModelsFile,
|
||||
[PckFileType.BehavioursFile] = HandleBehavioursFile,
|
||||
[PckFileType.MaterialFile] = HandleMaterialFile,
|
||||
[PckFileType.LocalisationFile] = HandleLocalisationFile,
|
||||
[PckFileType.GameRulesFile] = HandleGameRuleFile,
|
||||
[PckFileType.AudioFile] = HandleAudioFile,
|
||||
[PckFileType.ColourTableFile] = HandleColourFile,
|
||||
[PckFileType.GameRulesHeader] = HandleGameRuleFile,
|
||||
[PckFileType.SkinDataFile] = null,
|
||||
[PckFileType.ModelsFile] = HandleModelsFile,
|
||||
[PckFileType.BehavioursFile] = HandleBehavioursFile,
|
||||
[PckFileType.MaterialFile] = HandleMaterialFile,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ namespace PckStudio
|
||||
checkSaveState();
|
||||
treeViewMain.Nodes.Clear();
|
||||
currentPCK = openPck(filepath);
|
||||
if (currentPCK == null)
|
||||
if (currentPCK == null)
|
||||
{
|
||||
MessageBox.Show(string.Format("Failed to load {0}", Path.GetFileName(filepath)), "Error");
|
||||
return;
|
||||
@@ -113,8 +113,8 @@ namespace PckStudio
|
||||
{
|
||||
SettingsManager.RegisterPropertyChangedCallback<bool>(nameof(Settings.Default.UseLittleEndianAsDefault), state =>
|
||||
{
|
||||
LittleEndianCheckBox.Checked = state;
|
||||
});
|
||||
LittleEndianCheckBox.Checked = state;
|
||||
});
|
||||
SettingsManager.RegisterPropertyChangedCallback(nameof(Settings.Default.LoadSubPcks), () =>
|
||||
{
|
||||
if (currentPCK is not null)
|
||||
@@ -123,32 +123,32 @@ namespace PckStudio
|
||||
}
|
||||
});
|
||||
|
||||
imageList.Images.Add(Resources.ZZFolder); // Icon for folders
|
||||
imageList.Images.Add(Resources.BINKA_ICON); // Icon for music cue file (audio.pck)
|
||||
imageList.Images.Add(Resources.IMAGE_ICON); // Icon for images (unused for now)
|
||||
imageList.Images.Add(Resources.LOC_ICON); // Icon for string localization files (languages.loc;localisation.loc)
|
||||
imageList.Images.Add(Resources.PCK_ICON); // Icon for generic PCK files (*.pck)
|
||||
imageList.Images.Add(Resources.ZUnknown); // Icon for Unknown formats
|
||||
imageList.Images.Add(Resources.COL_ICON); // Icon for color palette files (colours.col)
|
||||
imageList.Images.Add(Resources.SKINS_ICON); // Icon for Skin.pck archives (skins.pck)
|
||||
imageList.Images.Add(Resources.MODELS_ICON); // Icon for Model files (models.bin)
|
||||
imageList.Images.Add(Resources.GRF_ICON); // Icon for Game Rule files (*.grf)
|
||||
imageList.Images.Add(Resources.GRH_ICON); // Icon for Game Rule Header files (*.grh)
|
||||
imageList.Images.Add(Resources.INFO_ICON); // Icon for Info files (0)
|
||||
imageList.Images.Add(Resources.SKIN_ICON); // Icon for Skin files (*.png)
|
||||
imageList.Images.Add(Resources.CAPE_ICON); // Icon for Cape files (*.png)
|
||||
imageList.Images.Add(Resources.TEXTURE_ICON); // Icon for Texture files (*.png;*.tga)
|
||||
imageList.Images.Add(Resources.BEHAVIOURS_ICON); // Icon for Behaviour files (behaviours.bin)
|
||||
imageList.Images.Add(Resources.ENTITY_MATERIALS_ICON); // Icon for Entity Material files (entityMaterials.bin)
|
||||
imageList.Images.Add(Resources.ZZFolder); // Icon for folders
|
||||
imageList.Images.Add(Resources.BINKA_ICON); // Icon for music cue file (audio.pck)
|
||||
imageList.Images.Add(Resources.IMAGE_ICON); // Icon for images (unused for now)
|
||||
imageList.Images.Add(Resources.LOC_ICON); // Icon for string localization files (languages.loc;localisation.loc)
|
||||
imageList.Images.Add(Resources.PCK_ICON); // Icon for generic PCK files (*.pck)
|
||||
imageList.Images.Add(Resources.ZUnknown); // Icon for Unknown formats
|
||||
imageList.Images.Add(Resources.COL_ICON); // Icon for color palette files (colours.col)
|
||||
imageList.Images.Add(Resources.SKINS_ICON); // Icon for Skin.pck archives (skins.pck)
|
||||
imageList.Images.Add(Resources.MODELS_ICON); // Icon for Model files (models.bin)
|
||||
imageList.Images.Add(Resources.GRF_ICON); // Icon for Game Rule files (*.grf)
|
||||
imageList.Images.Add(Resources.GRH_ICON); // Icon for Game Rule Header files (*.grh)
|
||||
imageList.Images.Add(Resources.INFO_ICON); // Icon for Info files (0)
|
||||
imageList.Images.Add(Resources.SKIN_ICON); // Icon for Skin files (*.png)
|
||||
imageList.Images.Add(Resources.CAPE_ICON); // Icon for Cape files (*.png)
|
||||
imageList.Images.Add(Resources.TEXTURE_ICON); // Icon for Texture files (*.png;*.tga)
|
||||
imageList.Images.Add(Resources.BEHAVIOURS_ICON); // Icon for Behaviour files (behaviours.bin)
|
||||
imageList.Images.Add(Resources.ENTITY_MATERIALS_ICON); // Icon for Entity Material files (entityMaterials.bin)
|
||||
|
||||
isSelectingTab = true;
|
||||
tabControl.SelectTab(0);
|
||||
isSelectingTab = false;
|
||||
isSelectingTab = true;
|
||||
tabControl.SelectTab(0);
|
||||
isSelectingTab = false;
|
||||
|
||||
UpdateRichPresence();
|
||||
UpdateRichPresence();
|
||||
}
|
||||
|
||||
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
PckManager?.Close();
|
||||
checkSaveState();
|
||||
@@ -223,7 +223,7 @@ namespace PckStudio
|
||||
isSelectingTab = true;
|
||||
tabControl.SelectTab(1);
|
||||
isSelectingTab = false;
|
||||
UpdateRichPresence();
|
||||
UpdateRichPresence();
|
||||
}
|
||||
|
||||
private void CloseEditorTab()
|
||||
@@ -244,35 +244,35 @@ namespace PckStudio
|
||||
saveToolStripMenuItem1.Enabled = false;
|
||||
quickChangeToolStripMenuItem.Enabled = false;
|
||||
closeToolStripMenuItem.Visible = false;
|
||||
packSettingsToolStripMenuItem.Visible = false;
|
||||
convertToBedrockToolStripMenuItem.Enabled = false;
|
||||
packSettingsToolStripMenuItem.Visible = false;
|
||||
convertToBedrockToolStripMenuItem.Enabled = false;
|
||||
addCustomPackImageToolStripMenuItem.Enabled = false;
|
||||
fileEntryCountLabel.Text = string.Empty;
|
||||
pckFileLabel.Text = string.Empty;
|
||||
UpdateRichPresence();
|
||||
}
|
||||
|
||||
private void UpdateRichPresence()
|
||||
{
|
||||
if (currentPCK is not null &&
|
||||
TryGetLocFile(out LOCFile locfile) &&
|
||||
locfile.HasLocEntry("IDS_DISPLAY_NAME") &&
|
||||
locfile.Languages.Contains("en-EN"))
|
||||
{
|
||||
RPC.SetPresence($"Editing a Pack: {locfile.GetLocEntry("IDS_DISPLAY_NAME", "en-EN")}");
|
||||
return;
|
||||
}
|
||||
// default
|
||||
RPC.SetPresence("An Open Source .PCK File Editor");
|
||||
}
|
||||
private void UpdateRichPresence()
|
||||
{
|
||||
if (currentPCK is not null &&
|
||||
TryGetLocFile(out LOCFile locfile) &&
|
||||
locfile.HasLocEntry("IDS_DISPLAY_NAME") &&
|
||||
locfile.Languages.Contains("en-EN"))
|
||||
{
|
||||
RPC.SetPresence($"Editing a Pack: {locfile.GetLocEntry("IDS_DISPLAY_NAME", "en-EN")}");
|
||||
return;
|
||||
}
|
||||
// default
|
||||
RPC.SetPresence("An Open Source .PCK File Editor");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// wrapper that allows the use of <paramref name="name"/> in <code>TreeNode.Nodes.Find(<paramref name="name"/>, ...)</code> and <code>TreeNode.Nodes.ContainsKey(<paramref name="name"/>)</code>
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="tag"></param>
|
||||
/// <returns>new Created TreeNode</returns>
|
||||
public static TreeNode CreateNode(string name, object tag = null)
|
||||
/// <summary>
|
||||
/// wrapper that allows the use of <paramref name="name"/> in <code>TreeNode.Nodes.Find(<paramref name="name"/>, ...)</code> and <code>TreeNode.Nodes.ContainsKey(<paramref name="name"/>)</code>
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="tag"></param>
|
||||
/// <returns>new Created TreeNode</returns>
|
||||
public static TreeNode CreateNode(string name, object tag = null)
|
||||
{
|
||||
TreeNode node = new TreeNode(name);
|
||||
node.Name = name;
|
||||
@@ -308,25 +308,25 @@ namespace PckStudio
|
||||
node.Tag = file;
|
||||
if (Settings.Default.LoadSubPcks &&
|
||||
(file.Filetype == PckFileType.SkinDataFile || file.Filetype == PckFileType.TexturePackInfoFile) &&
|
||||
file.Size > 0)
|
||||
file.Size > 0)
|
||||
{
|
||||
using (var stream = new MemoryStream(file.Data))
|
||||
using (var stream = new MemoryStream(file.Data))
|
||||
{
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
var reader = new PckFileReader(LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian);
|
||||
PckFile subPCKfile = reader.FromStream(stream);
|
||||
// passes parent path to remove from sub pck filepaths
|
||||
BuildPckTreeView(node.Nodes, subPCKfile, file.Filename + "/");
|
||||
}
|
||||
catch (OverflowException ex)
|
||||
{
|
||||
MessageBox.Show("Failed to open pck\n" +
|
||||
"Try checking the 'Open/Save as Switch/Vita/PS4 pck' checkbox in the upper right corner.",
|
||||
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
Debug.WriteLine(ex.Message);
|
||||
}
|
||||
var reader = new PckFileReader(LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian);
|
||||
PckFile subPCKfile = reader.FromStream(stream);
|
||||
// passes parent path to remove from sub pck filepaths
|
||||
BuildPckTreeView(node.Nodes, subPCKfile, file.Filename + "/");
|
||||
}
|
||||
catch (OverflowException ex)
|
||||
{
|
||||
MessageBox.Show("Failed to open pck\n" +
|
||||
"Try checking the 'Open/Save as Switch/Vita/PS4 pck' checkbox in the upper right corner.",
|
||||
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
Debug.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
SetNodeIcon(node, file.Filetype);
|
||||
};
|
||||
@@ -353,10 +353,10 @@ namespace PckStudio
|
||||
treeViewMain.Sort();
|
||||
|
||||
TreeNode[] selectedNodes;
|
||||
if (!string.IsNullOrEmpty(selectedNodeText) &&
|
||||
if (!string.IsNullOrEmpty(selectedNodeText) &&
|
||||
(selectedNodes = treeViewMain.Nodes.Find(selectedNodeText, true)).Length > 0)
|
||||
{
|
||||
treeViewMain.SelectedNode = selectedNodes[0];
|
||||
treeViewMain.SelectedNode = selectedNodes[0];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -374,8 +374,8 @@ namespace PckStudio
|
||||
{
|
||||
var img = file.GetTexture();
|
||||
var res = img.Width / 16; // texture count on X axes
|
||||
var size = new Size(res, res);
|
||||
var viewer = new TextureAtlasEditor(currentPCK, file.Filename, img, size);
|
||||
var size = new Size(res, res);
|
||||
var viewer = new TextureAtlasEditor(currentPCK, file.Filename, img, size);
|
||||
if (viewer.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
file.SetData(viewer.FinalTexture, ImageFormat.Png);
|
||||
@@ -438,17 +438,17 @@ namespace PckStudio
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var img = file.GetTexture();
|
||||
using var skinViewer = new SkinPreview(img, file.Properties.GetPropertyValue("ANIM", SkinANIM.FromString));
|
||||
skinViewer.ShowDialog(this);
|
||||
}
|
||||
skinViewer.ShowDialog(this);
|
||||
}
|
||||
|
||||
public void HandleModelsFile(PckFileData file)
|
||||
{
|
||||
MessageBox.Show("Models.bin support has not been implemented. You can use the Spark Editor for the time being to edit these files.", "Not implemented yet.");
|
||||
}
|
||||
|
||||
|
||||
public void HandleBehavioursFile(PckFileData file)
|
||||
{
|
||||
using BehaviourEditor edit = new BehaviourEditor(file);
|
||||
@@ -460,7 +460,7 @@ namespace PckStudio
|
||||
using MaterialsEditor edit = new MaterialsEditor(file);
|
||||
wasModified = edit.ShowDialog(this) == DialogResult.OK;
|
||||
}
|
||||
|
||||
|
||||
private void selectNode(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
ReloadMetaTreeView();
|
||||
@@ -500,7 +500,7 @@ namespace PckStudio
|
||||
img = new Bitmap(img);
|
||||
}
|
||||
|
||||
try
|
||||
try
|
||||
{
|
||||
previewPictureBox.Image = img;
|
||||
labelImageSize.Text = $"{previewPictureBox.Image.Size.Width}x{previewPictureBox.Image.Size.Height}";
|
||||
@@ -568,7 +568,7 @@ namespace PckStudio
|
||||
File.WriteAllBytes(extractFilePath, file.Data);
|
||||
if (file.Properties.Count > 0)
|
||||
{
|
||||
using var fs = File.CreateText($"{extractFilePath}.txt");
|
||||
using var fs = File.CreateText($"{extractFilePath}.txt");
|
||||
file.Properties.ForEach(property => fs.WriteLine($"{property.Key}: {property.Value}"));
|
||||
}
|
||||
// Verification that file extraction path was successful
|
||||
@@ -683,29 +683,29 @@ namespace PckStudio
|
||||
/// <returns>True if the remove should be canceled, otherwise False</returns>
|
||||
private bool BeforeFileRemove(PckFileData file)
|
||||
{
|
||||
string itemPath = "res/textures/items/";
|
||||
string itemPath = "res/textures/items/";
|
||||
|
||||
// warn the user about deleting compass.png and clock.png
|
||||
if (file.Filetype == PckFileType.TextureFile &&
|
||||
(file.Filename == itemPath + "compass.png" || file.Filename == itemPath + "clock.png"))
|
||||
{
|
||||
if (MessageBox.Show("Are you sure want to delete this file? If \"compass.png\" or \"clock.png\" are missing, your game will crash upon loading this pack.", "Warning",
|
||||
// warn the user about deleting compass.png and clock.png
|
||||
if (file.Filetype == PckFileType.TextureFile &&
|
||||
(file.Filename == itemPath + "compass.png" || file.Filename == itemPath + "clock.png"))
|
||||
{
|
||||
if (MessageBox.Show("Are you sure want to delete this file? If \"compass.png\" or \"clock.png\" are missing, your game will crash upon loading this pack.", "Warning",
|
||||
MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// remove loc key if its a skin/cape
|
||||
if (file.Filetype == PckFileType.SkinFile || file.Filetype == PckFileType.CapeFile)
|
||||
{
|
||||
if (TryGetLocFile(out LOCFile locFile))
|
||||
{
|
||||
// remove loc key if its a skin/cape
|
||||
if (file.Filetype == PckFileType.SkinFile || file.Filetype == PckFileType.CapeFile)
|
||||
{
|
||||
if (TryGetLocFile(out LOCFile locFile))
|
||||
{
|
||||
locFile.RemoveLocKey(file.Properties.GetPropertyValue("THEMENAMEID"));
|
||||
locFile.RemoveLocKey(file.Properties.GetPropertyValue("DISPLAYNAMEID"));
|
||||
TrySetLocFile(locFile);
|
||||
}
|
||||
}
|
||||
TrySetLocFile(locFile);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteFileToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -717,7 +717,7 @@ namespace PckStudio
|
||||
|
||||
if (node.TryGetTagData(out PckFileData file))
|
||||
{
|
||||
if (!BeforeFileRemove(file) && currentPCK.RemoveFile(file))
|
||||
if (!BeforeFileRemove(file) && currentPCK.RemoveFile(file))
|
||||
{
|
||||
node.Remove();
|
||||
wasModified = true;
|
||||
@@ -825,7 +825,7 @@ namespace PckStudio
|
||||
audioPck.AddCategory(PckAudioFile.AudioCategory.EAudioType.Nether);
|
||||
audioPck.AddCategory(PckAudioFile.AudioCategory.EAudioType.End);
|
||||
PckFileData pckFileData = new PckFileData("audio.pck", PckFileType.AudioFile);
|
||||
pckFileData.SetData(new PckAudioFileWriter(audioPck, isLittle ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian));
|
||||
pckFileData.SetData(new PckAudioFileWriter(audioPck, isLittle ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian));
|
||||
return pckFileData;
|
||||
}
|
||||
|
||||
@@ -845,7 +845,7 @@ namespace PckStudio
|
||||
|
||||
var file = CreateNewAudioFile(LittleEndianCheckBox.Checked);
|
||||
AudioEditor diag = new AudioEditor(file, LittleEndianCheckBox.Checked);
|
||||
if(diag.ShowDialog(this) == DialogResult.OK)
|
||||
if (diag.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
currentPCK.AddFile(file);
|
||||
}
|
||||
@@ -876,7 +876,7 @@ namespace PckStudio
|
||||
{
|
||||
wasModified = true;
|
||||
AnimationHelper.SaveAnimationToFile(file, animation);
|
||||
currentPCK.AddFile(file);
|
||||
currentPCK.AddFile(file);
|
||||
BuildMainTreeView();
|
||||
ReloadMetaTreeView();
|
||||
}
|
||||
@@ -899,7 +899,7 @@ namespace PckStudio
|
||||
List<TreeNode> GetAllChildNodes(TreeNodeCollection root)
|
||||
{
|
||||
List<TreeNode> childNodes = new List<TreeNode>();
|
||||
foreach(TreeNode node in root)
|
||||
foreach (TreeNode node in root)
|
||||
{
|
||||
childNodes.Add(node);
|
||||
if (node.Nodes.Count > 0)
|
||||
@@ -915,7 +915,7 @@ namespace PckStudio
|
||||
string parentPath = childPath.Replace('\\', '/');
|
||||
Debug.WriteLine(parentPath);
|
||||
string[] s = parentPath.Split('/');
|
||||
Debug.WriteLine(s.Length);
|
||||
Debug.WriteLine(s.Length);
|
||||
foreach (var node in s)
|
||||
{
|
||||
TreeNode parent = treeViewMain.Nodes.Find(node, true)[0];
|
||||
@@ -932,16 +932,16 @@ namespace PckStudio
|
||||
{
|
||||
// Support for if a file is edited within a nested PCK File (AKA SubPCK)
|
||||
|
||||
if(!IsSubPCKNode(childPath)) return;
|
||||
if (!IsSubPCKNode(childPath)) return;
|
||||
|
||||
TreeNode parent = GetSubPCK(childPath);
|
||||
Debug.WriteLine(parent.Name);
|
||||
Debug.WriteLine(parent.Name);
|
||||
if (parent == null) return;
|
||||
|
||||
PckFileData parent_file = parent.Tag as PckFileData;
|
||||
if (parent_file.Filetype is PckFileType.TexturePackInfoFile || parent_file.Filetype is PckFileType.SkinDataFile)
|
||||
{
|
||||
Debug.WriteLine("Rebuilding " + parent_file.Filename);
|
||||
Debug.WriteLine("Rebuilding " + parent_file.Filename);
|
||||
PckFile newPCKFile = new PckFile(3, parent_file.Filetype is PckFileType.SkinDataFile);
|
||||
|
||||
foreach (TreeNode node in GetAllChildNodes(parent.Nodes))
|
||||
@@ -965,12 +965,12 @@ namespace PckStudio
|
||||
{
|
||||
if (treeViewMain.SelectedNode.TryGetTagData(out PckFileData file))
|
||||
{
|
||||
if (file.Size <= 0)
|
||||
{
|
||||
Trace.WriteLine($"'{file.Filename}' has no data attached.", category: nameof(treeViewMain_DoubleClick));
|
||||
return;
|
||||
}
|
||||
pckFileTypeHandler[file.Filetype]?.Invoke(file);
|
||||
if (file.Size <= 0)
|
||||
{
|
||||
Trace.WriteLine($"'{file.Filename}' has no data attached.", category: nameof(treeViewMain_DoubleClick));
|
||||
return;
|
||||
}
|
||||
pckFileTypeHandler[file.Filetype]?.Invoke(file);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1081,9 +1081,9 @@ namespace PckStudio
|
||||
if (GetAllChildNodes(treeViewMain.Nodes).Find(n => n.FullPath == diag.NewText) != null)
|
||||
{
|
||||
MessageBox.Show(
|
||||
this,
|
||||
this,
|
||||
$"A file with the path \"{diag.NewText}\" already exists. " +
|
||||
$"Please try again with a different name.",
|
||||
$"Please try again with a different name.",
|
||||
"Key already exists");
|
||||
return;
|
||||
}
|
||||
@@ -1120,7 +1120,7 @@ namespace PckStudio
|
||||
foreach (var property in file.Properties)
|
||||
{
|
||||
treeMeta.Nodes.Add(CreateNode(property.Key, property));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1174,7 +1174,7 @@ namespace PckStudio
|
||||
private PckFile InitializePack(int packId, int packVersion, string packName, bool createSkinsPCK)
|
||||
{
|
||||
var pack = new PckFile(3);
|
||||
|
||||
|
||||
var zeroFile = pack.CreateNewFile("0", PckFileType.InfoFile);
|
||||
zeroFile.Properties.Add("PACKID", packId.ToString());
|
||||
zeroFile.Properties.Add("PACKVERSION", packVersion.ToString());
|
||||
@@ -1187,7 +1187,7 @@ namespace PckStudio
|
||||
LittleEndianCheckBox.Checked
|
||||
? OMI.Endianness.LittleEndian
|
||||
: OMI.Endianness.BigEndian));
|
||||
|
||||
|
||||
return pack;
|
||||
}
|
||||
|
||||
@@ -1232,9 +1232,9 @@ namespace PckStudio
|
||||
new KeyValuePair<string, string>("spawnY", "0"),
|
||||
new KeyValuePair<string, string>("spawnZ", "0")
|
||||
);
|
||||
|
||||
|
||||
gameRuleFile.SetData(new GameRuleFileWriter(grfFile));
|
||||
|
||||
|
||||
return pack;
|
||||
}
|
||||
|
||||
@@ -1358,7 +1358,7 @@ namespace PckStudio
|
||||
FileInfo fileinfo = new FileInfo(filepath);
|
||||
fileinfo.Directory.Create();
|
||||
File.WriteAllBytes(filepath, file.Data); // writes data to file
|
||||
//attempts to generate reimportable metadata file out of minefiles metadata
|
||||
//attempts to generate reimportable metadata file out of minefiles metadata
|
||||
string metaData = "";
|
||||
|
||||
foreach (var entry in file.Properties)
|
||||
@@ -1434,7 +1434,7 @@ namespace PckStudio
|
||||
|
||||
if (File.Exists(fullfilename + ".txt"))
|
||||
{
|
||||
string[] properties = File.ReadAllText(fullfilename + ".txt").Split(new string[]{ Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] properties = File.ReadAllText(fullfilename + ".txt").Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
|
||||
foreach (string property in properties)
|
||||
{
|
||||
string[] param = property.Split(':');
|
||||
@@ -1589,7 +1589,7 @@ namespace PckStudio
|
||||
private void folderToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
TextPrompt folderNamePrompt = new TextPrompt();
|
||||
if(treeViewMain.SelectedNode is not null) folderNamePrompt.contextLabel.Text = $"New folder at the location of \"{treeViewMain.SelectedNode.FullPath}\"";
|
||||
if (treeViewMain.SelectedNode is not null) folderNamePrompt.contextLabel.Text = $"New folder at the location of \"{treeViewMain.SelectedNode.FullPath}\"";
|
||||
folderNamePrompt.OKButtonText = "Add";
|
||||
if (folderNamePrompt.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@@ -1620,9 +1620,9 @@ namespace PckStudio
|
||||
MessageBox.Show("This feature is currently being reworked.", "Currently unavailable", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
private void openPckCenterToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
private void openPckCenterToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
MessageBox.Show("This feature is currently being reworked.", "Currently unavailable", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
MessageBox.Show("This feature is currently being reworked.", "Currently unavailable", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
#if false
|
||||
DateTime Begin = DateTime.Now;
|
||||
//pckCenter open = new pckCenter();
|
||||
@@ -1704,14 +1704,14 @@ namespace PckStudio
|
||||
if (currentPCK is not null &&
|
||||
wasModified &&
|
||||
MessageBox.Show("Save PCK?", "Unsaved PCK", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
|
||||
{
|
||||
if (isTemplateFile || string.IsNullOrEmpty(saveLocation))
|
||||
{
|
||||
if (isTemplateFile || string.IsNullOrEmpty(saveLocation))
|
||||
{
|
||||
SaveTemplate();
|
||||
return;
|
||||
}
|
||||
Save(saveLocation);
|
||||
SaveTemplate();
|
||||
return;
|
||||
}
|
||||
Save(saveLocation);
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenPck_DragEnter(object sender, DragEventArgs e)
|
||||
@@ -1893,15 +1893,15 @@ namespace PckStudio
|
||||
{
|
||||
string mippedPath = $"{textureDirectory}/{textureName}MipMapLevel{i}{textureExtension}";
|
||||
Debug.WriteLine(mippedPath);
|
||||
if (currentPCK.HasFile(mippedPath, PckFileType.TextureFile))
|
||||
if (currentPCK.HasFile(mippedPath, PckFileType.TextureFile))
|
||||
currentPCK.RemoveFile(currentPCK.GetFile(mippedPath, PckFileType.TextureFile));
|
||||
PckFileData MipMappedFile = new PckFileData(mippedPath, PckFileType.TextureFile);
|
||||
|
||||
|
||||
Image originalTexture = Image.FromStream(new MemoryStream(file.Data));
|
||||
int NewWidth = Math.Max(originalTexture.Width / (int)Math.Pow(2,i - 1), 1);
|
||||
int NewWidth = Math.Max(originalTexture.Width / (int)Math.Pow(2, i - 1), 1);
|
||||
int NewHeight = Math.Max(originalTexture.Height / (int)Math.Pow(2, i - 1), 1);
|
||||
|
||||
|
||||
Rectangle tileArea = new Rectangle(0, 0, NewWidth, NewHeight);
|
||||
Image mippedTexture = new Bitmap(NewWidth, NewHeight);
|
||||
using (Graphics gfx = Graphics.FromImage(mippedTexture))
|
||||
@@ -1911,7 +1911,7 @@ namespace PckStudio
|
||||
gfx.PixelOffsetMode = PixelOffsetMode.HighQuality;
|
||||
gfx.DrawImage(originalTexture, tileArea);
|
||||
}
|
||||
|
||||
|
||||
MipMappedFile.SetData(mippedTexture, ImageFormat.Png);
|
||||
|
||||
currentPCK.InsertFile(currentPCK.IndexOfFile(file) + i - 1, MipMappedFile);
|
||||
@@ -1986,9 +1986,9 @@ namespace PckStudio
|
||||
if (treeViewMain.SelectedNode.TryGetTagData(out PckFileData file) &&
|
||||
file.Filetype == PckFileType.SkinFile)
|
||||
{
|
||||
foreach(var p in file.Properties.FindAll(s => s.Key == "BOX" || s.Key == "OFFSET"))
|
||||
foreach (var p in file.Properties.FindAll(s => s.Key == "BOX" || s.Key == "OFFSET"))
|
||||
{
|
||||
file.Properties[file.Properties.IndexOf(p)] = new KeyValuePair<string, string>(p.Key, p.Value.Replace(',','.'));
|
||||
file.Properties[file.Properties.IndexOf(p)] = new KeyValuePair<string, string>(p.Key, p.Value.Replace(',', '.'));
|
||||
}
|
||||
ReloadMetaTreeView();
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
@@ -2008,9 +2008,9 @@ namespace PckStudio
|
||||
|
||||
if (currentPCK is not null)
|
||||
{
|
||||
DialogResult prompt = MessageBox.Show(this,
|
||||
"Would you like to use the current PackID? You can enter any PackID if not.",
|
||||
"",
|
||||
DialogResult prompt = MessageBox.Show(this,
|
||||
"Would you like to use the current PackID? You can enter any PackID if not.",
|
||||
"",
|
||||
MessageBoxButtons.YesNoCancel);
|
||||
|
||||
switch (prompt)
|
||||
@@ -2019,9 +2019,9 @@ namespace PckStudio
|
||||
if (!currentPCK.TryGetFile("0", PckFileType.InfoFile, out PckFileData file) ||
|
||||
string.IsNullOrEmpty(file.Properties.GetPropertyValue("PACKID")))
|
||||
{
|
||||
MessageBox.Show(this,
|
||||
MessageBox.Show(this,
|
||||
"No PackID is present in this PCK. " +
|
||||
"To avoid this error, ensure that the PCK has a proper PackID property on the \"0\" Info file before trying again.",
|
||||
"To avoid this error, ensure that the PCK has a proper PackID property on the \"0\" Info file before trying again.",
|
||||
"Operation Aborted", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
@@ -2192,21 +2192,21 @@ namespace PckStudio
|
||||
if (!PckManager.Visible)
|
||||
{
|
||||
PckManager.Show();
|
||||
PckManager.BringToFront();
|
||||
}
|
||||
PckManager.BringToFront();
|
||||
}
|
||||
if (PckManager.Focus())
|
||||
PckManager.BringToFront();
|
||||
}
|
||||
|
||||
private void wavBinkaToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
using OpenFileDialog fileDialog = new OpenFileDialog
|
||||
{
|
||||
Multiselect = true,
|
||||
Filter = "WAV files (*.wav)|*.wav",
|
||||
Title = "Please choose WAV files to convert to BINKA"
|
||||
};
|
||||
if (fileDialog.ShowDialog() == DialogResult.OK)
|
||||
using OpenFileDialog fileDialog = new OpenFileDialog
|
||||
{
|
||||
Multiselect = true,
|
||||
Filter = "WAV files (*.wav)|*.wav",
|
||||
Title = "Please choose WAV files to convert to BINKA"
|
||||
};
|
||||
if (fileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
BinkaConverter.ToBinka(fileDialog.FileNames, new DirectoryInfo(Path.GetDirectoryName(fileDialog.FileName)));
|
||||
}
|
||||
@@ -2214,32 +2214,32 @@ namespace PckStudio
|
||||
|
||||
private void binkaWavToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
using OpenFileDialog fileDialog = new OpenFileDialog
|
||||
{
|
||||
Multiselect = true,
|
||||
Filter = "BINKA files (*.binka)|*.binka",
|
||||
Title = "Please choose BINKA files to convert to WAV"
|
||||
};
|
||||
if (fileDialog.ShowDialog() == DialogResult.OK)
|
||||
using OpenFileDialog fileDialog = new OpenFileDialog
|
||||
{
|
||||
Multiselect = true,
|
||||
Filter = "BINKA files (*.binka)|*.binka",
|
||||
Title = "Please choose BINKA files to convert to WAV"
|
||||
};
|
||||
if (fileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
BinkaConverter.ToWav(fileDialog.FileNames, new DirectoryInfo(Path.GetDirectoryName(fileDialog.FileName)));
|
||||
}
|
||||
}
|
||||
|
||||
private void fullBoxSupportToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
private void fullBoxSupportToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
currentPCK.SetVersion(fullBoxSupportToolStripMenuItem.Checked);
|
||||
}
|
||||
}
|
||||
|
||||
private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var appSettings = new AppSettingsForm();
|
||||
appSettings.ShowDialog(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void addBOXEntryToolStripMenuItem1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(treeViewMain.SelectedNode is TreeNode t && t.Tag is PckFileData file)
|
||||
if (treeViewMain.SelectedNode is TreeNode t && t.Tag is PckFileData file)
|
||||
{
|
||||
using BoxEditor diag = new BoxEditor(SkinBOX.Empty, IsSubPCKNode(treeViewMain.SelectedNode.FullPath));
|
||||
if (diag.ShowDialog(this) == DialogResult.OK)
|
||||
@@ -2269,14 +2269,59 @@ namespace PckStudio
|
||||
}
|
||||
}
|
||||
|
||||
private void checkForUpdatesToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.Updater.IsUpdateAvailable(Application.ProductVersion))
|
||||
private void checkForUpdatesToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.Updater.IsUpdateAvailable(Application.ProductVersion))
|
||||
{
|
||||
Program.UpdateToLatest("Would you like to download it?", MessageBoxButtons.YesNo, MessageBoxIcon.Question, DialogResult.Yes);
|
||||
return;
|
||||
}
|
||||
MessageBox.Show("Already up to date.", "No update available");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete] // the move functions are to eventually be removed in favor of drag and drop
|
||||
private void moveFile(int amount)
|
||||
{
|
||||
if (treeViewMain.SelectedNode is not TreeNode t || t.Tag is null) return;
|
||||
|
||||
var file = t.Tag as PckFileData;
|
||||
var path = t.FullPath;
|
||||
|
||||
// skin and cape files only
|
||||
if (!(file.Filetype == PckFileType.SkinFile || file.Filetype == PckFileType.CapeFile)) return;
|
||||
|
||||
PckFile pck = currentPCK;
|
||||
bool IsSubPCK = IsSubPCKNode(path);
|
||||
if (IsSubPCK)
|
||||
{
|
||||
using (var stream = new MemoryStream((GetSubPCK(path).Tag as PckFileData).Data))
|
||||
{
|
||||
var reader = new PckFileReader(LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian);
|
||||
pck = reader.FromStream(stream);
|
||||
}
|
||||
}
|
||||
|
||||
int index = pck.IndexOfFile(file);
|
||||
|
||||
if (index + amount < 0 || index + amount > pck.FileCount) return;
|
||||
pck.RemoveFile(file);
|
||||
pck.InsertFile(index + amount, file);
|
||||
|
||||
if (IsSubPCK)
|
||||
{
|
||||
using (var stream = new MemoryStream())
|
||||
{
|
||||
var writer = new PckFileWriter(pck, LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian);
|
||||
writer.WriteToStream(stream);
|
||||
(GetSubPCK(path).Tag as PckFileData).SetData(stream.ToArray());
|
||||
}
|
||||
}
|
||||
BuildMainTreeView();
|
||||
wasModified = true;
|
||||
}
|
||||
[Obsolete]
|
||||
private void moveUpToolStripMenuItem_Click(object sender, EventArgs e) => moveFile(-1);
|
||||
[Obsolete]
|
||||
private void moveDownToolStripMenuItem_Click(object sender, EventArgs e) => moveFile(1);
|
||||
}
|
||||
}
|
||||
@@ -813,10 +813,10 @@
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>177, 6</value>
|
||||
<value>167, 6</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>177, 6</value>
|
||||
<value>167, 6</value>
|
||||
</data>
|
||||
<metadata name="contextMenuPCKEntries.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>116, 17</value>
|
||||
@@ -918,7 +918,7 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="createToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="createToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Create</value>
|
||||
@@ -985,7 +985,7 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="importSkinsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="importSkinsToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Import</value>
|
||||
@@ -997,7 +997,7 @@
|
||||
<value>Export as 3DS Texture</value>
|
||||
</data>
|
||||
<data name="exportToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="exportToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Export</value>
|
||||
@@ -1075,7 +1075,7 @@
|
||||
<value>Entity Materials File (.BIN)</value>
|
||||
</data>
|
||||
<data name="setFileTypeToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="setFileTypeToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Set File Type</value>
|
||||
@@ -1099,11 +1099,23 @@
|
||||
<value>Correct Skin Decimals</value>
|
||||
</data>
|
||||
<data name="miscFunctionsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="miscFunctionsToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Misc. Functions</value>
|
||||
</data>
|
||||
<data name="moveUpToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="moveUpToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Move Up</value>
|
||||
</data>
|
||||
<data name="moveDownToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="moveDownToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Move Down</value>
|
||||
</data>
|
||||
<data name="extractToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
@@ -1114,13 +1126,13 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="extractToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="extractToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Extract</value>
|
||||
</data>
|
||||
<data name="cloneFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="cloneFileToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Clone</value>
|
||||
@@ -1133,7 +1145,7 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="renameFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="renameFileToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Rename</value>
|
||||
@@ -1149,7 +1161,7 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="replaceToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="replaceToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Replace</value>
|
||||
@@ -1164,13 +1176,13 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="deleteFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>157, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="deleteFileToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
</data>
|
||||
<data name="contextMenuPCKEntries.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>158, 224</value>
|
||||
<value>181, 290</value>
|
||||
</data>
|
||||
<data name=">>contextMenuPCKEntries.Name" xml:space="preserve">
|
||||
<value>contextMenuPCKEntries</value>
|
||||
@@ -1562,7 +1574,7 @@
|
||||
<value>More</value>
|
||||
</data>
|
||||
<data name="checkForUpdatesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>170, 22</value>
|
||||
</data>
|
||||
<data name="checkForUpdatesToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Check for updates</value>
|
||||
@@ -2031,7 +2043,7 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="aboutToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>170, 22</value>
|
||||
</data>
|
||||
<data name="aboutToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>About</value>
|
||||
@@ -2087,7 +2099,7 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="videosToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>170, 22</value>
|
||||
</data>
|
||||
<data name="videosToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Tutorials</value>
|
||||
@@ -2111,7 +2123,7 @@
|
||||
<value>For MattNL (Other Developer)</value>
|
||||
</data>
|
||||
<data name="donateToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>170, 22</value>
|
||||
</data>
|
||||
<data name="donateToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Buy a coffee</value>
|
||||
@@ -2120,7 +2132,7 @@
|
||||
<value>Alt+S</value>
|
||||
</data>
|
||||
<data name="settingsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>170, 22</value>
|
||||
</data>
|
||||
<data name="settingsToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
@@ -6621,6 +6633,18 @@
|
||||
<data name=">>correctSkinDecimalsToolStripMenuItem.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=">>moveUpToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>moveUpToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>moveUpToolStripMenuItem.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=">>moveDownToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>moveDownToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>moveDownToolStripMenuItem.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=">>extractToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>extractToolStripMenuItem</value>
|
||||
</data>
|
||||
|
||||
Reference in New Issue
Block a user