From de6b18db8226650cee9726c4694931bdc4b89fad Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Sun, 10 Jan 2021 23:49:28 -0800 Subject: Implement direcitonality UI --- .../Directionality/DirectionalityOptions.cs | 172 +++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 grapher/Models/Options/Directionality/DirectionalityOptions.cs (limited to 'grapher/Models/Options/Directionality/DirectionalityOptions.cs') diff --git a/grapher/Models/Options/Directionality/DirectionalityOptions.cs b/grapher/Models/Options/Directionality/DirectionalityOptions.cs new file mode 100644 index 0000000..3de93b4 --- /dev/null +++ b/grapher/Models/Options/Directionality/DirectionalityOptions.cs @@ -0,0 +1,172 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace grapher.Models.Options.Directionality +{ + public class DirectionalityOptions + { + public DirectionalityOptions( + Panel containingPanel, + Label directionalityLabel, + Label directionalityX, + Label directionalityY, + Option lpNorm, + OptionXY domain, + OptionXY range, + CheckBox wholeCheckBox, + CheckBox byComponentCheckBox) + { + ContainingPanel = containingPanel; + DirectionalityLabel = directionalityLabel; + DirectionalityX = directionalityX; + DirectionalityY = directionalityY; + LpNorm = lpNorm; + Domain = domain; + Range = range; + WholeCheckBox = wholeCheckBox; + ByComponentCheckBox = byComponentCheckBox; + + ContainingPanel.Paint += panel_Paint; + DirectionalityLabel.Left = ContainingPanel.Left + Constants.DirectionalityTitlePad; + DirectionalityLabel.Top = ContainingPanel.Top + Constants.DirectionalityTitlePad; + ToWhole(); + Hide(); + } + + public Panel ContainingPanel { get; } + + public Label DirectionalityLabel { get; } + + public Label DirectionalityX { get; } + + public Label DirectionalityY { get; } + + public Option LpNorm { get; } + + public OptionXY Domain { get; } + + public OptionXY Range { get; } + + public CheckBox WholeCheckBox { get; } + + public CheckBox ByComponentCheckBox { get; } + + public DomainArgs GetDomainArgs() + { + if (!ByComponentCheckBox.Checked) + { + return new DomainArgs + { + domainXY = new Vec2 + { + x = Domain.Fields.X, + y = Domain.Fields.Y, + }, + lpNorm = LpNorm.Field.Data, + }; + } + else + { + return new DomainArgs + { + domainXY = new Vec2 + { + x = 1, + y = 1, + }, + lpNorm = 2, + }; + + } + } + + public Vec2 GetRangeXY() + { + if (!ByComponentCheckBox.Checked) + { + return new Vec2 + { + x = Range.Fields.X, + y = Range.Fields.Y, + }; + } + else + { + return new Vec2 + { + x = 1, + y = 1, + }; + } + + } + + public void SetActiveValues(DriverSettings settings) + { + Domain.SetActiveValues(settings.domainArgs.domainXY.x, settings.domainArgs.domainXY.y); + LpNorm.SetActiveValue(settings.domainArgs.lpNorm); + Range.SetActiveValues(settings.rangeXY.x, settings.rangeXY.y); + } + + public void Hide() + { + DirectionalityX.Hide(); + DirectionalityY.Hide(); + LpNorm.Hide(); + Domain.Hide(); + Range.Hide(); + WholeCheckBox.Hide(); + ByComponentCheckBox.Hide(); + DrawHidden(); + } + + public void ToByComponent() + { + LpNorm.SetToUnavailable(); + Domain.SetToUnavailable(); + Range.SetToUnavailable(); + } + + public void ToWhole() + { + LpNorm.SetToAvailable(); + Domain.SetToAvailable(); + Range.SetToAvailable(); + } + + public void Show() + { + DirectionalityX.Hide(); + DirectionalityY.Hide(); + LpNorm.Hide(); + Domain.Hide(); + Range.Hide(); + WholeCheckBox.Hide(); + ByComponentCheckBox.Hide(); + DrawShown(); + } + + private void DrawHidden() + { + ContainingPanel.Height = DirectionalityLabel.Height + 2 * Constants.DirectionalityTitlePad; + } + + private void DrawShown() + { + ContainingPanel.Height = WholeCheckBox.Bottom - DirectionalityLabel.Top + 2 * Constants.DirectionalityTitlePad; + } + + private void panel_Paint(object sender, PaintEventArgs e) + { + Color col = Color.DarkGray; + ButtonBorderStyle bbs = ButtonBorderStyle.Dashed; + int thickness = 2; + ControlPaint.DrawBorder(e.Graphics, this.ContainingPanel.ClientRectangle, col, thickness, bbs, col, thickness, bbs, col, thickness, bbs, col, thickness, bbs); + } + } +} -- cgit v1.2.3 From 6196cee980c7b8021b752b684cbe14bf7c41b657 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 11 Jan 2021 00:34:56 -0800 Subject: Some fixes --- .../Directionality/DirectionalityOptions.cs | 64 +++++++++++++++------- 1 file changed, 44 insertions(+), 20 deletions(-) (limited to 'grapher/Models/Options/Directionality/DirectionalityOptions.cs') diff --git a/grapher/Models/Options/Directionality/DirectionalityOptions.cs b/grapher/Models/Options/Directionality/DirectionalityOptions.cs index 3de93b4..df1b4de 100644 --- a/grapher/Models/Options/Directionality/DirectionalityOptions.cs +++ b/grapher/Models/Options/Directionality/DirectionalityOptions.cs @@ -32,8 +32,10 @@ namespace grapher.Models.Options.Directionality ByComponentCheckBox = byComponentCheckBox; ContainingPanel.Paint += panel_Paint; + directionalityLabel.Click += title_click; DirectionalityLabel.Left = ContainingPanel.Left + Constants.DirectionalityTitlePad; DirectionalityLabel.Top = ContainingPanel.Top + Constants.DirectionalityTitlePad; + IsHidden = false; ToWhole(); Hide(); } @@ -56,6 +58,8 @@ namespace grapher.Models.Options.Directionality public CheckBox ByComponentCheckBox { get; } + private bool IsHidden { get; set; } + public DomainArgs GetDomainArgs() { if (!ByComponentCheckBox.Checked) @@ -115,14 +119,34 @@ namespace grapher.Models.Options.Directionality public void Hide() { - DirectionalityX.Hide(); - DirectionalityY.Hide(); - LpNorm.Hide(); - Domain.Hide(); - Range.Hide(); - WholeCheckBox.Hide(); - ByComponentCheckBox.Hide(); - DrawHidden(); + if (!IsHidden) + { + DirectionalityX.Hide(); + DirectionalityY.Hide(); + LpNorm.Hide(); + Domain.Hide(); + Range.Hide(); + WholeCheckBox.Hide(); + ByComponentCheckBox.Hide(); + DrawHidden(); + IsHidden = true; + } + } + + public void Show() + { + if (IsHidden) + { + DirectionalityX.Hide(); + DirectionalityY.Hide(); + LpNorm.Hide(); + Domain.Hide(); + Range.Hide(); + WholeCheckBox.Hide(); + ByComponentCheckBox.Hide(); + DrawShown(); + IsHidden = false; + } } public void ToByComponent() @@ -139,18 +163,6 @@ namespace grapher.Models.Options.Directionality Range.SetToAvailable(); } - public void Show() - { - DirectionalityX.Hide(); - DirectionalityY.Hide(); - LpNorm.Hide(); - Domain.Hide(); - Range.Hide(); - WholeCheckBox.Hide(); - ByComponentCheckBox.Hide(); - DrawShown(); - } - private void DrawHidden() { ContainingPanel.Height = DirectionalityLabel.Height + 2 * Constants.DirectionalityTitlePad; @@ -168,5 +180,17 @@ namespace grapher.Models.Options.Directionality int thickness = 2; ControlPaint.DrawBorder(e.Graphics, this.ContainingPanel.ClientRectangle, col, thickness, bbs, col, thickness, bbs, col, thickness, bbs, col, thickness, bbs); } + + private void title_click(object sender, EventArgs e) + { + if (IsHidden) + { + Show(); + } + else + { + Hide(); + } + } } } -- cgit v1.2.3 From 0776e8313bc2aa406da4603ca2d77e4140e35a5a Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 11 Jan 2021 14:50:37 -0800 Subject: Directionality menu progress --- .../Directionality/DirectionalityOptions.cs | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'grapher/Models/Options/Directionality/DirectionalityOptions.cs') diff --git a/grapher/Models/Options/Directionality/DirectionalityOptions.cs b/grapher/Models/Options/Directionality/DirectionalityOptions.cs index df1b4de..c83ea52 100644 --- a/grapher/Models/Options/Directionality/DirectionalityOptions.cs +++ b/grapher/Models/Options/Directionality/DirectionalityOptions.cs @@ -15,6 +15,7 @@ namespace grapher.Models.Options.Directionality Label directionalityLabel, Label directionalityX, Label directionalityY, + Label directionalityActiveValueTitle, Option lpNorm, OptionXY domain, OptionXY range, @@ -25,6 +26,7 @@ namespace grapher.Models.Options.Directionality DirectionalityLabel = directionalityLabel; DirectionalityX = directionalityX; DirectionalityY = directionalityY; + DirectionalityActiveValueTitle = directionalityActiveValueTitle; LpNorm = lpNorm; Domain = domain; Range = range; @@ -32,9 +34,9 @@ namespace grapher.Models.Options.Directionality ByComponentCheckBox = byComponentCheckBox; ContainingPanel.Paint += panel_Paint; - directionalityLabel.Click += title_click; - DirectionalityLabel.Left = ContainingPanel.Left + Constants.DirectionalityTitlePad; - DirectionalityLabel.Top = ContainingPanel.Top + Constants.DirectionalityTitlePad; + DirectionalityLabel.Click += title_click; + DirectionalityLabel.Left = Constants.DirectionalityTitlePad; + DirectionalityLabel.Top = Constants.DirectionalityTitlePad; IsHidden = false; ToWhole(); Hide(); @@ -48,6 +50,8 @@ namespace grapher.Models.Options.Directionality public Label DirectionalityY { get; } + public Label DirectionalityActiveValueTitle { get; } + public Option LpNorm { get; } public OptionXY Domain { get; } @@ -123,11 +127,13 @@ namespace grapher.Models.Options.Directionality { DirectionalityX.Hide(); DirectionalityY.Hide(); + DirectionalityActiveValueTitle.Hide(); LpNorm.Hide(); Domain.Hide(); Range.Hide(); WholeCheckBox.Hide(); ByComponentCheckBox.Hide(); + DirectionalityLabel.Text = Constants.DirectionalityTitleClosed; DrawHidden(); IsHidden = true; } @@ -137,13 +143,15 @@ namespace grapher.Models.Options.Directionality { if (IsHidden) { - DirectionalityX.Hide(); - DirectionalityY.Hide(); - LpNorm.Hide(); - Domain.Hide(); - Range.Hide(); - WholeCheckBox.Hide(); - ByComponentCheckBox.Hide(); + DirectionalityX.Show(); + DirectionalityY.Show(); + DirectionalityActiveValueTitle.Show(); + LpNorm.Show(); + Domain.Show(); + Range.Show(); + WholeCheckBox.Show(); + ByComponentCheckBox.Show(); + DirectionalityLabel.Text = Constants.DirectionalityTitleOpen; DrawShown(); IsHidden = false; } @@ -166,11 +174,13 @@ namespace grapher.Models.Options.Directionality private void DrawHidden() { ContainingPanel.Height = DirectionalityLabel.Height + 2 * Constants.DirectionalityTitlePad; + ContainingPanel.Invalidate(); } private void DrawShown() { ContainingPanel.Height = WholeCheckBox.Bottom - DirectionalityLabel.Top + 2 * Constants.DirectionalityTitlePad; + ContainingPanel.Invalidate(); } private void panel_Paint(object sender, PaintEventArgs e) -- cgit v1.2.3 From 784f7cab713640f4a13880ebc3c5abc10894d23c Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 12 Jan 2021 09:25:48 -0800 Subject: Many small tweaks --- .../Directionality/DirectionalityOptions.cs | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'grapher/Models/Options/Directionality/DirectionalityOptions.cs') diff --git a/grapher/Models/Options/Directionality/DirectionalityOptions.cs b/grapher/Models/Options/Directionality/DirectionalityOptions.cs index c83ea52..9485877 100644 --- a/grapher/Models/Options/Directionality/DirectionalityOptions.cs +++ b/grapher/Models/Options/Directionality/DirectionalityOptions.cs @@ -20,7 +20,8 @@ namespace grapher.Models.Options.Directionality OptionXY domain, OptionXY range, CheckBox wholeCheckBox, - CheckBox byComponentCheckBox) + CheckBox byComponentCheckBox, + int top) { ContainingPanel = containingPanel; DirectionalityLabel = directionalityLabel; @@ -33,8 +34,18 @@ namespace grapher.Models.Options.Directionality WholeCheckBox = wholeCheckBox; ByComponentCheckBox = byComponentCheckBox; + Domain.Fields.LockCheckBox.Checked = false; + Range.Fields.LockCheckBox.Checked = false; + Domain.Fields.LockCheckBox.Enabled = false; + Range.Fields.LockCheckBox.Enabled = false; + Domain.Fields.LockCheckBox.Hide(); + Range.Fields.LockCheckBox.Hide(); + Domain.Fields.SetSeparate(); + Range.Fields.SetSeparate(); + ContainingPanel.Paint += panel_Paint; DirectionalityLabel.Click += title_click; + ContainingPanel.Top = top; DirectionalityLabel.Left = Constants.DirectionalityTitlePad; DirectionalityLabel.Top = Constants.DirectionalityTitlePad; IsHidden = false; @@ -62,6 +73,10 @@ namespace grapher.Models.Options.Directionality public CheckBox ByComponentCheckBox { get; } + public int OpenHeight { get => WholeCheckBox.Bottom - DirectionalityLabel.Top + 2 * Constants.DirectionalityTitlePad; } + + public int ClosedHeight { get => DirectionalityLabel.Height + 2 * Constants.DirectionalityTitlePad; } + private bool IsHidden { get; set; } public DomainArgs GetDomainArgs() @@ -149,6 +164,8 @@ namespace grapher.Models.Options.Directionality LpNorm.Show(); Domain.Show(); Range.Show(); + Domain.Fields.LockCheckBox.Hide(); + Range.Fields.LockCheckBox.Hide(); WholeCheckBox.Show(); ByComponentCheckBox.Show(); DirectionalityLabel.Text = Constants.DirectionalityTitleOpen; @@ -173,13 +190,13 @@ namespace grapher.Models.Options.Directionality private void DrawHidden() { - ContainingPanel.Height = DirectionalityLabel.Height + 2 * Constants.DirectionalityTitlePad; + ContainingPanel.Height = ClosedHeight; ContainingPanel.Invalidate(); } private void DrawShown() { - ContainingPanel.Height = WholeCheckBox.Bottom - DirectionalityLabel.Top + 2 * Constants.DirectionalityTitlePad; + ContainingPanel.Height = OpenHeight; ContainingPanel.Invalidate(); } -- cgit v1.2.3 From b6d7c7e67b487143276ad17c9ab85c0dba13180d Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 12 Jan 2021 09:43:25 -0800 Subject: Fix xy anisotropy combining in gui --- .../Options/Directionality/DirectionalityOptions.cs | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) (limited to 'grapher/Models/Options/Directionality/DirectionalityOptions.cs') diff --git a/grapher/Models/Options/Directionality/DirectionalityOptions.cs b/grapher/Models/Options/Directionality/DirectionalityOptions.cs index 9485877..d9a67cd 100644 --- a/grapher/Models/Options/Directionality/DirectionalityOptions.cs +++ b/grapher/Models/Options/Directionality/DirectionalityOptions.cs @@ -34,17 +34,8 @@ namespace grapher.Models.Options.Directionality WholeCheckBox = wholeCheckBox; ByComponentCheckBox = byComponentCheckBox; - Domain.Fields.LockCheckBox.Checked = false; - Range.Fields.LockCheckBox.Checked = false; - Domain.Fields.LockCheckBox.Enabled = false; - Range.Fields.LockCheckBox.Enabled = false; - Domain.Fields.LockCheckBox.Hide(); - Range.Fields.LockCheckBox.Hide(); - Domain.Fields.SetSeparate(); - Range.Fields.SetSeparate(); - - ContainingPanel.Paint += panel_Paint; - DirectionalityLabel.Click += title_click; + ContainingPanel.Paint += Panel_Paint; + DirectionalityLabel.Click += Title_click; ContainingPanel.Top = top; DirectionalityLabel.Left = Constants.DirectionalityTitlePad; DirectionalityLabel.Top = Constants.DirectionalityTitlePad; @@ -164,8 +155,6 @@ namespace grapher.Models.Options.Directionality LpNorm.Show(); Domain.Show(); Range.Show(); - Domain.Fields.LockCheckBox.Hide(); - Range.Fields.LockCheckBox.Hide(); WholeCheckBox.Show(); ByComponentCheckBox.Show(); DirectionalityLabel.Text = Constants.DirectionalityTitleOpen; @@ -200,7 +189,7 @@ namespace grapher.Models.Options.Directionality ContainingPanel.Invalidate(); } - private void panel_Paint(object sender, PaintEventArgs e) + private void Panel_Paint(object sender, PaintEventArgs e) { Color col = Color.DarkGray; ButtonBorderStyle bbs = ButtonBorderStyle.Dashed; @@ -208,7 +197,7 @@ namespace grapher.Models.Options.Directionality ControlPaint.DrawBorder(e.Graphics, this.ContainingPanel.ClientRectangle, col, thickness, bbs, col, thickness, bbs, col, thickness, bbs, col, thickness, bbs); } - private void title_click(object sender, EventArgs e) + private void Title_click(object sender, EventArgs e) { if (IsHidden) { -- cgit v1.2.3 From 376e48c82ce992fd35aef927bbff9753f3547951 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 19 Jan 2021 00:31:11 -0800 Subject: further tweaks --- grapher/Models/Options/Directionality/DirectionalityOptions.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'grapher/Models/Options/Directionality/DirectionalityOptions.cs') diff --git a/grapher/Models/Options/Directionality/DirectionalityOptions.cs b/grapher/Models/Options/Directionality/DirectionalityOptions.cs index d9a67cd..c21b932 100644 --- a/grapher/Models/Options/Directionality/DirectionalityOptions.cs +++ b/grapher/Models/Options/Directionality/DirectionalityOptions.cs @@ -155,6 +155,7 @@ namespace grapher.Models.Options.Directionality LpNorm.Show(); Domain.Show(); Range.Show(); + Range.Fields.LockCheckBox.Hide(); WholeCheckBox.Show(); ByComponentCheckBox.Show(); DirectionalityLabel.Text = Constants.DirectionalityTitleOpen; -- cgit v1.2.3