mirror of
https://github.com/chylex/Brotli-Builder.git
synced 2024-10-04 18:42:47 +02:00
97 lines
3.1 KiB
C#
97 lines
3.1 KiB
C#
using System.IO;
|
|
using System.Windows.Forms;
|
|
using BrotliBuilder.Utils.Compat;
|
|
using BrotliLib.Brotli;
|
|
|
|
namespace BrotliBuilder{
|
|
partial class FormMain{
|
|
private MainMenuBase.Item? menuItemCloseOriginal;
|
|
|
|
private void InitializeMenuFile(MainMenuBase.Item menu){
|
|
menu.Add("Open Brotli", OpenBrotli, Shortcut.CtrlO);
|
|
menu.Add("Save Brotli", SaveBrotli, Shortcut.CtrlS);
|
|
menu.Add("Save Output", SaveOutput);
|
|
menu.AddSeparator();
|
|
menuItemCloseOriginal = menu.Add("Close Original", CloseOriginal, isEnabled: false);
|
|
menu.AddSeparator();
|
|
menu.Add("Exit", Close);
|
|
}
|
|
|
|
private void OpenBrotli(){
|
|
if (PromptUnsavedChanges("Would you like to save changes before opening a new file?")){
|
|
return;
|
|
}
|
|
|
|
using OpenFileDialog dialog = new OpenFileDialog{
|
|
Title = "Open Compressed File",
|
|
Filter = "Brotli (*.br)|*.br|All Files (*.*)|*.*",
|
|
FileName = Path.GetFileName(lastFileName),
|
|
DefaultExt = "br"
|
|
};
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK){
|
|
lastFileName = dialog.FileName;
|
|
isDirty = false;
|
|
skipNextBlockRegeneration = false;
|
|
skipNextOriginalToGeneratedFeed = false;
|
|
|
|
fileOriginal.LoadFile(lastFileName);
|
|
}
|
|
}
|
|
|
|
private BrotliFileStructure? GetCurrentFileOrShowError(){
|
|
BrotliFileStructure? currentFile = fileGenerated.CurrentFile;
|
|
|
|
if (currentFile == null){
|
|
MessageBox.Show("No structure loaded.", "Save File Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return null;
|
|
}
|
|
|
|
return currentFile;
|
|
}
|
|
|
|
private void SaveBrotli(){
|
|
BrotliFileStructure? currentFile = GetCurrentFileOrShowError();
|
|
|
|
if (currentFile == null){
|
|
return;
|
|
}
|
|
|
|
using SaveFileDialog dialog = new SaveFileDialog{
|
|
Title = "Save Brotli",
|
|
Filter = "Brotli (*.br)|*.br|All Files (*.*)|*.*",
|
|
FileName = Path.GetFileName(lastFileName),
|
|
DefaultExt = "br"
|
|
};
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK){
|
|
lastFileName = dialog.FileName;
|
|
isDirty = false;
|
|
|
|
File.WriteAllBytes(lastFileName, currentFile.Serialize(fileGenerated.SerializationParameters).ToByteArray());
|
|
}
|
|
}
|
|
|
|
private void SaveOutput(){
|
|
BrotliFileStructure? currentFile = GetCurrentFileOrShowError();
|
|
|
|
if (currentFile == null){
|
|
return;
|
|
}
|
|
|
|
using SaveFileDialog dialog = new SaveFileDialog{
|
|
Title = "Save Output",
|
|
Filter = "All Files (*.*)|*.*"
|
|
};
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK){
|
|
File.WriteAllBytes(dialog.FileName, currentFile.Decompress().AsBytes);
|
|
}
|
|
}
|
|
|
|
private void CloseOriginal(){
|
|
fileOriginal.ResetToNothing();
|
|
}
|
|
}
|
|
}
|