Some fixes to batch exporting. Add batch compression
This commit is contained in:
parent
717c4a499e
commit
be11a08a65
@ -758,15 +758,9 @@ namespace FirstPlugin
|
||||
return editor;
|
||||
}
|
||||
|
||||
|
||||
public BFRESRenderBase BFRESRender;
|
||||
public void Load(System.IO.Stream stream)
|
||||
public static bool CheckWiiU(Stream stream)
|
||||
{
|
||||
CanSave = true;
|
||||
|
||||
ImageKey = "bfres";
|
||||
SelectedImageKey = "bfres";
|
||||
|
||||
bool IsWiiU = false;
|
||||
using (FileReader reader = new FileReader(stream, true))
|
||||
{
|
||||
reader.ByteOrder = Syroot.BinaryData.ByteOrder.BigEndian;
|
||||
@ -777,9 +771,19 @@ namespace FirstPlugin
|
||||
|
||||
reader.Position = 0;
|
||||
}
|
||||
return IsWiiU;
|
||||
}
|
||||
|
||||
public BFRESRenderBase BFRESRender;
|
||||
public void Load(System.IO.Stream stream)
|
||||
{
|
||||
CanSave = true;
|
||||
|
||||
ImageKey = "bfres";
|
||||
SelectedImageKey = "bfres";
|
||||
|
||||
IsWiiU = CheckWiiU(stream);
|
||||
LoadMenus(IsWiiU);
|
||||
|
||||
|
||||
BFRESRender = new BFRESRender();
|
||||
DrawableContainer.Name = FileName;
|
||||
@ -934,6 +938,9 @@ namespace FirstPlugin
|
||||
public List<STGenericTexture> GetTextures()
|
||||
{
|
||||
List<STGenericTexture> textures = new List<STGenericTexture>();
|
||||
var bntx = GetBNTX;
|
||||
if (bntx != null)
|
||||
return bntx.TextureList;
|
||||
|
||||
foreach (TreeNode folder in Nodes)
|
||||
{
|
||||
|
@ -4,6 +4,7 @@ using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Toolbox.Library.Forms;
|
||||
|
||||
namespace Toolbox.Library.IO
|
||||
{
|
||||
@ -87,29 +88,6 @@ namespace Toolbox.Library.IO
|
||||
else throw new Exception("Unimplimented Type! " + Name);
|
||||
}
|
||||
|
||||
public void CompressData(ICompressionFormat CompressionFormat, Stream data)
|
||||
{
|
||||
try
|
||||
{
|
||||
SaveFileForCompression(true, data, CompressionFormat);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"File failed to compress with {CompressionFormat} compression! {ex.ToString()}");
|
||||
}
|
||||
}
|
||||
public void DecompressData(ICompressionFormat CompressionFormat, Stream data)
|
||||
{
|
||||
try
|
||||
{
|
||||
SaveFileForCompression(false, data, CompressionFormat);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"File not compressed with {CompressionFormat} compression! {ex.ToString()}");
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenFileForCompression(ICompressionFormat compressionFormat, bool Compress)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
@ -119,40 +97,103 @@ namespace Toolbox.Library.IO
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
foreach (string file in ofd.FileNames)
|
||||
{
|
||||
if (Compress)
|
||||
CompressData(compressionFormat, File.OpenRead(ofd.FileName));
|
||||
else
|
||||
DecompressData(compressionFormat, File.OpenRead(ofd.FileName));
|
||||
}
|
||||
SaveFileForCompression(Compress, ofd.FileNames, compressionFormat);
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveFileForCompression(bool Compress, Stream data, ICompressionFormat compressionFormat)
|
||||
private void SaveFileForCompression(bool Compress, string[] fileNames, ICompressionFormat compressionFormat)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.Filter = "All files(*.*)|*.*";
|
||||
if (fileNames.Length == 0)
|
||||
return;
|
||||
|
||||
Cursor.Current = Cursors.Default;
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
string ext = Compress ? ".comp" : ".dec";
|
||||
if (compressionFormat.Extension.Length > 0 && Compress)
|
||||
ext = compressionFormat.Extension[0];
|
||||
|
||||
List<string> failedFiles = new List<string>();
|
||||
if (fileNames.Length > 1)
|
||||
{
|
||||
Stream stream;
|
||||
if (Compress)
|
||||
stream = compressionFormat.Compress(data);
|
||||
else
|
||||
FolderSelectDialog ofd = new FolderSelectDialog();
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
compressionFormat.Identify(data, sfd.FileName);
|
||||
stream = compressionFormat.Decompress(data);
|
||||
foreach (var file in fileNames)
|
||||
{
|
||||
string name = Path.GetFileName(file);
|
||||
using (var data = new FileStream(file, FileMode.Open, FileAccess.Read))
|
||||
{
|
||||
try
|
||||
{
|
||||
Stream stream;
|
||||
if (Compress)
|
||||
stream = compressionFormat.Compress(data);
|
||||
else
|
||||
{
|
||||
compressionFormat.Identify(data, file);
|
||||
stream = compressionFormat.Decompress(data);
|
||||
}
|
||||
|
||||
if (stream != null)
|
||||
{
|
||||
stream.ExportToFile($"{ofd.SelectedPath}/{name}{ext}");
|
||||
stream.Flush();
|
||||
stream.Close();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
failedFiles.Add($"{file} \n\n {ex} \n\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (failedFiles.Count > 0)
|
||||
{
|
||||
string action = Compress ? "compress" : "decompress";
|
||||
STErrorDialog.Show($"Some files failed to {action}! See detail list of failed files.", "Switch Toolbox",
|
||||
string.Join("\n", failedFiles.ToArray()));
|
||||
}
|
||||
else
|
||||
MessageBox.Show("Files batched successfully!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
string name = Path.GetFileName(fileNames[0]);
|
||||
sfd.FileName = name + ext;
|
||||
sfd.Filter = "All files(*.*)|*.*";
|
||||
|
||||
if (stream != null)
|
||||
Cursor.Current = Cursors.Default;
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
stream.ExportToFile(sfd.FileName);
|
||||
stream.Flush();
|
||||
stream.Close();
|
||||
try
|
||||
{
|
||||
using (var data = new FileStream(fileNames[0], FileMode.Open, FileAccess.Read))
|
||||
{
|
||||
Stream stream;
|
||||
if (Compress)
|
||||
stream = compressionFormat.Compress(data);
|
||||
else
|
||||
{
|
||||
compressionFormat.Identify(data, sfd.FileName);
|
||||
stream = compressionFormat.Decompress(data);
|
||||
}
|
||||
|
||||
MessageBox.Show($"File has been saved to {sfd.FileName}", "Save Notification");
|
||||
if (stream != null)
|
||||
{
|
||||
stream.ExportToFile(sfd.FileName);
|
||||
stream.Flush();
|
||||
stream.Close();
|
||||
|
||||
MessageBox.Show($"File has been saved to {sfd.FileName}", "Save Notification");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
string action = Compress ? "compress" : "decompress";
|
||||
STErrorDialog.Show($"Failed to {action}! See details for info.", "Switch Toolbox", ex.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -653,6 +653,8 @@ namespace Toolbox
|
||||
RegisterMenuExtIndex(toolsToolStripMenuItem, ext.ToolsMenuExtensions);
|
||||
if (ext.TitleBarExtensions != null)
|
||||
RegisterMenuExtIndex(menuStrip1, ext.TitleBarExtensions, menuStrip1.Items.Count);
|
||||
if (ext.MapEditorMenuExtensions != null)
|
||||
RegisterMenuExtIndex(mapEditorsToolStripMenuItem, ext.MapEditorMenuExtensions, mapEditorsToolStripMenuItem.DropDownItems.Count);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1400,6 +1402,8 @@ namespace Toolbox
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
||||
if (failedFiles.Count > 0)
|
||||
{
|
||||
@ -1468,7 +1472,7 @@ namespace Toolbox
|
||||
SearchArchive(settings, (IArchiveFile)fileFormat, extension, outputFolder, exportMode);
|
||||
else if (fileFormat is ITextureContainer && exportMode == ExportMode.Textures)
|
||||
{
|
||||
if (settings.SeperateTextureContainers)
|
||||
if (settings.SeperateTextureContainers && ((ITextureContainer)fileFormat).TextureList.Count > 0)
|
||||
{
|
||||
string name = fileFormat.FileName.Split('.').FirstOrDefault();
|
||||
outputFolder = Path.Combine(outputFolder, name);
|
||||
@ -1511,10 +1515,7 @@ namespace Toolbox
|
||||
string extension, string outputFolder, ExportMode exportMode)
|
||||
{
|
||||
string ArchiveFilePath = Path.Combine(outputFolder, Path.GetFileNameWithoutExtension(((IFileFormat)archiveFile).FileName));
|
||||
if (!Directory.Exists(ArchiveFilePath))
|
||||
Directory.CreateDirectory(ArchiveFilePath);
|
||||
else
|
||||
ArchiveFilePath = outputFolder;
|
||||
ArchiveFilePath = outputFolder;
|
||||
|
||||
foreach (var file in archiveFile.Files)
|
||||
SearchFileFormat(settings, file.OpenFile(), extension, ArchiveFilePath, exportMode);
|
||||
|
Loading…
x
Reference in New Issue
Block a user