Switch-Toolbox/Switch_FileFormatsMain/FileFormats/BFRES/Bfres Structs/ExternalFiles.cs
2018-12-02 17:30:46 -05:00

102 lines
3 KiB
C#

using System;
using Switch_Toolbox.Library;
using System.Windows.Forms;
using FirstPlugin;
namespace Bfres.Structs
{
public class EmbeddedFilesFolder : TreeNodeCustom
{
public EmbeddedFilesFolder()
{
Text = "Embedded Files";
Name = "EXT";
ContextMenu = new ContextMenu();
MenuItem import = new MenuItem("Import");
ContextMenu.MenuItems.Add(import);
import.Click += Import;
MenuItem exportAll = new MenuItem("Export All");
ContextMenu.MenuItems.Add(exportAll);
exportAll.Click += ExportAll;
MenuItem clear = new MenuItem("Clear");
ContextMenu.MenuItems.Add(clear);
clear.Click += Clear;
}
public void Import(object sender, EventArgs args)
{
}
public void ExportAll(object sender, EventArgs args)
{
}
private void Clear(object sender, EventArgs args)
{
DialogResult dialogResult = MessageBox.Show("Are you sure you want to remove all external files? This cannot be undone!", "", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
foreach (var ext in Nodes)
{
if (ext is BNTX)
{
PluginRuntime.bntxContainers.Remove((BNTX)ext);
}
}
Nodes.Clear();
Viewport.Instance.Refresh();
}
}
public override void OnClick(TreeView treeView)
{
FormLoader.LoadEditor(this, Text);
}
}
public class ExternalFileData : TreeNode
{
public byte[] Data;
public ExternalFileData(byte[] data, string Name)
{
Text = Name;
ImageKey = "folder";
Data = data;
ContextMenu = new ContextMenu();
MenuItem export = new MenuItem("Export");
ContextMenu.MenuItems.Add(export);
export.Click += Export;
MenuItem replace = new MenuItem("Replace");
ContextMenu.MenuItems.Add(replace);
replace.Click += Import;
}
private void Import(object sender, EventArgs args)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "All files(*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
Data = System.IO.File.ReadAllBytes(ofd.FileName);
}
}
private void Export(object sender, EventArgs args)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "All files(*.*)|*.*";
sfd.DefaultExt = System.IO.Path.GetExtension(Text);
sfd.FileName = Text;
if (sfd.ShowDialog() == DialogResult.OK)
{
System.IO.File.WriteAllBytes(sfd.FileName, Data);
}
}
}
}