mirror of
https://github.com/chylex/Brotli-Builder.git
synced 2025-08-16 21:31:47 +02:00
.github
BrotliBuilder
Blocks
Components
Dialogs
Properties
Resources
State
Utils
BrotliBuilder.csproj
FormMain.Designer.cs
FormMain.Menu.BrotliImpl.cs
FormMain.Menu.File.cs
FormMain.Menu.Tools.cs
FormMain.Menu.View.cs
FormMain.cs
FormMain.resx
Program.cs
BrotliCalc
BrotliImpl
BrotliLib
Paper
UnitTests
.gitignore
BrotliBuilder.sln
LICENSE
README.md
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();
|
|
}
|
|
}
|
|
}
|