1
0
mirror of https://github.com/chylex/Brotli-Builder.git synced 2025-04-16 00:15:42 +02:00

Move marker info GUI into the main window & redesign

This commit is contained in:
chylex 2019-05-19 09:35:51 +02:00
parent 7ed6662ac0
commit 8ab371b0e4
8 changed files with 202 additions and 116 deletions

View File

@ -80,14 +80,14 @@
<Compile Include="Components\BrotliFilePanel.Designer.cs">
<DependentUpon>BrotliFilePanel.cs</DependentUpon>
</Compile>
<Compile Include="Components\MarkedTextBox.cs">
<Compile Include="Components\BrotliMarkerInfoPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Dialogs\FormBitStreamContext.cs">
<SubType>Form</SubType>
<Compile Include="Components\BrotliMarkerInfoPanel.Designer.cs">
<DependentUpon>BrotliMarkerInfoPanel.cs</DependentUpon>
</Compile>
<Compile Include="Dialogs\FormBitStreamContext.Designer.cs">
<DependentUpon>FormBitStreamContext.cs</DependentUpon>
<Compile Include="Components\MarkedTextBox.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Dialogs\FormStaticDictionary.cs">
<SubType>Form</SubType>
@ -157,9 +157,8 @@
<DependentUpon>BrotliFilePanel.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Dialogs\FormBitStreamContext.resx">
<DependentUpon>FormBitStreamContext.cs</DependentUpon>
<SubType>Designer</SubType>
<EmbeddedResource Include="Components\BrotliMarkerInfoPanel.resx">
<DependentUpon>BrotliMarkerInfoPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialogs\FormStaticDictionary.resx">
<DependentUpon>FormStaticDictionary.cs</DependentUpon>

View File

@ -31,6 +31,11 @@ namespace BrotliBuilder.Components{
set => textBoxOutput.WordWrap = value;
}
public event EventHandler<MarkedTextBox.MarkerUpdateEventArgs> MarkersUpdated{
add => textBoxBitStream.MarkersUpdated += value;
remove => textBoxBitStream.MarkersUpdated -= value;
}
private readonly AsyncWorker loadWorker = new AsyncWorker();
private string labelPrefix = null;

View File

@ -1,11 +1,11 @@
namespace BrotliBuilder.Dialogs {
partial class FormBitStreamContext {
/// <summary>
namespace BrotliBuilder.Components {
partial class BrotliMarkerInfoPanel {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
@ -16,17 +16,20 @@
base.Dispose(disposing);
}
#region Windows Form Designer generated code
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBitStreamContext));
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BrotliMarkerInfoPanel));
this.textBoxContext = new FastColoredTextBoxNS.FastColoredTextBox();
this.labelMarkerInfo = new System.Windows.Forms.Label();
this.panel = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.textBoxContext)).BeginInit();
this.panel.SuspendLayout();
this.SuspendLayout();
//
// textBoxContext
@ -52,30 +55,49 @@
this.textBoxContext.Font = new System.Drawing.Font("Consolas", 9.75F);
this.textBoxContext.Hotkeys = resources.GetString("textBoxContext.Hotkeys");
this.textBoxContext.IsReplaceMode = false;
this.textBoxContext.Location = new System.Drawing.Point(12, 12);
this.textBoxContext.Location = new System.Drawing.Point(12, 20);
this.textBoxContext.Margin = new System.Windows.Forms.Padding(12, 5, 0, 8);
this.textBoxContext.Name = "textBoxContext";
this.textBoxContext.Paddings = new System.Windows.Forms.Padding(0);
this.textBoxContext.ReadOnly = true;
this.textBoxContext.SelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
this.textBoxContext.ServiceColors = ((FastColoredTextBoxNS.ServiceColors)(resources.GetObject("textBoxContext.ServiceColors")));
this.textBoxContext.ShowLineNumbers = false;
this.textBoxContext.Size = new System.Drawing.Size(280, 258);
this.textBoxContext.TabIndex = 0;
this.textBoxContext.Size = new System.Drawing.Size(588, 372);
this.textBoxContext.TabIndex = 1;
this.textBoxContext.TabLength = 3;
this.textBoxContext.Zoom = 100;
//
// FormBitStreamContext
// labelMarkerInfo
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.labelMarkerInfo.AutoSize = true;
this.labelMarkerInfo.Location = new System.Drawing.Point(9, 2);
this.labelMarkerInfo.Margin = new System.Windows.Forms.Padding(3, 2, 3, 0);
this.labelMarkerInfo.Name = "labelMarkerInfo";
this.labelMarkerInfo.Size = new System.Drawing.Size(61, 13);
this.labelMarkerInfo.TabIndex = 2;
this.labelMarkerInfo.Text = "Marker Info";
//
// panel
//
this.panel.Controls.Add(this.labelMarkerInfo);
this.panel.Controls.Add(this.textBoxContext);
this.panel.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel.Location = new System.Drawing.Point(0, 0);
this.panel.Name = "panel";
this.panel.Size = new System.Drawing.Size(600, 400);
this.panel.TabIndex = 3;
//
// BrotliMarkerInfoPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(304, 282);
this.Controls.Add(this.textBoxContext);
this.Font = new System.Drawing.Font("Segoe UI", 9F);
this.MinimumSize = new System.Drawing.Size(320, 320);
this.Name = "FormBitStreamContext";
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Text = "Bit Stream";
this.Controls.Add(this.panel);
this.Name = "BrotliMarkerInfoPanel";
this.Size = new System.Drawing.Size(600, 400);
((System.ComponentModel.ISupportInitialize)(this.textBoxContext)).EndInit();
this.panel.ResumeLayout(false);
this.panel.PerformLayout();
this.ResumeLayout(false);
}
@ -83,5 +105,7 @@
#endregion
private FastColoredTextBoxNS.FastColoredTextBox textBoxContext;
private System.Windows.Forms.Label labelMarkerInfo;
private System.Windows.Forms.Panel panel;
}
}
}

View File

@ -1,53 +1,32 @@
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BrotliLib.Markers;
using FastColoredTextBoxNS;
namespace BrotliBuilder.Dialogs{
public partial class FormBitStreamContext : Form{
namespace BrotliBuilder.Components{
public partial class BrotliMarkerInfoPanel : UserControl{
private static readonly TextStyle StyleNormalBlack = new TextStyle(new SolidBrush(Color.Black), null, FontStyle.Regular);
private static readonly TextStyle StyleNormalGray = new TextStyle(new SolidBrush(Color.DarkGray), null, FontStyle.Regular);
private static readonly TextStyle StyleNormalGray = new TextStyle(new SolidBrush(Color.FromArgb(140, 140, 150)), null, FontStyle.Regular);
private static readonly TextStyle StyleBoldBlack = new TextStyle(new SolidBrush(Color.Black), null, FontStyle.Bold);
private static readonly TextStyle StyleBoldGray = new TextStyle(new SolidBrush(Color.DarkGray), null, FontStyle.Bold);
private static readonly TextStyle StyleBoldGray = new TextStyle(new SolidBrush(Color.FromArgb(140, 140, 150)), null, FontStyle.Bold);
private static readonly TextStyle[,] Styles = {
{ null /*default*/, StyleBoldGray },
{ StyleNormalBlack, StyleBoldBlack }
};
public static FormBitStreamContext GetOrSpawn(IWin32Window owner){
var mainForm = Application.OpenForms.OfType<FormMain>().FirstOrDefault();
var dialogForm = Application.OpenForms.OfType<FormBitStreamContext>().FirstOrDefault();
if (dialogForm == null){
dialogForm = new FormBitStreamContext();
dialogForm.Show(owner);
}
if (mainForm != null){
Point loc = mainForm.Location;
loc.Offset(-dialogForm.Width, 0);
dialogForm.Location = loc;
dialogForm.Height = mainForm.Height;
}
return dialogForm;
public BrotliMarkerInfoPanel(){
InitializeComponent();
textBoxContext.DefaultStyle = StyleNormalGray;
}
private IList<MarkerNode> prevMarkerNodes = null;
private MarkerNode prevCaretNode = null;
public FormBitStreamContext(){
InitializeComponent();
textBoxContext.DefaultStyle = StyleNormalGray;
}
public void Display(IList<MarkerNode> markerNodes, HashSet<MarkerNode> highlightedNodes, MarkerNode caretNode){
public void UpdateMarkers(IList<MarkerNode> markerSequence, HashSet<MarkerNode> highlightedNodes, MarkerNode caretNode){
if (ReferenceEquals(prevCaretNode, caretNode)){
return;
}
@ -57,12 +36,12 @@ namespace BrotliBuilder.Dialogs{
textBoxContext.Selection.BeginUpdate();
textBoxContext.ClearStyle(StyleIndex.All);
if (!ReferenceEquals(prevMarkerNodes, markerNodes)){
prevMarkerNodes = markerNodes;
if (!ReferenceEquals(prevMarkerNodes, markerSequence)){
prevMarkerNodes = markerSequence;
StringBuilder build = new StringBuilder(512);
foreach(MarkerNode node in markerNodes){
foreach(MarkerNode node in markerSequence){
build.Append('\t', node.Depth);
build.Append(node.Marker.Info);
build.Append('\n');
@ -71,8 +50,8 @@ namespace BrotliBuilder.Dialogs{
textBoxContext.Text = build.ToString();
}
for(int line = 0; line < markerNodes.Count; line++){
MarkerNode node = markerNodes[line];
for(int line = 0; line < markerSequence.Count; line++){
MarkerNode node = markerSequence[line];
IMarkerInfo info = node.Marker.Info;
int indexColor = highlightedNodes.Contains(node) ? 1 : 0;
@ -85,7 +64,7 @@ namespace BrotliBuilder.Dialogs{
}
}
int caretLine = markerNodes.IndexOf(caretNode);
int caretLine = markerSequence.IndexOf(caretNode);
textBoxContext.Navigate(caretLine);
textBoxContext.Selection.EndUpdate();

View File

@ -3,13 +3,12 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using BrotliBuilder.Dialogs;
using BrotliBuilder.Utils;
using BrotliLib.Markers;
using FastColoredTextBoxNS;
namespace BrotliBuilder.Components{
class MarkedTextBox : FastColoredTextBox{
public class MarkedTextBox : FastColoredTextBox{
private static readonly TextStyle[] MainStyles = Colors.List
.Select(color => Colors.Mix(SystemColors.Control, color, 0.725))
.Select(color => new TextStyle(new SolidBrush(Color.Black), new SolidBrush(color), FontStyle.Regular))
@ -17,6 +16,20 @@ namespace BrotliBuilder.Components{
private static readonly TextStyle HighlightStyle = new TextStyle(new SolidBrush(Color.White), new SolidBrush(Color.FromArgb(48, 48, 48)), FontStyle.Regular);
public class MarkerUpdateEventArgs : EventArgs{
public IList<MarkerNode> MarkerSequence { get; }
public HashSet<MarkerNode> HighlightedNodes { get; }
public MarkerNode CaretNode { get; }
public MarkerUpdateEventArgs(IList<MarkerNode> markerSequence, HashSet<MarkerNode> highlightedNodes, MarkerNode caretNode){
this.MarkerSequence = markerSequence;
this.HighlightedNodes = highlightedNodes;
this.CaretNode = caretNode;
}
}
public event EventHandler<MarkerUpdateEventArgs> MarkersUpdated;
private readonly StyleIndex[] mainStyleIndex;
private readonly StyleIndex highlightStyleIndex;
@ -114,7 +127,7 @@ namespace BrotliBuilder.Components{
updatingMarkers = false;
markerCaret = newMarkerCaret;
FormBitStreamContext.GetOrSpawn(this).Display(markerSequence, new HashSet<MarkerNode>(highlightedMarkers), markerCaret);
MarkersUpdated?.Invoke(this, new MarkerUpdateEventArgs(markerSequence, new HashSet<MarkerNode>(highlightedMarkers), markerCaret));
}
private void MarkedFastTextBox_SelectionChanged(object sender, EventArgs e){

View File

@ -47,18 +47,25 @@
this.statusBarPanelPadding2 = new System.Windows.Forms.StatusBarPanel();
this.statusBarPanelTimeOutput = new System.Windows.Forms.StatusBarPanel();
this.timerRegenerationDelay = new System.Windows.Forms.Timer(this.components);
this.splitContainerBottom = new System.Windows.Forms.SplitContainer();
this.splitContainerRightBottom = new System.Windows.Forms.SplitContainer();
this.brotliFilePanelGenerated = new BrotliBuilder.Components.BrotliFilePanel();
this.brotliFilePanelOriginal = new BrotliBuilder.Components.BrotliFilePanel();
this.splitContainerRight = new System.Windows.Forms.SplitContainer();
this.splitContainerMain = new System.Windows.Forms.SplitContainer();
this.brotliMarkerInfoPanel = new BrotliBuilder.Components.BrotliMarkerInfoPanel();
this.labelFileStructure = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanelPadding1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanelTimeBits)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanelPadding2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanelTimeOutput)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.splitContainerBottom)).BeginInit();
this.splitContainerBottom.Panel1.SuspendLayout();
this.splitContainerBottom.Panel2.SuspendLayout();
this.splitContainerBottom.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainerRightBottom)).BeginInit();
this.splitContainerRightBottom.Panel1.SuspendLayout();
this.splitContainerRightBottom.Panel2.SuspendLayout();
this.splitContainerRightBottom.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainerRight)).BeginInit();
this.splitContainerRight.Panel1.SuspendLayout();
this.splitContainerRight.Panel2.SuspendLayout();
this.splitContainerRight.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainerMain)).BeginInit();
this.splitContainerMain.Panel1.SuspendLayout();
this.splitContainerMain.Panel2.SuspendLayout();
@ -186,10 +193,11 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.flowPanelBlocks.BackColor = System.Drawing.SystemColors.Control;
this.flowPanelBlocks.Location = new System.Drawing.Point(0, 0);
this.flowPanelBlocks.Margin = new System.Windows.Forms.Padding(0);
this.flowPanelBlocks.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.flowPanelBlocks.Location = new System.Drawing.Point(14, 28);
this.flowPanelBlocks.Margin = new System.Windows.Forms.Padding(14, 6, 6, 3);
this.flowPanelBlocks.Name = "flowPanelBlocks";
this.flowPanelBlocks.Size = new System.Drawing.Size(1008, 230);
this.flowPanelBlocks.Size = new System.Drawing.Size(855, 177);
this.flowPanelBlocks.TabIndex = 0;
this.flowPanelBlocks.WrapContents = false;
this.flowPanelBlocks.SizeChanged += new System.EventHandler(this.flowPanelBlocks_SizeChanged);
@ -197,7 +205,7 @@
//
// statusBar
//
this.statusBar.Location = new System.Drawing.Point(0, 639);
this.statusBar.Location = new System.Drawing.Point(0, 580);
this.statusBar.Name = "statusBar";
this.statusBar.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] {
this.statusBarPanelPadding1,
@ -205,7 +213,7 @@
this.statusBarPanelPadding2,
this.statusBarPanelTimeOutput});
this.statusBar.ShowPanels = true;
this.statusBar.Size = new System.Drawing.Size(1008, 22);
this.statusBar.Size = new System.Drawing.Size(1264, 22);
this.statusBar.SizingGrip = false;
this.statusBar.TabIndex = 1;
//
@ -238,29 +246,29 @@
this.timerRegenerationDelay.Interval = 300;
this.timerRegenerationDelay.Tick += new System.EventHandler(this.timerRegenerationDelay_Tick);
//
// splitContainerBottom
// splitContainerRightBottom
//
this.splitContainerBottom.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.splitContainerRightBottom.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.splitContainerBottom.BackColor = System.Drawing.SystemColors.ActiveBorder;
this.splitContainerBottom.Location = new System.Drawing.Point(0, 0);
this.splitContainerBottom.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
this.splitContainerBottom.Name = "splitContainerBottom";
this.splitContainerRightBottom.BackColor = System.Drawing.SystemColors.ActiveBorder;
this.splitContainerRightBottom.Location = new System.Drawing.Point(0, 0);
this.splitContainerRightBottom.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
this.splitContainerRightBottom.Name = "splitContainerRightBottom";
//
// splitContainerBottom.Panel1
// splitContainerRightBottom.Panel1
//
this.splitContainerBottom.Panel1.BackColor = System.Drawing.SystemColors.ControlLight;
this.splitContainerBottom.Panel1.Controls.Add(this.brotliFilePanelGenerated);
this.splitContainerRightBottom.Panel1.BackColor = System.Drawing.SystemColors.ControlLight;
this.splitContainerRightBottom.Panel1.Controls.Add(this.brotliFilePanelGenerated);
//
// splitContainerBottom.Panel2
// splitContainerRightBottom.Panel2
//
this.splitContainerBottom.Panel2.BackColor = System.Drawing.SystemColors.ControlLight;
this.splitContainerBottom.Panel2.Controls.Add(this.brotliFilePanelOriginal);
this.splitContainerBottom.Size = new System.Drawing.Size(1008, 404);
this.splitContainerBottom.SplitterDistance = 503;
this.splitContainerBottom.SplitterWidth = 2;
this.splitContainerBottom.TabIndex = 0;
this.splitContainerRightBottom.Panel2.BackColor = System.Drawing.SystemColors.ControlLight;
this.splitContainerRightBottom.Panel2.Controls.Add(this.brotliFilePanelOriginal);
this.splitContainerRightBottom.Size = new System.Drawing.Size(884, 375);
this.splitContainerRightBottom.SplitterDistance = 441;
this.splitContainerRightBottom.SplitterWidth = 2;
this.splitContainerRightBottom.TabIndex = 0;
//
// brotliFilePanelGenerated
//
@ -271,8 +279,9 @@
this.brotliFilePanelGenerated.Location = new System.Drawing.Point(0, 5);
this.brotliFilePanelGenerated.Margin = new System.Windows.Forms.Padding(3, 5, 3, 3);
this.brotliFilePanelGenerated.Name = "brotliFilePanelGenerated";
this.brotliFilePanelGenerated.Size = new System.Drawing.Size(503, 399);
this.brotliFilePanelGenerated.Size = new System.Drawing.Size(440, 365);
this.brotliFilePanelGenerated.TabIndex = 0;
this.brotliFilePanelGenerated.MarkersUpdated += new System.EventHandler<BrotliBuilder.Components.MarkedTextBox.MarkerUpdateEventArgs>(this.brotliFilePanel_MarkersUpdated);
//
// brotliFilePanelOriginal
//
@ -283,37 +292,81 @@
this.brotliFilePanelOriginal.Location = new System.Drawing.Point(0, 5);
this.brotliFilePanelOriginal.Margin = new System.Windows.Forms.Padding(3, 5, 3, 3);
this.brotliFilePanelOriginal.Name = "brotliFilePanelOriginal";
this.brotliFilePanelOriginal.Size = new System.Drawing.Size(503, 399);
this.brotliFilePanelOriginal.Size = new System.Drawing.Size(439, 365);
this.brotliFilePanelOriginal.TabIndex = 0;
this.brotliFilePanelOriginal.MarkersUpdated += new System.EventHandler<BrotliBuilder.Components.MarkedTextBox.MarkerUpdateEventArgs>(this.brotliFilePanel_MarkersUpdated);
//
// splitContainerRight
//
this.splitContainerRight.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.splitContainerRight.Location = new System.Drawing.Point(0, 0);
this.splitContainerRight.Margin = new System.Windows.Forms.Padding(0);
this.splitContainerRight.Name = "splitContainerRight";
this.splitContainerRight.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainerRight.Panel1
//
this.splitContainerRight.Panel1.Controls.Add(this.labelFileStructure);
this.splitContainerRight.Panel1.Controls.Add(this.flowPanelBlocks);
this.splitContainerRight.Panel1MinSize = 200;
//
// splitContainerRight.Panel2
//
this.splitContainerRight.Panel2.Controls.Add(this.splitContainerRightBottom);
this.splitContainerRight.Panel2MinSize = 200;
this.splitContainerRight.Size = new System.Drawing.Size(884, 580);
this.splitContainerRight.SplitterDistance = 208;
this.splitContainerRight.SplitterWidth = 2;
this.splitContainerRight.TabIndex = 0;
//
// splitContainerMain
//
this.splitContainerMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainerMain.Location = new System.Drawing.Point(0, 0);
this.splitContainerMain.Margin = new System.Windows.Forms.Padding(0);
this.splitContainerMain.Name = "splitContainerMain";
this.splitContainerMain.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainerMain.Panel1
//
this.splitContainerMain.Panel1.Controls.Add(this.flowPanelBlocks);
this.splitContainerMain.Panel1MinSize = 200;
this.splitContainerMain.Panel1.Controls.Add(this.brotliMarkerInfoPanel);
this.splitContainerMain.Panel1MinSize = 150;
//
// splitContainerMain.Panel2
//
this.splitContainerMain.Panel2.Controls.Add(this.splitContainerBottom);
this.splitContainerMain.Panel2MinSize = 200;
this.splitContainerMain.Size = new System.Drawing.Size(1008, 639);
this.splitContainerMain.SplitterDistance = 230;
this.splitContainerMain.SplitterWidth = 2;
this.splitContainerMain.TabIndex = 0;
this.splitContainerMain.Panel2.Controls.Add(this.splitContainerRight);
this.splitContainerMain.Panel2MinSize = 250;
this.splitContainerMain.Size = new System.Drawing.Size(1264, 580);
this.splitContainerMain.SplitterDistance = 376;
this.splitContainerMain.TabIndex = 2;
//
// brotliMarkerInfoPanel
//
this.brotliMarkerInfoPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.brotliMarkerInfoPanel.Location = new System.Drawing.Point(0, 5);
this.brotliMarkerInfoPanel.Margin = new System.Windows.Forms.Padding(3, 5, 3, 3);
this.brotliMarkerInfoPanel.Name = "brotliMarkerInfoPanel";
this.brotliMarkerInfoPanel.Size = new System.Drawing.Size(377, 575);
this.brotliMarkerInfoPanel.TabIndex = 1;
//
// labelFileStructure
//
this.labelFileStructure.AutoSize = true;
this.labelFileStructure.Location = new System.Drawing.Point(11, 7);
this.labelFileStructure.Margin = new System.Windows.Forms.Padding(11, 7, 3, 0);
this.labelFileStructure.Name = "labelFileStructure";
this.labelFileStructure.Size = new System.Drawing.Size(76, 15);
this.labelFileStructure.TabIndex = 1;
this.labelFileStructure.Text = "File Structure";
//
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlLight;
this.ClientSize = new System.Drawing.Size(1008, 661);
this.ClientSize = new System.Drawing.Size(1264, 602);
this.Controls.Add(this.splitContainerMain);
this.Controls.Add(this.statusBar);
this.Font = new System.Drawing.Font("Segoe UI", 9F);
@ -327,10 +380,15 @@
((System.ComponentModel.ISupportInitialize)(this.statusBarPanelTimeBits)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanelPadding2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanelTimeOutput)).EndInit();
this.splitContainerBottom.Panel1.ResumeLayout(false);
this.splitContainerBottom.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainerBottom)).EndInit();
this.splitContainerBottom.ResumeLayout(false);
this.splitContainerRightBottom.Panel1.ResumeLayout(false);
this.splitContainerRightBottom.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainerRightBottom)).EndInit();
this.splitContainerRightBottom.ResumeLayout(false);
this.splitContainerRight.Panel1.ResumeLayout(false);
this.splitContainerRight.Panel1.PerformLayout();
this.splitContainerRight.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainerRight)).EndInit();
this.splitContainerRight.ResumeLayout(false);
this.splitContainerMain.Panel1.ResumeLayout(false);
this.splitContainerMain.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainerMain)).EndInit();
@ -358,15 +416,18 @@
private System.Windows.Forms.MenuItem menuItemEncodeUncompressedMBs;
private System.Windows.Forms.MenuItem menuItemView;
private System.Windows.Forms.MenuItem menuItemStaticDictionary;
private System.Windows.Forms.SplitContainer splitContainerBottom;
private System.Windows.Forms.SplitContainer splitContainerRightBottom;
private System.Windows.Forms.MenuItem menuItemWrapOutput;
private Components.BrotliFilePanel brotliFilePanelGenerated;
private Components.BrotliFilePanel brotliFilePanelOriginal;
private System.Windows.Forms.SplitContainer splitContainerMain;
private System.Windows.Forms.SplitContainer splitContainerRight;
private System.Windows.Forms.MenuItem menuItemFileStructure;
private System.Windows.Forms.MenuItem menuItemEncodeLiterals;
private System.Windows.Forms.MenuItem menuItemTransform;
private System.Windows.Forms.MenuItem menuItemTransformTestDistanceParams;
private System.Windows.Forms.MenuItem menuItemTransformRebuild;
private System.Windows.Forms.SplitContainer splitContainerMain;
private Components.BrotliMarkerInfoPanel brotliMarkerInfoPanel;
private System.Windows.Forms.Label labelFileStructure;
}
}

View File

@ -3,6 +3,7 @@ using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using BrotliBuilder.Blocks;
using BrotliBuilder.Components;
using BrotliBuilder.Dialogs;
using BrotliImpl.Encoders;
using BrotliImpl.Transformers;
@ -63,14 +64,14 @@ namespace BrotliBuilder{
public FormMain(){
InitializeComponent();
splitContainerBottom.Panel2Collapsed = true;
splitContainerRightBottom.Panel2Collapsed = true;
OnNewBrotliFile();
}
#region File state handling
private void LoadExistingBrotliFile(byte[] bytes){
splitContainerBottom.Panel2Collapsed = false;
splitContainerRightBottom.Panel2Collapsed = false;
statusBarPanelTimeBits.Text = "Decompressing...";
statusBarPanelTimeOutput.Text = "Decompressing...";
@ -182,6 +183,10 @@ namespace BrotliBuilder{
flowPanelBlocks.ResumeLayout(true);
}
private void brotliFilePanel_MarkersUpdated(object sender, MarkedTextBox.MarkerUpdateEventArgs e){
brotliMarkerInfoPanel.UpdateMarkers(e.MarkerSequence, e.HighlightedNodes, e.CaretNode);
}
#endregion
@ -239,7 +244,7 @@ namespace BrotliBuilder{
bool enable = !menuItemFileStructure.Checked;
menuItemFileStructure.Checked = enable;
splitContainerMain.Panel1Collapsed = !enable;
splitContainerRight.Panel1Collapsed = !enable;
}
private void menuItemWrapOutput_Click(object sender, EventArgs e){
@ -295,7 +300,7 @@ namespace BrotliBuilder{
return;
}
splitContainerBottom.Panel2Collapsed = true;
splitContainerRightBottom.Panel2Collapsed = true;
UpdateBrotliFile(() => {
try{