mirror of
https://github.com/chev2/botw-toolset.git
synced 2025-10-30 08:12:17 +00:00
SARC tab - add save & save as functionality
This commit is contained in:
parent
1d8fdcbd1e
commit
6d6e9f4749
2 changed files with 73 additions and 31 deletions
|
|
@ -14,52 +14,53 @@
|
||||||
<MenuItem x:Name="MenuFileOpen" Header="_Open" InputGestureText="Ctrl+O" Click="Menu_FileOpen"/>
|
<MenuItem x:Name="MenuFileOpen" Header="_Open" InputGestureText="Ctrl+O" Click="Menu_FileOpen"/>
|
||||||
<MenuItem x:Name="MenuFileSave" Header="_Save" InputGestureText="Ctrl+S" Click="Menu_FileSave" IsEnabled="False"/>
|
<MenuItem x:Name="MenuFileSave" Header="_Save" InputGestureText="Ctrl+S" Click="Menu_FileSave" IsEnabled="False"/>
|
||||||
<MenuItem x:Name="MenuFileSaveAs" Header="_Save As" InputGestureText="Ctrl+Shift+S" Click="Menu_FileSaveAs" IsEnabled="False"/>
|
<MenuItem x:Name="MenuFileSaveAs" Header="_Save As" InputGestureText="Ctrl+Shift+S" Click="Menu_FileSaveAs" IsEnabled="False"/>
|
||||||
|
<MenuItem x:Name="MenuFileExportFiles" Header="_Export Files" InputGestureText="Ctrl+Shift+E" Click="Menu_FileExportFiles" IsEnabled="False"/>
|
||||||
<MenuItem x:Name="MenuFileClose" Header="_Close" Click="Menu_FileClose" IsEnabled="False"/>
|
<MenuItem x:Name="MenuFileClose" Header="_Close" Click="Menu_FileClose" IsEnabled="False"/>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</Menu>
|
</Menu>
|
||||||
<Border Margin="10,81,10,10">
|
<Border Margin="10,81,10,10">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid Margin="0,0,628,0">
|
<Grid Margin="0,0,294,0">
|
||||||
<Label x:Name="FileCount" Margin="10,10,10,0" VerticalAlignment="Top" Height="48" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontSize="24" Content=""/>
|
<Label x:Name="FileCount" Margin="10,10,10,0" VerticalAlignment="Top" Height="48" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontSize="24" Content=""/>
|
||||||
<Border Margin="10,63,10,10">
|
<Border Margin="10,63,10,10">
|
||||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
<ScrollViewer VerticalScrollBarVisibility="Auto" CanContentScroll="True">
|
||||||
<StackPanel x:Name="FileDisplay" HorizontalAlignment="Left" Margin="9,9,0,9" Width="556" CanVerticallyScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
|
<StackPanel x:Name="FileDisplay" HorizontalAlignment="Left" Margin="9,9,0,9" Width="556" CanVerticallyScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid HorizontalAlignment="Right" Width="629">
|
<Grid HorizontalAlignment="Right" Width="294">
|
||||||
<Label Content="SARC Header" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="32" Width="609" FontSize="18" VerticalContentAlignment="Center"/>
|
<Label Content="SARC Header" HorizontalAlignment="Right" Margin="0,10,10,0" VerticalAlignment="Top" Height="32" Width="275" FontSize="18" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
<Label Content="Magic" Margin="10,47,317,0" VerticalAlignment="Top"/>
|
<Label Content="Magic" Margin="0,47,150,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SARCMagic" Height="23" Margin="10,78,317,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
<TextBox x:Name="SARCMagic" Height="23" Margin="0,78,150,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="Header Length" Margin="317,47,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right"/>
|
<Label Content="Header Length" Margin="0,47,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SARCHeaderLength" Height="23" Margin="0,78,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="302"/>
|
<TextBox x:Name="SARCHeaderLength" Height="23" Margin="0,78,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="Uses Big Endian" Margin="10,106,317,0" VerticalAlignment="Top"/>
|
<Label Content="Uses Big Endian" Margin="0,106,150,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SARCIsBigEndian" Height="23" Margin="10,137,317,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
<TextBox x:Name="SARCIsBigEndian" Height="23" Margin="0,137,150,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" RenderTransformOrigin="0.709,0.304" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="File Size" Margin="317,106,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right"/>
|
<Label Content="File Size" Margin="0,106,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SARCFileSize" Height="23" Margin="0,137,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="302"/>
|
<TextBox x:Name="SARCFileSize" Height="23" Margin="0,137,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="Data Offset" Margin="10,165,317,0" VerticalAlignment="Top"/>
|
<Label Content="Data Offset" Margin="0,165,150,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SARCDataOffset" Height="23" Margin="10,196,317,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
<TextBox x:Name="SARCDataOffset" Height="23" Margin="0,196,150,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="Version" Margin="317,165,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right"/>
|
<Label Content="Version" Margin="0,165,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SARCVersion" Height="23" Margin="0,196,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="302"/>
|
<TextBox x:Name="SARCVersion" Height="23" Margin="0,196,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
|
|
||||||
<Label Content="SFAT Header" HorizontalAlignment="Left" Margin="10,224,0,0" VerticalAlignment="Top" Height="32" Width="609" FontSize="18" VerticalContentAlignment="Center"/>
|
<Label Content="SFAT Header" HorizontalAlignment="Right" Margin="0,224,10,0" VerticalAlignment="Top" Height="32" Width="275" FontSize="18" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
<Label Content="Magic" Margin="10,261,317,0" VerticalAlignment="Top"/>
|
<Label Content="Magic" Margin="0,261,150,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SFATMagic" Height="23" Margin="10,292,317,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
<TextBox x:Name="SFATMagic" Height="23" Margin="0,292,150,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="Header Length" Margin="317,261,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right"/>
|
<Label Content="Header Length" Margin="0,261,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SFATHeaderLength" Height="23" Margin="0,292,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="302"/>
|
<TextBox x:Name="SFATHeaderLength" Height="23" Margin="0,292,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="Node Count" Margin="10,320,317,0" VerticalAlignment="Top"/>
|
<Label Content="Node Count" Margin="0,320,150,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SFATNodeCount" Height="23" Margin="10,351,317,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
<TextBox x:Name="SFATNodeCount" Height="23" Margin="0,351,150,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="Hash Key" Margin="317,320,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right"/>
|
<Label Content="Hash Key" Margin="0,320,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SFATHashKey" Height="23" Margin="0,351,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="302"/>
|
<TextBox x:Name="SFATHashKey" Height="23" Margin="0,351,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="Magic" Margin="10,416,317,0" VerticalAlignment="Top"/>
|
<Label Content="Magic" Margin="0,416,150,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="135"/>
|
||||||
|
|
||||||
<Label Content="SFNT Header" HorizontalAlignment="Left" Margin="10,379,0,0" VerticalAlignment="Top" Height="32" Width="609" FontSize="18" VerticalContentAlignment="Center"/>
|
<Label Content="SFNT Header" HorizontalAlignment="Right" Margin="0,379,10,0" VerticalAlignment="Top" Height="32" Width="275" FontSize="18" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
<TextBox x:Name="SFNTMagic" Height="23" Margin="10,447,317,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
<TextBox x:Name="SFNTMagic" Height="23" Margin="0,447,150,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalAlignment="Right" Width="135"/>
|
||||||
<Label Content="Header Length" Margin="317,416,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right"/>
|
<Label Content="Header Length" Margin="0,416,10,0" VerticalAlignment="Top" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
<TextBox x:Name="SFNTHeaderLength" Height="23" Margin="0,447,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="302"/>
|
<TextBox x:Name="SFNTHeaderLength" Height="23" Margin="0,447,10,0" TextWrapping="Wrap" VerticalAlignment="Top" IsReadOnly="True" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="135"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
using BOTWToolset.Debugging;
|
using BOTWToolset.Debugging;
|
||||||
using BOTWToolset.IO.SARC;
|
using BOTWToolset.IO.SARC;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
|
using Microsoft.WindowsAPICodePack.Dialogs;
|
||||||
|
using System.IO;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
|
|
||||||
|
|
@ -120,7 +122,7 @@ namespace BOTWToolset.Control
|
||||||
{
|
{
|
||||||
BOTWConsole.Log("Opening file");
|
BOTWConsole.Log("Opening file");
|
||||||
|
|
||||||
SARC s = SARC.ReadFile(openFileDialog.FileName);
|
SARC s = SARC.FromBytes(File.ReadAllBytes(openFileDialog.FileName));
|
||||||
|
|
||||||
// Set the current file location to the chosen file's location
|
// Set the current file location to the chosen file's location
|
||||||
fileLocation = openFileDialog.FileName;
|
fileLocation = openFileDialog.FileName;
|
||||||
|
|
@ -134,6 +136,7 @@ namespace BOTWToolset.Control
|
||||||
MenuFileClose.IsEnabled = true;
|
MenuFileClose.IsEnabled = true;
|
||||||
MenuFileSave.IsEnabled = true;
|
MenuFileSave.IsEnabled = true;
|
||||||
MenuFileSaveAs.IsEnabled = true;
|
MenuFileSaveAs.IsEnabled = true;
|
||||||
|
MenuFileExportFiles.IsEnabled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -153,16 +156,54 @@ namespace BOTWToolset.Control
|
||||||
MenuFileClose.IsEnabled = false;
|
MenuFileClose.IsEnabled = false;
|
||||||
MenuFileSave.IsEnabled = false;
|
MenuFileSave.IsEnabled = false;
|
||||||
MenuFileSaveAs.IsEnabled = false;
|
MenuFileSaveAs.IsEnabled = false;
|
||||||
|
MenuFileExportFiles.IsEnabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Menu_FileSave(object sender, RoutedEventArgs e)
|
private void Menu_FileSave(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
BOTWConsole.LogStatus($"Saved SARC to {fileLocation}.");
|
||||||
|
|
||||||
|
File.WriteAllBytes(fileLocation, SARC.ToBytes(currentSARC));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Menu_FileSaveAs(object sender, RoutedEventArgs e)
|
private void Menu_FileSaveAs(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
BOTWConsole.LogStatus($"Saving SARC as...");
|
||||||
|
|
||||||
|
SaveFileDialog saveFileDialog = new SaveFileDialog
|
||||||
|
{
|
||||||
|
InitialDirectory = @"C:\",
|
||||||
|
RestoreDirectory = true,
|
||||||
|
Title = "Save SARC file",
|
||||||
|
Filter = "All files (*.*)|*.*"
|
||||||
|
};
|
||||||
|
|
||||||
|
if ((bool)saveFileDialog.ShowDialog())
|
||||||
|
{
|
||||||
|
File.WriteAllBytes(saveFileDialog.FileName, SARC.ToBytes(currentSARC));
|
||||||
|
|
||||||
|
BOTWConsole.LogStatus($"Saved SARC to {saveFileDialog.FileName}.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Menu_FileExportFiles(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
BOTWConsole.LogStatus($"Exporting files to folder...");
|
||||||
|
|
||||||
|
CommonOpenFileDialog openFolderDialog = new CommonOpenFileDialog
|
||||||
|
{
|
||||||
|
InitialDirectory = @"C:\",
|
||||||
|
RestoreDirectory = true,
|
||||||
|
Title = "Export files to folder",
|
||||||
|
IsFolderPicker = true
|
||||||
|
};
|
||||||
|
|
||||||
|
if (openFolderDialog.ShowDialog() == CommonFileDialogResult.Ok)
|
||||||
|
{
|
||||||
|
SARC.WriteFiles(currentSARC, openFolderDialog.FileName);
|
||||||
|
|
||||||
|
BOTWConsole.LogStatus($"Exported SARC files to {openFolderDialog.FileName}.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue