From 297d610ca1f2978c6e354c679cbed4e1908be743 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 1 Sep 2020 00:31:18 -0700 Subject: Set whole or by component with toolstrip item --- grapher/Models/Options/ApplyOptions.cs | 85 ++++++++++++++++++++++++++++++++++ grapher/Models/Options/CapOptions.cs | 8 +++- 2 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 grapher/Models/Options/ApplyOptions.cs (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs new file mode 100644 index 0000000..389bf62 --- /dev/null +++ b/grapher/Models/Options/ApplyOptions.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.DataVisualization.Charting; + +namespace grapher.Models.Options +{ + public class ApplyOptions + { + public ApplyOptions( + ToolStripMenuItem wholeVectorMenuItem, + ToolStripMenuItem byComponentMenuItem) + { + WholeVectorMenuItem = wholeVectorMenuItem; + ByComponentVectorMenuItem = byComponentMenuItem; + + WholeVectorMenuItem.Click += new System.EventHandler(OnWholeClicked); + ByComponentVectorMenuItem.Click += new System.EventHandler(OnByComponentClicked); + + WholeVectorMenuItem.CheckedChanged += new System.EventHandler(OnWholeCheckedChange); + ByComponentVectorMenuItem.CheckedChanged += new System.EventHandler(OnByComponentCheckedChange); + + IsWhole = false; + } + + public ToolStripMenuItem WholeVectorMenuItem { get; } + + public ToolStripMenuItem ByComponentVectorMenuItem { get; } + + public bool IsWhole { get; private set; } + + public void SetActive(bool isWhole) + { + WholeVectorMenuItem.Checked = isWhole; + ByComponentVectorMenuItem.Checked = !isWhole; + } + + public void OnWholeClicked(object sender, EventArgs e) + { + if (!WholeVectorMenuItem.Checked) + { + WholeVectorMenuItem.Checked = true; + ByComponentVectorMenuItem.Checked = false; + } + } + + public void OnByComponentClicked(object sender, EventArgs e) + { + if (!ByComponentVectorMenuItem.Checked) + { + WholeVectorMenuItem.Checked = false; + ByComponentVectorMenuItem.Checked = true; + } + } + + public void OnWholeCheckedChange(object sender, EventArgs e) + { + if (WholeVectorMenuItem.Checked) + { + EnableWholeApplication(); + } + } + + public void OnByComponentCheckedChange(object sender, EventArgs e) + { + if (ByComponentVectorMenuItem.Checked) + { + EnableWholeApplication(); + } + } + + public void EnableWholeApplication() + { + IsWhole = true; + } + public void EnableByComponentApplication() + { + IsWhole = false; + } + + } +} diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index 493561a..3bdf3c6 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -93,12 +93,16 @@ namespace grapher CapOption.ActiveValueLabels.X.FormatString = GainCapFormatString; CapOption.ActiveValueLabels.X.Prefix = "Gain"; CapOption.SetActiveValues(gainCap, gainCap); + SensitivityCapCheck.Checked = true; + VelocityGainCapCheck.Checked = false; } else { CapOption.ActiveValueLabels.X.FormatString = ActiveValueLabel.DefaultFormatString; CapOption.ActiveValueLabels.X.Prefix = string.Empty; CapOption.SetActiveValues(sensCapX, sensCapY); + SensitivityCapCheck.Checked = false; + VelocityGainCapCheck.Checked = true; } } @@ -122,7 +126,7 @@ namespace grapher void OnSensitivityCapCheckedChange(object sender, EventArgs e) { - if (SensitivityCapCheck.Checked == true) + if (SensitivityCapCheck.Checked) { EnableSensitivityCap(); } @@ -130,7 +134,7 @@ namespace grapher void OnVelocityGainCapCheckedChange(object sender, EventArgs e) { - if (SensitivityCapCheck.Checked == true) + if (SensitivityCapCheck.Checked) { EnableVelocityGainCap(); } -- cgit v1.2.3 From b5b87e24053c9f52a2edb5b1cb48f8e27e434ce1 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 1 Sep 2020 00:56:07 -0700 Subject: Show xy charts only when accel applied by component --- grapher/Models/Options/ApplyOptions.cs | 2 +- grapher/Models/Options/OptionXY.cs | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 389bf62..0c9fd6a 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -68,7 +68,7 @@ namespace grapher.Models.Options { if (ByComponentVectorMenuItem.Checked) { - EnableWholeApplication(); + EnableByComponentApplication(); } } diff --git a/grapher/Models/Options/OptionXY.cs b/grapher/Models/Options/OptionXY.cs index 8e22617..b026c8a 100644 --- a/grapher/Models/Options/OptionXY.cs +++ b/grapher/Models/Options/OptionXY.cs @@ -24,9 +24,8 @@ namespace grapher Form containingForm, double defaultData, Label label, - AccelCharts accelCharts, ActiveValueLabelXY activeValueLabels) - : this(new FieldXY(xBox, yBox, lockCheckBox, containingForm, defaultData, accelCharts), label, activeValueLabels) + : this(new FieldXY(xBox, yBox, lockCheckBox, containingForm, defaultData), label, activeValueLabels) { } @@ -38,8 +37,7 @@ namespace grapher double defaultData, Label label, ActiveValueLabelXY activeValueLabels, - string startingName, - AccelCharts accelCharts): + string startingName): this( xBox, yBox, @@ -47,7 +45,6 @@ namespace grapher containingForm, defaultData, label, - accelCharts, activeValueLabels) { SetName(startingName); -- cgit v1.2.3 From 246fb772c5bf7dd6a85143fadebece3b4d9f1e04 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 1 Sep 2020 02:18:41 -0700 Subject: Add constants class and separate classes into regions --- grapher/Models/Options/AccelOptions.cs | 20 ++++++++++++++++++++ grapher/Models/Options/ActiveValueLabel.cs | 20 ++++++++++++++++++++ grapher/Models/Options/ActiveValueLabelXY.cs | 16 ++++++++++++++++ grapher/Models/Options/ApplyOptions.cs | 10 ++++++++++ grapher/Models/Options/CapOptions.cs | 17 ++++++++++++++++- grapher/Models/Options/Option.cs | 12 ++++++++++++ grapher/Models/Options/OptionXY.cs | 10 ++++++++++ 7 files changed, 104 insertions(+), 1 deletion(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptions.cs b/grapher/Models/Options/AccelOptions.cs index 6b98274..224c5cb 100644 --- a/grapher/Models/Options/AccelOptions.cs +++ b/grapher/Models/Options/AccelOptions.cs @@ -11,9 +11,15 @@ namespace grapher { public class AccelOptions { + #region Constants + public const int PossibleOptionsCount = 4; public const int PossibleOptionsXYCount = 2; + #endregion Constants + + #region Fields + public static readonly Dictionary AccelerationTypes = new List { new LinearLayout(), @@ -27,6 +33,10 @@ namespace grapher new OffLayout() }.ToDictionary(k => k.Name); + #endregion Fields + + #region Constructors + public AccelOptions( ComboBox accelDropdown, Option[] options, @@ -57,6 +67,10 @@ namespace grapher Layout("Off"); } + #endregion Constructors + + #region Properties + public Button WriteButton { get; } public ComboBox AccelDropdown { get; } @@ -69,6 +83,10 @@ namespace grapher public OptionXY[] OptionsXY { get; } + #endregion Properties + + #region Methods + public void SetActiveValue(int index) { var name = AccelerationTypes.Where(t => t.Value.Index == index).FirstOrDefault().Value.Name; @@ -87,5 +105,7 @@ namespace grapher AccelerationIndex = accelerationType.Index; accelerationType.Layout(Options, OptionsXY, WriteButton); } + + #endregion Methods } } diff --git a/grapher/Models/Options/ActiveValueLabel.cs b/grapher/Models/Options/ActiveValueLabel.cs index 138775a..b2355b5 100644 --- a/grapher/Models/Options/ActiveValueLabel.cs +++ b/grapher/Models/Options/ActiveValueLabel.cs @@ -10,12 +10,22 @@ namespace grapher.Models.Options { public class ActiveValueLabel { + #region Constants + public const string DefaultFormatString = "0.######"; public static readonly Color ActiveValueFontColor = Color.FromArgb(255, 65, 65, 65); + #endregion Constants + + #region Fields + private string _prefix; private string _value; + #endregion Fields + + #region Constructors + public ActiveValueLabel(Label valueLabel, Label centeringLabel) { ValueLabel = valueLabel; @@ -29,6 +39,10 @@ namespace grapher.Models.Options Prefix = string.Empty; } + #endregion Constructors + + #region Properties + public Label ValueLabel { get; } public string FormatString { get; set; } @@ -79,6 +93,10 @@ namespace grapher.Models.Options } } + #endregion Properties + + #region Methods + public void Hide() { ValueLabel.Hide(); @@ -103,5 +121,7 @@ namespace grapher.Models.Options { ValueLabel.Text = string.IsNullOrWhiteSpace(Prefix) ? Value: $"{Prefix}: {Value}"; } + + #endregion Methods } } diff --git a/grapher/Models/Options/ActiveValueLabelXY.cs b/grapher/Models/Options/ActiveValueLabelXY.cs index 12506e9..553ce48 100644 --- a/grapher/Models/Options/ActiveValueLabelXY.cs +++ b/grapher/Models/Options/ActiveValueLabelXY.cs @@ -8,9 +8,15 @@ namespace grapher.Models.Options { public class ActiveValueLabelXY { + #region Constants + public const int ActiveLabelXYSeparation = 2; public const string ShortenedFormatString = "0.###"; + #endregion Constants + + #region Constructors + public ActiveValueLabelXY( ActiveValueLabel x, ActiveValueLabel y) @@ -29,6 +35,10 @@ namespace grapher.Models.Options SetCombined(); } + #endregion Constructors + + #region Properties + public ActiveValueLabel X { get; } public ActiveValueLabel Y { get; } @@ -39,6 +49,10 @@ namespace grapher.Models.Options private int ShortenedWidth { get; } + #endregion Properties + + #region Methods + public void SetValues(double x, double y) { X.SetValue(x); @@ -80,5 +94,7 @@ namespace grapher.Models.Options Combined = false; } + + #region Methods } } diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 0c9fd6a..a269b49 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -10,6 +10,8 @@ namespace grapher.Models.Options { public class ApplyOptions { + #region Constructors + public ApplyOptions( ToolStripMenuItem wholeVectorMenuItem, ToolStripMenuItem byComponentMenuItem) @@ -26,12 +28,19 @@ namespace grapher.Models.Options IsWhole = false; } + #endregion Constructors + + #region Properties public ToolStripMenuItem WholeVectorMenuItem { get; } public ToolStripMenuItem ByComponentVectorMenuItem { get; } public bool IsWhole { get; private set; } + #endregion Properties + + #region Methods + public void SetActive(bool isWhole) { WholeVectorMenuItem.Checked = isWhole; @@ -81,5 +90,6 @@ namespace grapher.Models.Options IsWhole = false; } + #endregion Methods } } diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index 3bdf3c6..9d903ec 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -10,9 +10,14 @@ namespace grapher { public class CapOptions { + #region Constants public const string GainCapFormatString = "0.##"; + #endregion Constants + + #region Constructors + public CapOptions( ToolStripMenuItem sensitivityCapCheck, ToolStripMenuItem velocityGainCapCheck, @@ -34,6 +39,10 @@ namespace grapher EnableSensitivityCap(); } + #endregion Constructors + + #region Properties + public ToolStripMenuItem SensitivityCapCheck { get; } public ToolStripMenuItem VelocityGainCapCheck { get; } @@ -42,6 +51,8 @@ namespace grapher public OptionXY WeightOption { get; } + public bool IsSensitivityGain { get; private set; } + public double SensitivityCapX { get { @@ -84,7 +95,9 @@ namespace grapher } } - public bool IsSensitivityGain { get; private set; } + #endregion Properties + + #region Methods public void SetActiveValues(double gainCap, double sensCapX, double sensCapY, bool capGainEnabled) { @@ -157,5 +170,7 @@ namespace grapher WeightOption.Fields.LockCheckBox.Enabled = false; CapOption.SetName("Velocity Gain Cap"); } + + #endregion Methods } } diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index b0ef374..c5336a6 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -10,6 +10,8 @@ namespace grapher { public class Option { + #region Constructors + public Option( Field field, Label label, @@ -50,12 +52,20 @@ namespace grapher SetName(startingName); } + #endregion Constructors + + #region Properties + public Field Field { get; } public Label Label { get; } public ActiveValueLabel ActiveValueLabel { get; } + #endregion Properties + + #region Methods + public void SetName(string name) { Label.Text = name; @@ -93,5 +103,7 @@ namespace grapher Show(); } + + #endregion Methods } } diff --git a/grapher/Models/Options/OptionXY.cs b/grapher/Models/Options/OptionXY.cs index b026c8a..c1fd0b7 100644 --- a/grapher/Models/Options/OptionXY.cs +++ b/grapher/Models/Options/OptionXY.cs @@ -10,6 +10,7 @@ namespace grapher { public class OptionXY { + #region Constructors public OptionXY(FieldXY fields, Label label, ActiveValueLabelXY activeValueLabels) { Fields = fields; @@ -50,12 +51,20 @@ namespace grapher SetName(startingName); } + #endregion Constructors + + #region Properties + public FieldXY Fields { get; } public Label Label { get; } public ActiveValueLabelXY ActiveValueLabels { get; } + #endregion Properties + + #region Methods + public void SetName(string name) { Label.Text = name; @@ -89,5 +98,6 @@ namespace grapher Show(); } + #endregion Methods } } -- cgit v1.2.3 From 4aa2f3ed741dcbd39233e125a34cac8163267d8d Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 1 Sep 2020 02:39:09 -0700 Subject: Move constants to central class --- grapher/Models/Options/AccelOptions.cs | 11 ++--------- grapher/Models/Options/ActiveValueLabel.cs | 6 ++---- grapher/Models/Options/ActiveValueLabelXY.cs | 14 ++++++-------- grapher/Models/Options/ApplyOptions.cs | 1 + grapher/Models/Options/CapOptions.cs | 5 ++--- 5 files changed, 13 insertions(+), 24 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptions.cs b/grapher/Models/Options/AccelOptions.cs index 224c5cb..8c01585 100644 --- a/grapher/Models/Options/AccelOptions.cs +++ b/grapher/Models/Options/AccelOptions.cs @@ -11,13 +11,6 @@ namespace grapher { public class AccelOptions { - #region Constants - - public const int PossibleOptionsCount = 4; - public const int PossibleOptionsXYCount = 2; - - #endregion Constants - #region Fields public static readonly Dictionary AccelerationTypes = new List @@ -49,12 +42,12 @@ namespace grapher AccelDropdown.Items.AddRange(AccelerationTypes.Keys.ToArray()); AccelDropdown.SelectedIndexChanged += new System.EventHandler(OnIndexChanged); - if (options.Length > PossibleOptionsCount) + if (options.Length > Constants.PossibleOptionsCount) { throw new Exception("Layout given too many options."); } - if (optionsXY.Length > PossibleOptionsXYCount) + if (optionsXY.Length > Constants.PossibleOptionsXYCount) { throw new Exception("Layout given too many options."); } diff --git a/grapher/Models/Options/ActiveValueLabel.cs b/grapher/Models/Options/ActiveValueLabel.cs index b2355b5..d2b43ab 100644 --- a/grapher/Models/Options/ActiveValueLabel.cs +++ b/grapher/Models/Options/ActiveValueLabel.cs @@ -12,8 +12,6 @@ namespace grapher.Models.Options { #region Constants - public const string DefaultFormatString = "0.######"; - public static readonly Color ActiveValueFontColor = Color.FromArgb(255, 65, 65, 65); #endregion Constants @@ -29,13 +27,13 @@ namespace grapher.Models.Options public ActiveValueLabel(Label valueLabel, Label centeringLabel) { ValueLabel = valueLabel; - ValueLabel.ForeColor = ActiveValueFontColor; + ValueLabel.ForeColor = Constants.ActiveValueFontColor; Left = centeringLabel.Left; Width = centeringLabel.Width; ValueLabel.AutoSize = false; ValueLabel.TextAlign = ContentAlignment.MiddleCenter; - FormatString = DefaultFormatString; + FormatString = Constants.DefaultActiveValueFormatString; Prefix = string.Empty; } diff --git a/grapher/Models/Options/ActiveValueLabelXY.cs b/grapher/Models/Options/ActiveValueLabelXY.cs index 553ce48..c8caddf 100644 --- a/grapher/Models/Options/ActiveValueLabelXY.cs +++ b/grapher/Models/Options/ActiveValueLabelXY.cs @@ -10,8 +10,6 @@ namespace grapher.Models.Options { #region Constants - public const int ActiveLabelXYSeparation = 2; - public const string ShortenedFormatString = "0.###"; #endregion Constants @@ -25,11 +23,11 @@ namespace grapher.Models.Options Y = y; FullWidth = x.Width; - ShortenedWidth = (FullWidth - ActiveLabelXYSeparation) / 2; + ShortenedWidth = (FullWidth - Constants.ActiveLabelXYSeparation) / 2; - Y.Left = X.Left + ShortenedWidth + ActiveLabelXYSeparation; + Y.Left = X.Left + ShortenedWidth + Constants.ActiveLabelXYSeparation; Y.Width = ShortenedWidth; - Y.FormatString = ShortenedFormatString; + Y.FormatString = Constants.ShortenedFormatString; Combined = false; SetCombined(); @@ -72,7 +70,7 @@ namespace grapher.Models.Options { if (!Combined) { - X.FormatString = ActiveValueLabel.DefaultFormatString; + X.FormatString = Constants.DefaultActiveValueFormatString; X.Width = FullWidth; X.Prefix = string.Empty; Y.Hide(); @@ -85,7 +83,7 @@ namespace grapher.Models.Options { if (Combined) { - X.FormatString = ShortenedFormatString; + X.FormatString = Constants.ShortenedFormatString; X.Width = ShortenedWidth; X.Prefix = "X"; Y.Prefix = "Y"; @@ -95,6 +93,6 @@ namespace grapher.Models.Options Combined = false; } - #region Methods + #endregion Methods } } diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index a269b49..703f0d5 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -31,6 +31,7 @@ namespace grapher.Models.Options #endregion Constructors #region Properties + public ToolStripMenuItem WholeVectorMenuItem { get; } public ToolStripMenuItem ByComponentVectorMenuItem { get; } diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index 9d903ec..62f74a3 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -12,7 +12,6 @@ namespace grapher { #region Constants - public const string GainCapFormatString = "0.##"; #endregion Constants @@ -103,7 +102,7 @@ namespace grapher { if (capGainEnabled) { - CapOption.ActiveValueLabels.X.FormatString = GainCapFormatString; + CapOption.ActiveValueLabels.X.FormatString = Constants.GainCapFormatString; CapOption.ActiveValueLabels.X.Prefix = "Gain"; CapOption.SetActiveValues(gainCap, gainCap); SensitivityCapCheck.Checked = true; @@ -111,7 +110,7 @@ namespace grapher } else { - CapOption.ActiveValueLabels.X.FormatString = ActiveValueLabel.DefaultFormatString; + CapOption.ActiveValueLabels.X.FormatString = Constants.DefaultActiveValueFormatString; CapOption.ActiveValueLabels.X.Prefix = string.Empty; CapOption.SetActiveValues(sensCapX, sensCapY); SensitivityCapCheck.Checked = false; -- cgit v1.2.3 From 95cc3ed0a0bf66f5535b873f245bc1c35a145478 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 1 Sep 2020 21:45:42 -0700 Subject: intermittent commit - large commit halfway done --- grapher/Models/Options/AccelOptionSet.cs | 169 ++++++++++++++++++++++++++++ grapher/Models/Options/AccelOptions.cs | 104 ----------------- grapher/Models/Options/AccelTypeOptions.cs | 173 +++++++++++++++++++++++++++++ grapher/Models/Options/CapOptions.cs | 58 ++++------ grapher/Models/Options/Option.cs | 48 +++++++- 5 files changed, 411 insertions(+), 141 deletions(-) create mode 100644 grapher/Models/Options/AccelOptionSet.cs delete mode 100644 grapher/Models/Options/AccelOptions.cs create mode 100644 grapher/Models/Options/AccelTypeOptions.cs (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs new file mode 100644 index 0000000..2d15ad6 --- /dev/null +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -0,0 +1,169 @@ +using grapher.Models.Serialized; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace grapher.Models.Options +{ + public class AccelOptionSet + { + public AccelOptionSet( + Label titleLabel, + AccelTypeOptions accelTypeOptions, + Option acceleration, + CapOptions cap, + Option weight, + Option offset, + Option limitOrExp, + Option midpoint) + { + TitleLabel = titleLabel; + AccelTypeOptions = accelTypeOptions; + Acceleration = acceleration; + Cap = cap; + Weight = weight; + Offset = offset; + LimitOrExponent = limitOrExp; + Midpoint = midpoint; + + AccelTypeOptions.ShowFullText(); + + TitleLabel.Top = TopAnchor; + } + + public int TopAnchor { get; } + + public Label TitleLabel { get; } + + public AccelTypeOptions AccelTypeOptions { get; } + + public Option Acceleration { get; } + + public CapOptions Cap { get; } + + public Option Weight { get; } + + public Option Offset { get; } + + public Option LimitOrExponent { get; } + + public Option Midpoint { get; } + + public bool IsTitleMode { get; private set; } + + public void SetRegularMode() + { + if (IsTitleMode) + { + IsTitleMode = false; + + HideTitle(); + AccelTypeOptions.Left = Acceleration.Left; + AccelTypeOptions.Width = Acceleration.Width; + AccelTypeOptions.ShowFullText(); + } + } + + public void SetTitleMode() + { + if (!IsTitleMode) + { + IsTitleMode = true; + + AccelTypeOptions.Left = Acceleration.Field.Left; + AccelTypeOptions.Width = Acceleration.Field.Width; + AccelTypeOptions.ShowFullText(); + DisplayTitle(); + } + } + + public void Hide() + { + TitleLabel.Hide(); + AccelTypeOptions.Hide(); + Acceleration.Hide(); + Cap.Hide(); + Weight.Hide(); + Offset.Hide(); + LimitOrExponent.Hide(); + Midpoint.Hide(); + } + + public void Show() + { + if (IsTitleMode) + { + TitleLabel.Show(); + } + + AccelTypeOptions.Show(); + Acceleration.Show(); + Cap.Show(); + Weight.Show(); + Offset.Show(); + LimitOrExponent.Show(); + Midpoint.Show(); + } + + public void DisplayTitle() + { + TitleLabel.Show(); + + SetOptionsTop(TitleLabel.Top + TitleLabel.Height + Constants.OptionVerticalSeperation); + } + + public void HideTitle() + { + TitleLabel.Hide(); + + SetOptionsTop(TopAnchor); + } + + public void SetArgs(AccelArgs args) + { + args.accel = Acceleration.Field.Data; + args.rate = Acceleration.Field.Data; + args.powerScale = Acceleration.Field.Data; + args.gainCap = Cap.VelocityGainCap; + args.scaleCap = Cap.SensitivityCap; + args.limit = LimitOrExponent.Field.Data; + args.exponent = LimitOrExponent.Field.Data; + args.powerExponent = LimitOrExponent.Field.Data; + args.offset = Offset.Field.Data; + args.midpoint = Midpoint.Field.Data; + args.weight = Weight.Field.Data; + } + + public AccelArgs GenerateArgs() + { + AccelArgs args = new AccelArgs(); + SetArgs(args); + return args; + } + + public void SetActiveValues(int mode, AccelArgs args) + { + AccelTypeOptions.SetActiveValue(mode); + Weight.SetActiveValue(args.weight); + Cap.SetActiveValues(args.gainCap, args.scaleCap, args.gainCap > 0); + Offset.SetActiveValue(args.offset); + Acceleration.SetActiveValue(args.accel); + LimitOrExponent.SetActiveValue(args.exponent); + Midpoint.SetActiveValue(args.midpoint); + } + + private void SetOptionsTop(int top) + { + AccelTypeOptions.Top = top; + Acceleration.Top = AccelTypeOptions.Top+ AccelTypeOptions.Height + Constants.OptionVerticalSeperation; + Cap.SnapTo(Acceleration); + Weight.SnapTo(Cap); + Offset.SnapTo(Weight); + LimitOrExponent.SnapTo(Offset); + Midpoint.SnapTo(LimitOrExponent); + } + } +} diff --git a/grapher/Models/Options/AccelOptions.cs b/grapher/Models/Options/AccelOptions.cs deleted file mode 100644 index 8c01585..0000000 --- a/grapher/Models/Options/AccelOptions.cs +++ /dev/null @@ -1,104 +0,0 @@ -using grapher.Layouts; -using grapher.Models.Options; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace grapher -{ - public class AccelOptions - { - #region Fields - - public static readonly Dictionary AccelerationTypes = new List - { - new LinearLayout(), - new ClassicLayout(), - new NaturalLayout(), - new LogLayout(), - new SigmoidLayout(), - new PowerLayout(), - new NaturalGainLayout(), - new SigmoidGainLayout(), - new OffLayout() - }.ToDictionary(k => k.Name); - - #endregion Fields - - #region Constructors - - public AccelOptions( - ComboBox accelDropdown, - Option[] options, - OptionXY[] optionsXY, - Button writeButton, - ActiveValueLabel activeValueLabel) - { - AccelDropdown = accelDropdown; - AccelDropdown.Items.Clear(); - AccelDropdown.Items.AddRange(AccelerationTypes.Keys.ToArray()); - AccelDropdown.SelectedIndexChanged += new System.EventHandler(OnIndexChanged); - - if (options.Length > Constants.PossibleOptionsCount) - { - throw new Exception("Layout given too many options."); - } - - if (optionsXY.Length > Constants.PossibleOptionsXYCount) - { - throw new Exception("Layout given too many options."); - } - - Options = options; - OptionsXY = optionsXY; - WriteButton = writeButton; - ActiveValueLabel = activeValueLabel; - - Layout("Off"); - } - - #endregion Constructors - - #region Properties - - public Button WriteButton { get; } - - public ComboBox AccelDropdown { get; } - - public int AccelerationIndex { get; private set; } - - public ActiveValueLabel ActiveValueLabel { get; } - - public Option[] Options { get; } - - public OptionXY[] OptionsXY { get; } - - #endregion Properties - - #region Methods - - public void SetActiveValue(int index) - { - var name = AccelerationTypes.Where(t => t.Value.Index == index).FirstOrDefault().Value.Name; - ActiveValueLabel.SetValue(name); - } - - private void OnIndexChanged(object sender, EventArgs e) - { - var accelerationTypeString = AccelDropdown.SelectedItem.ToString(); - Layout(accelerationTypeString); - } - - private void Layout(string type) - { - var accelerationType = AccelerationTypes[type]; - AccelerationIndex = accelerationType.Index; - accelerationType.Layout(Options, OptionsXY, WriteButton); - } - - #endregion Methods - } -} diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs new file mode 100644 index 0000000..2359b8d --- /dev/null +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -0,0 +1,173 @@ +using grapher.Layouts; +using grapher.Models.Options; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace grapher +{ + public class AccelTypeOptions + { + #region Fields + + public static readonly Dictionary AccelerationTypes = new List + { + new LinearLayout(), + new ClassicLayout(), + new NaturalLayout(), + new LogLayout(), + new SigmoidLayout(), + new PowerLayout(), + new NaturalGainLayout(), + new SigmoidGainLayout(), + new OffLayout() + }.ToDictionary(k => k.Name); + + #endregion Fields + + #region Constructors + + public AccelTypeOptions( + ComboBox accelDropdown, + Option[] options, + Button writeButton, + ActiveValueLabel activeValueLabel) + { + AccelDropdown = accelDropdown; + AccelDropdown.Items.Clear(); + AccelDropdown.Items.AddRange(AccelerationTypes.Keys.ToArray()); + AccelDropdown.SelectedIndexChanged += new System.EventHandler(OnIndexChanged); + + if (options.Length > Constants.PossibleOptionsCount) + { + throw new Exception("Layout given too many options."); + } + + Options = options; + WriteButton = writeButton; + ActiveValueLabel = activeValueLabel; + + Layout("Off"); + ShowingDefault = true; + } + + #endregion Constructors + + #region Properties + + public Button WriteButton { get; } + + public ComboBox AccelDropdown { get; } + + public int AccelerationIndex { get; private set; } + + public ActiveValueLabel ActiveValueLabel { get; } + + public Option[] Options { get; } + + public int Top + { + get + { + return AccelDropdown.Top; + } + set + { + AccelDropdown.Top = value; + } + } + + public int Height + { + get + { + return AccelDropdown.Height; + } + set + { + AccelDropdown.Height = value; + } + } + + public int Left + { + get + { + return AccelDropdown.Left; + } + set + { + AccelDropdown.Left = value; + } + } + + public int Width + { + get + { + return AccelDropdown.Width; + } + set + { + AccelDropdown.Width = value; + } + } + + private bool ShowingDefault { get; set; } + + #endregion Properties + + #region Methods + + public void Hide() + { + AccelDropdown.Hide(); + } + + public void Show() + { + AccelDropdown.Show(); + } + + public void SetActiveValue(int index) + { + var name = AccelerationTypes.Where(t => t.Value.Index == index).FirstOrDefault().Value.Name; + ActiveValueLabel.SetValue(name); + } + + public void ShowFullText() + { + if (ShowingDefault) + { + AccelDropdown.Text = Constants.AccelDropDownDefaultFullText; + } + } + + public void ShowShortenedText() + { + if (ShowingDefault) + { + AccelDropdown.Text = Constants.AccelDropDownDefaultShortText; + } + } + + private void OnIndexChanged(object sender, EventArgs e) + { + var accelerationTypeString = AccelDropdown.SelectedItem.ToString(); + Layout(accelerationTypeString); + ShowingDefault = false; + } + + private void Layout(string type) + { + var accelerationType = AccelerationTypes[type]; + AccelerationIndex = accelerationType.Index; + accelerationType.Layout(Options, WriteButton); + } + + #endregion Methods + } +} diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index 62f74a3..6768a85 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -20,14 +20,12 @@ namespace grapher public CapOptions( ToolStripMenuItem sensitivityCapCheck, ToolStripMenuItem velocityGainCapCheck, - OptionXY capOption, - OptionXY weightOption) + Option capOption) { SensitivityCapCheck = sensitivityCapCheck; VelocityGainCapCheck = velocityGainCapCheck; CapOption = capOption; - WeightOption = weightOption; SensitivityCapCheck.Click += new System.EventHandler(OnSensitivityCapCheckClick); VelocityGainCapCheck.Click += new System.EventHandler(OnVelocityGainCapCheckClick); @@ -46,32 +44,16 @@ namespace grapher public ToolStripMenuItem VelocityGainCapCheck { get; } - public OptionXY CapOption { get; } - - public OptionXY WeightOption { get; } + public Option CapOption { get; } public bool IsSensitivityGain { get; private set; } - public double SensitivityCapX { + public double SensitivityCap { get { if (IsSensitivityGain) { - return CapOption.Fields.X; - } - else - { - return 0; - } - } - } - - public double SensitivityCapY { - get - { - if (IsSensitivityGain) - { - return CapOption.Fields.Y; + return CapOption.Field.Data; } else { @@ -89,7 +71,7 @@ namespace grapher } else { - return CapOption.Fields.X; + return CapOption.Field.Data; } } } @@ -98,21 +80,31 @@ namespace grapher #region Methods - public void SetActiveValues(double gainCap, double sensCapX, double sensCapY, bool capGainEnabled) + public void Hide() + { + CapOption.Hide(); + } + + public void Show() + { + CapOption.Show(); + } + + public void SetActiveValues(double gainCap, double sensCap, bool capGainEnabled) { if (capGainEnabled) { - CapOption.ActiveValueLabels.X.FormatString = Constants.GainCapFormatString; - CapOption.ActiveValueLabels.X.Prefix = "Gain"; - CapOption.SetActiveValues(gainCap, gainCap); + CapOption.ActiveValueLabel.FormatString = Constants.GainCapFormatString; + CapOption.ActiveValueLabel.Prefix = "Gain"; + CapOption.SetActiveValue(gainCap); SensitivityCapCheck.Checked = true; VelocityGainCapCheck.Checked = false; } else { - CapOption.ActiveValueLabels.X.FormatString = Constants.DefaultActiveValueFormatString; - CapOption.ActiveValueLabels.X.Prefix = string.Empty; - CapOption.SetActiveValues(sensCapX, sensCapY); + CapOption.ActiveValueLabel.FormatString = Constants.DefaultActiveValueFormatString; + CapOption.ActiveValueLabel.Prefix = string.Empty; + CapOption.SetActiveValue(sensCap); SensitivityCapCheck.Checked = false; VelocityGainCapCheck.Checked = true; } @@ -155,18 +147,12 @@ namespace grapher void EnableSensitivityCap() { IsSensitivityGain = true; - CapOption.Fields.LockCheckBox.Enabled = true; - WeightOption.Fields.LockCheckBox.Enabled = true; CapOption.SetName("Sensitivity Cap"); } void EnableVelocityGainCap() { IsSensitivityGain = false; - CapOption.Fields.LockCheckBox.Checked = true; - CapOption.Fields.LockCheckBox.Enabled = false; - WeightOption.Fields.LockCheckBox.Checked = true; - WeightOption.Fields.LockCheckBox.Enabled = false; CapOption.SetName("Velocity Gain Cap"); } diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index c5336a6..bd2c9a1 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -62,6 +62,47 @@ namespace grapher public ActiveValueLabel ActiveValueLabel { get; } + public int Top + { + get + { + return Field.Top; + } + set + { + Field.Top = value; + Label.Top = value; + } + } + + public int Height + { + get + { + return Field.Height; + } + } + + public int Left + { + get + { + return Label.Left; + } + set + { + Label.Left = value; + Field.Left = value + Label.Width + Constants.OptionLabelBoxSeperation; + } + } + public int Width + { + get + { + return Field.Left + Field.Width - Label.Left; + } + } + #endregion Properties #region Methods @@ -70,7 +111,7 @@ namespace grapher { Label.Text = name; //Label.Left = Convert.ToInt32((Field.Box.Left / 2.0) - (Label.Width / 2.0)); //Centered - Label.Left = Convert.ToInt32(Field.Box.Left - Label.Width - 10); //Right-aligned + Left = Label.Left; } public void SetActiveValue(double value) @@ -103,6 +144,11 @@ namespace grapher Show(); } + + public void SnapTo(Option option) + { + Top = option.Top + option.Height + Constants.OptionVerticalSeperation; + } #endregion Methods } -- cgit v1.2.3 From 26130b21dabaab7fc331844df11465623a811197 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 1 Sep 2020 22:42:07 -0700 Subject: Second half - the parts in place --- grapher/Models/Options/CapOptions.cs | 27 +++++++++++++++++++++++++++ grapher/Models/Options/Option.cs | 5 +++++ 2 files changed, 32 insertions(+) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index 6768a85..713842c 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -76,6 +76,27 @@ namespace grapher } } + public int Top + { + get + { + return CapOption.Top; + } + set + { + CapOption.Top = value; + } + } + + public int Height + { + get + { + return CapOption.Height; + } + } + + #endregion Properties #region Methods @@ -90,6 +111,12 @@ namespace grapher CapOption.Show(); } + public void SnapTo(Option option) + { + Top = option.Top + option.Height + Constants.OptionVerticalSeperation; + } + + public void SetActiveValues(double gainCap, double sensCap, bool capGainEnabled) { if (capGainEnabled) diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index bd2c9a1..2006dec 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -150,6 +150,11 @@ namespace grapher Top = option.Top + option.Height + Constants.OptionVerticalSeperation; } + public void SnapTo(CapOptions option) + { + Top = option.Top + option.Height + Constants.OptionVerticalSeperation; + } + #endregion Methods } } -- cgit v1.2.3 From bf747ca2439a371ef74e21a49c1e8bc880d4d3e2 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 1 Sep 2020 23:36:52 -0700 Subject: Small fixes, correctly align labels and boxes --- grapher/Models/Options/AccelOptionSet.cs | 4 +++- grapher/Models/Options/Option.cs | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs index 2d15ad6..e2f2bf7 100644 --- a/grapher/Models/Options/AccelOptionSet.cs +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -12,6 +12,7 @@ namespace grapher.Models.Options { public AccelOptionSet( Label titleLabel, + int topAnchor, AccelTypeOptions accelTypeOptions, Option acceleration, CapOptions cap, @@ -21,6 +22,7 @@ namespace grapher.Models.Options Option midpoint) { TitleLabel = titleLabel; + TopAnchor = topAnchor; AccelTypeOptions = accelTypeOptions; Acceleration = acceleration; Cap = cap; @@ -158,7 +160,7 @@ namespace grapher.Models.Options private void SetOptionsTop(int top) { AccelTypeOptions.Top = top; - Acceleration.Top = AccelTypeOptions.Top+ AccelTypeOptions.Height + Constants.OptionVerticalSeperation; + Acceleration.Top = AccelTypeOptions.Top + AccelTypeOptions.Height + Constants.OptionVerticalSeperation; Cap.SnapTo(Acceleration); Weight.SnapTo(Cap); Offset.SnapTo(Weight); diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index 2006dec..22b78d4 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -15,11 +15,17 @@ namespace grapher public Option( Field field, Label label, - ActiveValueLabel activeValueLabel) + ActiveValueLabel activeValueLabel, + int left) { Field = field; Label = label; ActiveValueLabel = activeValueLabel; + Left = left; + + label.AutoSize = false; + label.Width = Field.Left - left - Constants.OptionLabelBoxSeperation; + label.TextAlign = System.Drawing.ContentAlignment.MiddleRight; } public Option( @@ -27,11 +33,13 @@ namespace grapher Form containingForm, double defaultData, Label label, + int left, ActiveValueLabel activeValueLabel) : this( new Field(box, containingForm, defaultData), label, - activeValueLabel) + activeValueLabel, + left) { } @@ -40,6 +48,7 @@ namespace grapher Form containingForm, double defaultData, Label label, + int left, ActiveValueLabel activeValueLabel, string startingName) : this( @@ -47,6 +56,7 @@ namespace grapher containingForm, defaultData, label, + left, activeValueLabel) { SetName(startingName); @@ -89,10 +99,9 @@ namespace grapher { return Label.Left; } - set + private set { Label.Left = value; - Field.Left = value + Label.Width + Constants.OptionLabelBoxSeperation; } } public int Width @@ -111,7 +120,6 @@ namespace grapher { Label.Text = name; //Label.Left = Convert.ToInt32((Field.Box.Left / 2.0) - (Label.Width / 2.0)); //Centered - Left = Label.Left; } public void SetActiveValue(double value) -- cgit v1.2.3 From 5b9b8ed308e7a8cefbd27b2db72d33d7b002e223 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Wed, 2 Sep 2020 01:02:51 -0700 Subject: Move optionsets to applyoptions --- grapher/Models/Options/AccelOptionSet.cs | 17 ++----- grapher/Models/Options/AccelTypeOptions.cs | 26 ++++++++-- grapher/Models/Options/ApplyOptions.cs | 79 ++++++++++++++++++++++++++++-- 3 files changed, 101 insertions(+), 21 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs index e2f2bf7..46b6e3e 100644 --- a/grapher/Models/Options/AccelOptionSet.cs +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -69,15 +69,16 @@ namespace grapher.Models.Options } } - public void SetTitleMode() + public void SetTitleMode(string title) { if (!IsTitleMode) { IsTitleMode = true; + TitleLabel.Text = title; AccelTypeOptions.Left = Acceleration.Field.Left; AccelTypeOptions.Width = Acceleration.Field.Width; - AccelTypeOptions.ShowFullText(); + AccelTypeOptions.ShowShortenedText(); DisplayTitle(); } } @@ -86,12 +87,6 @@ namespace grapher.Models.Options { TitleLabel.Hide(); AccelTypeOptions.Hide(); - Acceleration.Hide(); - Cap.Hide(); - Weight.Hide(); - Offset.Hide(); - LimitOrExponent.Hide(); - Midpoint.Hide(); } public void Show() @@ -102,12 +97,6 @@ namespace grapher.Models.Options } AccelTypeOptions.Show(); - Acceleration.Show(); - Cap.Show(); - Weight.Show(); - Offset.Show(); - LimitOrExponent.Show(); - Midpoint.Show(); } public void DisplayTitle() diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 2359b8d..5342f4b 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -62,7 +62,15 @@ namespace grapher public ComboBox AccelDropdown { get; } - public int AccelerationIndex { get; private set; } + public int AccelerationIndex + { + get + { + return AccelerationType.Index; + } + } + + public LayoutBase AccelerationType { get; private set; } public ActiveValueLabel ActiveValueLabel { get; } @@ -125,11 +133,17 @@ namespace grapher public void Hide() { AccelDropdown.Hide(); + + foreach(var option in Options) + { + option.Hide(); + } } public void Show() { AccelDropdown.Show(); + Layout(); } public void SetActiveValue(int index) @@ -163,9 +177,13 @@ namespace grapher private void Layout(string type) { - var accelerationType = AccelerationTypes[type]; - AccelerationIndex = accelerationType.Index; - accelerationType.Layout(Options, WriteButton); + AccelerationType = AccelerationTypes[type]; + Layout(); + } + + private void Layout() + { + AccelerationType.Layout(Options, WriteButton); } #endregion Methods diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 703f0d5..0241fdf 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -1,4 +1,5 @@ -using System; +using grapher.Models.Serialized; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -14,7 +15,10 @@ namespace grapher.Models.Options public ApplyOptions( ToolStripMenuItem wholeVectorMenuItem, - ToolStripMenuItem byComponentMenuItem) + ToolStripMenuItem byComponentMenuItem, + CheckBox byComponentVectorXYLock, + AccelOptionSet optionSetX, + AccelOptionSet optionSetY) { WholeVectorMenuItem = wholeVectorMenuItem; ByComponentVectorMenuItem = byComponentMenuItem; @@ -25,6 +29,14 @@ namespace grapher.Models.Options WholeVectorMenuItem.CheckedChanged += new System.EventHandler(OnWholeCheckedChange); ByComponentVectorMenuItem.CheckedChanged += new System.EventHandler(OnByComponentCheckedChange); + ByComponentVectorXYLock = byComponentVectorXYLock; + OptionSetX = optionSetX; + OptionSetY = optionSetY; + + ByComponentVectorXYLock.CheckedChanged += new System.EventHandler(OnByComponentXYLockChecked); + ByComponentVectorXYLock.Checked = false; + ByComponentVectorXYLock.Checked = true; + IsWhole = false; } @@ -36,18 +48,54 @@ namespace grapher.Models.Options public ToolStripMenuItem ByComponentVectorMenuItem { get; } + public CheckBox ByComponentVectorXYLock { get; } + + public AccelOptionSet OptionSetX { get; } + + public AccelOptionSet OptionSetY { get; } + public bool IsWhole { get; private set; } #endregion Properties #region Methods - public void SetActive(bool isWhole) + public Vec2 GetModes() + { + var xMode = (AccelMode)OptionSetX.AccelTypeOptions.AccelerationIndex; + + return new Vec2 + { + x = xMode, + y = ByComponentVectorXYLock.Checked ? xMode : (AccelMode)OptionSetY.AccelTypeOptions.AccelerationIndex + }; + } + + public Vec2 GetArgs() + { + var xArgs = OptionSetX.GenerateArgs(); + + return new Vec2 + { + x = xArgs, + y = ByComponentVectorXYLock.Checked ? xArgs : OptionSetY.GenerateArgs() + }; + + } + + public void SetActiveValues(int xMode, int yMode, AccelArgs xArgs, AccelArgs yArgs, bool isWhole) { + OptionSetX.SetActiveValues(xMode, xArgs); + OptionSetY.SetActiveValues(yMode, yArgs); WholeVectorMenuItem.Checked = isWhole; ByComponentVectorMenuItem.Checked = !isWhole; } + public void SetActiveValues(DriverSettings settings) + { + SetActiveValues((int)settings.modes.x, (int)settings.modes.y, settings.args.x, settings.args.y, settings.combineMagnitudes); + } + public void OnWholeClicked(object sender, EventArgs e) { if (!WholeVectorMenuItem.Checked) @@ -82,6 +130,31 @@ namespace grapher.Models.Options } } + public void ShowWholeOptionSet() + { + OptionSetX.SetTitleMode("X = Y"); + OptionSetY.Hide(); + } + + public void ShowByComponentSets() + { + OptionSetX.SetTitleMode("X"); + OptionSetY.SetTitleMode("Y"); + OptionSetY.Show(); + } + + private void OnByComponentXYLockChecked(object sender, EventArgs e) + { + if (ByComponentVectorXYLock.Checked) + { + ShowWholeOptionSet(); + } + else + { + ShowByComponentSets(); + } + } + public void EnableWholeApplication() { IsWhole = true; -- cgit v1.2.3 From 66131ff0e469aed0a44ad0fa7179b9cddfb66df5 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Wed, 2 Sep 2020 01:39:36 -0700 Subject: The menus mostly work --- grapher/Models/Options/AccelOptionSet.cs | 5 +++- grapher/Models/Options/ApplyOptions.cs | 39 ++++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 13 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs index 46b6e3e..b1f85a9 100644 --- a/grapher/Models/Options/AccelOptionSet.cs +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -34,6 +34,8 @@ namespace grapher.Models.Options AccelTypeOptions.ShowFullText(); TitleLabel.Top = TopAnchor; + IsTitleMode = true; + SetRegularMode(); } public int TopAnchor { get; } @@ -71,11 +73,12 @@ namespace grapher.Models.Options public void SetTitleMode(string title) { + TitleLabel.Text = title; + if (!IsTitleMode) { IsTitleMode = true; - TitleLabel.Text = title; AccelTypeOptions.Left = Acceleration.Field.Left; AccelTypeOptions.Width = Acceleration.Field.Width; AccelTypeOptions.ShowShortenedText(); diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 0241fdf..bfbc1ef 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -34,10 +34,9 @@ namespace grapher.Models.Options OptionSetY = optionSetY; ByComponentVectorXYLock.CheckedChanged += new System.EventHandler(OnByComponentXYLockChecked); - ByComponentVectorXYLock.Checked = false; ByComponentVectorXYLock.Checked = true; - IsWhole = false; + EnableWholeApplication(); } #endregion Constructors @@ -124,44 +123,60 @@ namespace grapher.Models.Options public void OnByComponentCheckedChange(object sender, EventArgs e) { - if (ByComponentVectorMenuItem.Checked) - { - EnableByComponentApplication(); - } + EnableByComponentApplication(); + } + + public void ShowWholeSet() + { + OptionSetX.SetRegularMode(); + OptionSetY.Hide(); } - public void ShowWholeOptionSet() + public void ShowByComponentAsOneSet() { OptionSetX.SetTitleMode("X = Y"); OptionSetY.Hide(); } - public void ShowByComponentSets() + public void ShowByComponentAsTwoSets() { OptionSetX.SetTitleMode("X"); OptionSetY.SetTitleMode("Y"); OptionSetY.Show(); } - private void OnByComponentXYLockChecked(object sender, EventArgs e) - { + public void ShowByComponentSet() + { if (ByComponentVectorXYLock.Checked) { - ShowWholeOptionSet(); + ShowByComponentAsOneSet(); } else { - ShowByComponentSets(); + ShowByComponentAsTwoSets(); + } + } + + private void OnByComponentXYLockChecked(object sender, EventArgs e) + { + if (!IsWhole) + { + ShowByComponentSet(); } } public void EnableWholeApplication() { IsWhole = true; + ByComponentVectorXYLock.Hide(); + ShowWholeSet(); } + public void EnableByComponentApplication() { IsWhole = false; + ByComponentVectorXYLock.Show(); + ShowByComponentSet(); } #endregion Methods -- cgit v1.2.3 From 6470bff9672c56024c542a74a00429273501879f Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Fri, 4 Sep 2020 01:53:59 -0700 Subject: Remove log and sigmoid styles --- grapher/Models/Options/AccelTypeOptions.cs | 2 -- 1 file changed, 2 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 5342f4b..f05d617 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -18,8 +18,6 @@ namespace grapher new LinearLayout(), new ClassicLayout(), new NaturalLayout(), - new LogLayout(), - new SigmoidLayout(), new PowerLayout(), new NaturalGainLayout(), new SigmoidGainLayout(), -- cgit v1.2.3 From 5ac07584f57b664237068ecda01034cbb9ca9c54 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 7 Sep 2020 12:58:00 -0700 Subject: Pass args by ref for setting --- grapher/Models/Options/AccelOptionSet.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs index 838917c..3b9b534 100644 --- a/grapher/Models/Options/AccelOptionSet.cs +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -116,7 +116,7 @@ namespace grapher.Models.Options SetOptionsTop(TopAnchor); } - public void SetArgs(AccelArgs args) + public void SetArgs(ref AccelArgs args) { args.accel = Acceleration.Field.Data; args.rate = Acceleration.Field.Data; @@ -135,7 +135,7 @@ namespace grapher.Models.Options public AccelArgs GenerateArgs() { AccelArgs args = new AccelArgs(); - SetArgs(args); + SetArgs(ref args); return args; } -- cgit v1.2.3 From aff3a066575f4bfa429f67a5104a1fcffc5f326e Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 7 Sep 2020 15:19:39 -0700 Subject: Refactor type options --- grapher/Models/Options/AccelOptionSet.cs | 83 ++++----------------- grapher/Models/Options/AccelTypeOptions.cs | 116 ++++++++++++++++++++++++----- grapher/Models/Options/ApplyOptions.cs | 4 +- grapher/Models/Options/CapOptions.cs | 40 +++++++++- grapher/Models/Options/IOption.cs | 27 +++++++ grapher/Models/Options/OffsetOptions.cs | 65 +++++++++++++++- grapher/Models/Options/Option.cs | 34 ++++----- grapher/Models/Options/OptionBase.cs | 30 ++++++++ 8 files changed, 286 insertions(+), 113 deletions(-) create mode 100644 grapher/Models/Options/IOption.cs create mode 100644 grapher/Models/Options/OptionBase.cs (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs index 3b9b534..8c7b303 100644 --- a/grapher/Models/Options/AccelOptionSet.cs +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -13,25 +13,13 @@ namespace grapher.Models.Options public AccelOptionSet( Label titleLabel, int topAnchor, - AccelTypeOptions accelTypeOptions, - Option acceleration, - CapOptions cap, - Option weight, - OffsetOptions offset, - Option limitOrExp, - Option midpoint) + AccelTypeOptions accelTypeOptions) { TitleLabel = titleLabel; TopAnchor = topAnchor; - AccelTypeOptions = accelTypeOptions; - Acceleration = acceleration; - Cap = cap; - Weight = weight; - Offset = offset; - LimitOrExponent = limitOrExp; - Midpoint = midpoint; + Options = accelTypeOptions; - AccelTypeOptions.ShowFullText(); + Options.ShowFull(); TitleLabel.Top = TopAnchor; IsTitleMode = true; @@ -42,19 +30,8 @@ namespace grapher.Models.Options public Label TitleLabel { get; } - public AccelTypeOptions AccelTypeOptions { get; } + public AccelTypeOptions Options { get; } - public Option Acceleration { get; } - - public CapOptions Cap { get; } - - public Option Weight { get; } - - public OffsetOptions Offset { get; } - - public Option LimitOrExponent { get; } - - public Option Midpoint { get; } public bool IsTitleMode { get; private set; } @@ -65,9 +42,7 @@ namespace grapher.Models.Options IsTitleMode = false; HideTitle(); - AccelTypeOptions.Left = Acceleration.Left; - AccelTypeOptions.Width = Acceleration.Width; - AccelTypeOptions.ShowFullText(); + Options.ShowFull(); } } @@ -79,9 +54,7 @@ namespace grapher.Models.Options { IsTitleMode = true; - AccelTypeOptions.Left = Acceleration.Field.Left; - AccelTypeOptions.Width = Acceleration.Field.Width; - AccelTypeOptions.ShowShortenedText(); + Options.ShowShortened(); DisplayTitle(); } } @@ -89,7 +62,7 @@ namespace grapher.Models.Options public void Hide() { TitleLabel.Hide(); - AccelTypeOptions.Hide(); + Options.Hide(); } public void Show() @@ -99,66 +72,36 @@ namespace grapher.Models.Options TitleLabel.Show(); } - AccelTypeOptions.Show(); + Options.Show(); } public void DisplayTitle() { TitleLabel.Show(); - SetOptionsTop(TitleLabel.Top + TitleLabel.Height + Constants.OptionVerticalSeperation); + Options.Top = TitleLabel.Top + TitleLabel.Height + Constants.OptionVerticalSeperation; } public void HideTitle() { TitleLabel.Hide(); - SetOptionsTop(TopAnchor); + Options.Top = TopAnchor; } public void SetArgs(ref AccelArgs args) { - args.accel = Acceleration.Field.Data; - args.rate = Acceleration.Field.Data; - args.powerScale = Acceleration.Field.Data; - args.gainCap = Cap.VelocityGainCap; - args.scaleCap = Cap.SensitivityCap; - args.limit = LimitOrExponent.Field.Data; - args.exponent = LimitOrExponent.Field.Data; - args.powerExponent = LimitOrExponent.Field.Data; - args.offset = Offset.Offset; - args.legacy_offset = Offset.LegacyOffset; - args.midpoint = Midpoint.Field.Data; - args.weight = Weight.Field.Data; + Options.SetArgs(ref args); } public AccelArgs GenerateArgs() { - AccelArgs args = new AccelArgs(); - SetArgs(ref args); - return args; + return Options.GenerateArgs(); } public void SetActiveValues(int mode, AccelArgs args) { - AccelTypeOptions.SetActiveValue(mode); - Weight.SetActiveValue(args.weight); - Cap.SetActiveValues(args.gainCap, args.scaleCap, args.gainCap > 0); - Offset.SetActiveValue(args.offset, args.legacy_offset); - Acceleration.SetActiveValue(args.accel); - LimitOrExponent.SetActiveValue(args.exponent); - Midpoint.SetActiveValue(args.midpoint); - } - - private void SetOptionsTop(int top) - { - AccelTypeOptions.Top = top; - Acceleration.Top = AccelTypeOptions.Top + AccelTypeOptions.Height + Constants.OptionVerticalSeperation; - Cap.SnapTo(Acceleration); - Weight.SnapTo(Cap); - Offset.OffsetOption.SnapTo(Weight); - LimitOrExponent.SnapTo(Offset.OffsetOption); - Midpoint.SnapTo(LimitOrExponent); + Options.SetActiveValues(mode, args); } } } diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index f05d617..878c955 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -1,5 +1,6 @@ using grapher.Layouts; using grapher.Models.Options; +using grapher.Models.Serialized; using System; using System.Collections.Generic; using System.Linq; @@ -30,7 +31,12 @@ namespace grapher public AccelTypeOptions( ComboBox accelDropdown, - Option[] options, + Option acceleration, + CapOptions cap, + Option weight, + OffsetOptions offset, + Option limitOrExponent, + Option midpoint, Button writeButton, ActiveValueLabel activeValueLabel) { @@ -39,15 +45,25 @@ namespace grapher AccelDropdown.Items.AddRange(AccelerationTypes.Keys.ToArray()); AccelDropdown.SelectedIndexChanged += new System.EventHandler(OnIndexChanged); - if (options.Length > Constants.PossibleOptionsCount) - { - throw new Exception("Layout given too many options."); - } - - Options = options; + Acceleration = acceleration; + Cap = cap; + Weight = weight; + Offset = offset; + LimitOrExponent = limitOrExponent; + Midpoint = midpoint; WriteButton = writeButton; ActiveValueLabel = activeValueLabel; + Options = new List + { + Acceleration, + Cap, + Offset, + Weight, + LimitOrExponent, + Midpoint, + }; + Layout("Off"); ShowingDefault = true; } @@ -72,7 +88,19 @@ namespace grapher public ActiveValueLabel ActiveValueLabel { get; } - public Option[] Options { get; } + public Option Acceleration { get; } + + public CapOptions Cap { get; } + + public Option Weight { get; } + + public OffsetOptions Offset { get; } + + public Option LimitOrExponent { get; } + + public Option Midpoint { get; } + + private IEnumerable Options { get; } public int Top { @@ -83,6 +111,7 @@ namespace grapher set { AccelDropdown.Top = value; + Layout(value + AccelDropdown.Height + Constants.OptionVerticalSeperation); } } @@ -131,11 +160,13 @@ namespace grapher public void Hide() { AccelDropdown.Hide(); - - foreach(var option in Options) - { - option.Hide(); - } + + Acceleration.Hide(); + Cap.Hide(); + Weight.Hide(); + Offset.Hide(); + LimitOrExponent.Hide(); + Midpoint.Hide(); } public void Show() @@ -144,26 +175,62 @@ namespace grapher Layout(); } - public void SetActiveValue(int index) + public void SetActiveValues(int index, AccelArgs args) { var name = AccelerationTypes.Where(t => t.Value.Index == index).FirstOrDefault().Value.Name; ActiveValueLabel.SetValue(name); + + Weight.SetActiveValue(args.weight); + Cap.SetActiveValues(args.gainCap, args.scaleCap, args.gainCap > 0); + Offset.SetActiveValue(args.offset, args.legacy_offset); + Acceleration.SetActiveValue(args.accel); + LimitOrExponent.SetActiveValue(args.exponent); + Midpoint.SetActiveValue(args.midpoint); } - public void ShowFullText() + public void ShowFull() { if (ShowingDefault) { AccelDropdown.Text = Constants.AccelDropDownDefaultFullText; } + + Left = Acceleration.Left; + Width = Acceleration.Width; } - public void ShowShortenedText() + public void ShowShortened() { if (ShowingDefault) { AccelDropdown.Text = Constants.AccelDropDownDefaultShortText; } + + Left = Acceleration.Field.Left; + Width = Acceleration.Field.Width; + } + + public void SetArgs(ref AccelArgs args) + { + args.accel = Acceleration.Field.Data; + args.rate = Acceleration.Field.Data; + args.powerScale = Acceleration.Field.Data; + args.gainCap = Cap.VelocityGainCap; + args.scaleCap = Cap.SensitivityCap; + args.limit = LimitOrExponent.Field.Data; + args.exponent = LimitOrExponent.Field.Data; + args.powerExponent = LimitOrExponent.Field.Data; + args.offset = Offset.Offset; + args.legacy_offset = Offset.LegacyOffset; + args.midpoint = Midpoint.Field.Data; + args.weight = Weight.Field.Data; + } + + public AccelArgs GenerateArgs() + { + AccelArgs args = new AccelArgs(); + SetArgs(ref args); + return args; } private void OnIndexChanged(object sender, EventArgs e) @@ -179,9 +246,22 @@ namespace grapher Layout(); } - private void Layout() + private void Layout(int top = -1) { - AccelerationType.Layout(Options, WriteButton); + if (top < 0) + { + top = Acceleration.Top; + } + + AccelerationType.Layout( + Acceleration, + Cap, + Weight, + Offset, + LimitOrExponent, + Midpoint, + WriteButton, + top); } #endregion Methods diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index bfbc1ef..68f06fb 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -61,12 +61,12 @@ namespace grapher.Models.Options public Vec2 GetModes() { - var xMode = (AccelMode)OptionSetX.AccelTypeOptions.AccelerationIndex; + var xMode = (AccelMode)OptionSetX.Options.AccelerationIndex; return new Vec2 { x = xMode, - y = ByComponentVectorXYLock.Checked ? xMode : (AccelMode)OptionSetY.AccelTypeOptions.AccelerationIndex + y = ByComponentVectorXYLock.Checked ? xMode : (AccelMode)OptionSetY.Options.AccelerationIndex }; } diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index 6dc1116..cf587c7 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -8,7 +8,7 @@ using System.Windows.Forms; namespace grapher { - public class CapOptions + public class CapOptions : OptionBase { #region Constants @@ -76,7 +76,7 @@ namespace grapher } } - public int Top + public override int Top { get { @@ -88,7 +88,7 @@ namespace grapher } } - public int Height + public override int Height { get { @@ -96,12 +96,39 @@ namespace grapher } } + public override int Left + { + get + { + return CapOption.Left; + } + set + { + CapOption.Left = value; + } + } + + public override int Width + { + get + { + return CapOption.Width; + } + } + + public override bool Visible + { + get + { + return CapOption.Visible; + } + } #endregion Properties #region Methods - public void Hide() + public override void Hide() { CapOption.Hide(); } @@ -111,6 +138,11 @@ namespace grapher CapOption.Show(); } + public override void Show(string name) + { + CapOption.Show(name); + } + public void SnapTo(Option option) { Top = option.Top + option.Height + Constants.OptionVerticalSeperation; diff --git a/grapher/Models/Options/IOption.cs b/grapher/Models/Options/IOption.cs new file mode 100644 index 0000000..71ac5e4 --- /dev/null +++ b/grapher/Models/Options/IOption.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace grapher.Models.Options +{ + public interface IOption + { + int Top { get; set; } + + int Height { get; } + + int Left { get; } + + int Width { get; } + + bool Visible { get; } + + void Show(string name); + + void Hide(); + + void SnapTo(IOption option); + } +} diff --git a/grapher/Models/Options/OffsetOptions.cs b/grapher/Models/Options/OffsetOptions.cs index 0b01ab9..fbc6898 100644 --- a/grapher/Models/Options/OffsetOptions.cs +++ b/grapher/Models/Options/OffsetOptions.cs @@ -7,7 +7,7 @@ using System.Windows.Forms; namespace grapher.Models.Options { - public class OffsetOptions + public class OffsetOptions : OptionBase { public OffsetOptions( ToolStripMenuItem velocityGainOffsetCheck, @@ -65,6 +65,69 @@ namespace grapher.Models.Options } } + public override int Top + { + get + { + return OffsetOption.Top; + } + set + { + OffsetOption.Top = value; + } + } + + public override int Height + { + get + { + return OffsetOption.Height; + } + } + + public override int Left + { + get + { + return OffsetOption.Left; + } + set + { + OffsetOption.Left = value; + } + } + + public override int Width + { + get + { + return OffsetOption.Width; + } + } + + public override bool Visible + { + get + { + return OffsetOption.Visible; + } + } + + public override void Hide() + { + OffsetOption.Hide(); + } + + public void Show() + { + OffsetOption.Show(); + } + + public override void Show(string name) + { + OffsetOption.Show(name); + } + public void SetActiveValue(double offset, double legacyOffset) { if (offset > 0) diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index 22b78d4..68ecf66 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -8,7 +8,7 @@ using System.Windows.Forms; namespace grapher { - public class Option + public class Option : OptionBase { #region Constructors @@ -72,7 +72,7 @@ namespace grapher public ActiveValueLabel ActiveValueLabel { get; } - public int Top + public override int Top { get { @@ -85,7 +85,7 @@ namespace grapher } } - public int Height + public override int Height { get { @@ -93,18 +93,18 @@ namespace grapher } } - public int Left + public override int Left { get { return Label.Left; } - private set + set { Label.Left = value; } } - public int Width + public override int Width { get { @@ -112,6 +112,14 @@ namespace grapher } } + public override bool Visible + { + get + { + return Field.Box.Visible; + } + } + #endregion Properties #region Methods @@ -127,7 +135,7 @@ namespace grapher ActiveValueLabel.SetValue(value); } - public void Hide() + public override void Hide() { Field.Box.Hide(); Label.Hide(); @@ -146,23 +154,13 @@ namespace grapher ActiveValueLabel.SetValue(value); } - public void Show(string name) + public override void Show(string name) { SetName(name); Show(); } - public void SnapTo(Option option) - { - Top = option.Top + option.Height + Constants.OptionVerticalSeperation; - } - - public void SnapTo(CapOptions option) - { - Top = option.Top + option.Height + Constants.OptionVerticalSeperation; - } - #endregion Methods } } diff --git a/grapher/Models/Options/OptionBase.cs b/grapher/Models/Options/OptionBase.cs new file mode 100644 index 0000000..9fba72f --- /dev/null +++ b/grapher/Models/Options/OptionBase.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace grapher.Models.Options +{ + public abstract class OptionBase : IOption + { + public abstract int Top { get; set; } + + public abstract int Height { get; } + + public abstract int Left { get; set; } + + public abstract int Width { get; } + + public abstract bool Visible { get; } + + public abstract void Show(string Name); + + public abstract void Hide(); + + public virtual void SnapTo(IOption option) + { + Top = option.Top + option.Height + Constants.OptionVerticalSeperation; + } + } +} -- cgit v1.2.3 From 0fb1013f66026c696fec6469c02aba1c91711289 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 7 Sep 2020 19:13:30 -0700 Subject: Fix some separation bugs --- grapher/Models/Options/AccelTypeOptions.cs | 39 ++++++++++++++++++------------ grapher/Models/Options/CapOptions.cs | 4 +++ grapher/Models/Options/IOption.cs | 2 ++ grapher/Models/Options/OffsetOptions.cs | 4 +++ grapher/Models/Options/Option.cs | 4 +++ grapher/Models/Options/OptionBase.cs | 11 +++++++-- 6 files changed, 47 insertions(+), 17 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 878c955..a5ed474 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -10,7 +10,7 @@ using System.Windows.Forms; namespace grapher { - public class AccelTypeOptions + public class AccelTypeOptions : OptionBase { #region Fields @@ -102,7 +102,7 @@ namespace grapher private IEnumerable Options { get; } - public int Top + public override int Top { get { @@ -115,19 +115,15 @@ namespace grapher } } - public int Height + public override int Height { get { return AccelDropdown.Height; } - set - { - AccelDropdown.Height = value; - } } - public int Left + public override int Left { get { @@ -139,7 +135,7 @@ namespace grapher } } - public int Width + public override int Width { get { @@ -151,13 +147,21 @@ namespace grapher } } + public override bool Visible + { + get + { + return AccelDropdown.Visible; + } + } + private bool ShowingDefault { get; set; } #endregion Properties #region Methods - public void Hide() + public override void Hide() { AccelDropdown.Hide(); @@ -175,6 +179,11 @@ namespace grapher Layout(); } + public override void Show(string name) + { + Show(); + } + public void SetActiveValues(int index, AccelArgs args) { var name = AccelerationTypes.Where(t => t.Value.Index == index).FirstOrDefault().Value.Name; @@ -195,8 +204,8 @@ namespace grapher AccelDropdown.Text = Constants.AccelDropDownDefaultFullText; } - Left = Acceleration.Left; - Width = Acceleration.Width; + Left = Acceleration.Left + Constants.DropDownLeftSeparation; + Width = Acceleration.Width - Constants.DropDownLeftSeparation; } public void ShowShortened() @@ -236,14 +245,14 @@ namespace grapher private void OnIndexChanged(object sender, EventArgs e) { var accelerationTypeString = AccelDropdown.SelectedItem.ToString(); - Layout(accelerationTypeString); + Layout(accelerationTypeString, Beneath); ShowingDefault = false; } - private void Layout(string type) + private void Layout(string type, int top = -1) { AccelerationType = AccelerationTypes[type]; - Layout(); + Layout(top); } private void Layout(int top = -1) diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index cf587c7..a44b536 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -114,6 +114,10 @@ namespace grapher { return CapOption.Width; } + set + { + CapOption.Width = value; + } } public override bool Visible diff --git a/grapher/Models/Options/IOption.cs b/grapher/Models/Options/IOption.cs index 71ac5e4..b387971 100644 --- a/grapher/Models/Options/IOption.cs +++ b/grapher/Models/Options/IOption.cs @@ -15,6 +15,8 @@ namespace grapher.Models.Options int Left { get; } int Width { get; } + + int Beneath { get; } bool Visible { get; } diff --git a/grapher/Models/Options/OffsetOptions.cs b/grapher/Models/Options/OffsetOptions.cs index fbc6898..ffcb862 100644 --- a/grapher/Models/Options/OffsetOptions.cs +++ b/grapher/Models/Options/OffsetOptions.cs @@ -103,6 +103,10 @@ namespace grapher.Models.Options { return OffsetOption.Width; } + set + { + OffsetOption.Width = value; + } } public override bool Visible diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index 68ecf66..5355a8a 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -110,6 +110,10 @@ namespace grapher { return Field.Left + Field.Width - Label.Left; } + set + { + Field.Width = value; + } } public override bool Visible diff --git a/grapher/Models/Options/OptionBase.cs b/grapher/Models/Options/OptionBase.cs index 9fba72f..7fb7c0e 100644 --- a/grapher/Models/Options/OptionBase.cs +++ b/grapher/Models/Options/OptionBase.cs @@ -14,7 +14,14 @@ namespace grapher.Models.Options public abstract int Left { get; set; } - public abstract int Width { get; } + public abstract int Width { get; set; } + + public int Beneath { + get + { + return Top + Height + Constants.OptionVerticalSeperation; + } + } public abstract bool Visible { get; } @@ -24,7 +31,7 @@ namespace grapher.Models.Options public virtual void SnapTo(IOption option) { - Top = option.Top + option.Height + Constants.OptionVerticalSeperation; + Top = option.Beneath; } } } -- cgit v1.2.3 From 1462da675f1bc36d2a770413f13ccc68165cf1e9 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 7 Sep 2020 20:30:15 -0700 Subject: Add chart resize --- grapher/Models/Options/ApplyOptions.cs | 9 ++++++++- grapher/Models/Options/Option.cs | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 68f06fb..96d598d 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -18,7 +18,8 @@ namespace grapher.Models.Options ToolStripMenuItem byComponentMenuItem, CheckBox byComponentVectorXYLock, AccelOptionSet optionSetX, - AccelOptionSet optionSetY) + AccelOptionSet optionSetY, + AccelCharts accelCharts) { WholeVectorMenuItem = wholeVectorMenuItem; ByComponentVectorMenuItem = byComponentMenuItem; @@ -32,6 +33,7 @@ namespace grapher.Models.Options ByComponentVectorXYLock = byComponentVectorXYLock; OptionSetX = optionSetX; OptionSetY = optionSetY; + AccelCharts = accelCharts; ByComponentVectorXYLock.CheckedChanged += new System.EventHandler(OnByComponentXYLockChecked); ByComponentVectorXYLock.Checked = true; @@ -53,6 +55,8 @@ namespace grapher.Models.Options public AccelOptionSet OptionSetY { get; } + public AccelCharts AccelCharts { get; } + public bool IsWhole { get; private set; } #endregion Properties @@ -130,12 +134,14 @@ namespace grapher.Models.Options { OptionSetX.SetRegularMode(); OptionSetY.Hide(); + AccelCharts.SetWidened(); } public void ShowByComponentAsOneSet() { OptionSetX.SetTitleMode("X = Y"); OptionSetY.Hide(); + AccelCharts.SetWidened(); } public void ShowByComponentAsTwoSets() @@ -143,6 +149,7 @@ namespace grapher.Models.Options OptionSetX.SetTitleMode("X"); OptionSetY.SetTitleMode("Y"); OptionSetY.Show(); + AccelCharts.SetNarrowed(); } public void ShowByComponentSet() diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index 5355a8a..3c7b2ec 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -112,7 +112,6 @@ namespace grapher } set { - Field.Width = value; } } -- cgit v1.2.3 From f2322540dd904474587ddebfa8d96dc66a902530 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 8 Sep 2020 00:51:05 -0700 Subject: Alignment for whole mode works --- grapher/Models/Options/AccelOptionSet.cs | 35 ++++++++++++------ grapher/Models/Options/AccelTypeOptions.cs | 35 +++++++++--------- grapher/Models/Options/ActiveValueLabel.cs | 12 +++++++ grapher/Models/Options/ActiveValueLabelXY.cs | 27 ++++++++++++-- grapher/Models/Options/ApplyOptions.cs | 54 ++++++++++++++++++++++++++-- grapher/Models/Options/CapOptions.cs | 5 +++ grapher/Models/Options/OffsetOptions.cs | 5 +++ grapher/Models/Options/Option.cs | 10 +++++- grapher/Models/Options/OptionBase.cs | 2 ++ grapher/Models/Options/OptionXY.cs | 5 +++ 10 files changed, 159 insertions(+), 31 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs index 8c7b303..2a1436f 100644 --- a/grapher/Models/Options/AccelOptionSet.cs +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -1,6 +1,7 @@ using grapher.Models.Serialized; using System; using System.Collections.Generic; +using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -11,24 +12,31 @@ namespace grapher.Models.Options public class AccelOptionSet { public AccelOptionSet( - Label titleLabel, + Label title, + Label activeValuesTitle, int topAnchor, AccelTypeOptions accelTypeOptions) { - TitleLabel = titleLabel; + OptionsTitle = title; + ActiveValuesTitle = activeValuesTitle; TopAnchor = topAnchor; Options = accelTypeOptions; + ActiveValuesTitle.AutoSize = false; + ActiveValuesTitle.TextAlign = ContentAlignment.MiddleCenter; + Options.ShowFull(); - TitleLabel.Top = TopAnchor; + OptionsTitle.Top = TopAnchor; IsTitleMode = true; SetRegularMode(); } public int TopAnchor { get; } - public Label TitleLabel { get; } + public Label OptionsTitle { get; } + + public Label ActiveValuesTitle { get; } public AccelTypeOptions Options { get; } @@ -48,7 +56,7 @@ namespace grapher.Models.Options public void SetTitleMode(string title) { - TitleLabel.Text = title; + OptionsTitle.Text = title; if (!IsTitleMode) { @@ -61,7 +69,8 @@ namespace grapher.Models.Options public void Hide() { - TitleLabel.Hide(); + OptionsTitle.Hide(); + ActiveValuesTitle.Hide(); Options.Hide(); } @@ -69,22 +78,23 @@ namespace grapher.Models.Options { if (IsTitleMode) { - TitleLabel.Show(); + OptionsTitle.Show(); } + ActiveValuesTitle.Show(); Options.Show(); } public void DisplayTitle() { - TitleLabel.Show(); + OptionsTitle.Show(); - Options.Top = TitleLabel.Top + TitleLabel.Height + Constants.OptionVerticalSeperation; + Options.Top = OptionsTitle.Top + OptionsTitle.Height + Constants.OptionVerticalSeperation; } public void HideTitle() { - TitleLabel.Hide(); + OptionsTitle.Hide(); Options.Top = TopAnchor; } @@ -103,5 +113,10 @@ namespace grapher.Models.Options { Options.SetActiveValues(mode, args); } + + public void AlignActiveValuesByTitle() + { + Options.AlignActiveValues(ActiveValuesTitle.Width); + } } } diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index a5ed474..6a5dbc8 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -38,7 +38,7 @@ namespace grapher Option limitOrExponent, Option midpoint, Button writeButton, - ActiveValueLabel activeValueLabel) + ActiveValueLabel accelTypeActiveValue) { AccelDropdown = accelDropdown; AccelDropdown.Items.Clear(); @@ -52,17 +52,7 @@ namespace grapher LimitOrExponent = limitOrExponent; Midpoint = midpoint; WriteButton = writeButton; - ActiveValueLabel = activeValueLabel; - - Options = new List - { - Acceleration, - Cap, - Offset, - Weight, - LimitOrExponent, - Midpoint, - }; + AccelTypeActiveValue = accelTypeActiveValue; Layout("Off"); ShowingDefault = true; @@ -86,7 +76,7 @@ namespace grapher public LayoutBase AccelerationType { get; private set; } - public ActiveValueLabel ActiveValueLabel { get; } + public ActiveValueLabel AccelTypeActiveValue { get; } public Option Acceleration { get; } @@ -100,8 +90,6 @@ namespace grapher public Option Midpoint { get; } - private IEnumerable Options { get; } - public override int Top { get @@ -111,6 +99,7 @@ namespace grapher set { AccelDropdown.Top = value; + AccelTypeActiveValue.Top = value; Layout(value + AccelDropdown.Height + Constants.OptionVerticalSeperation); } } @@ -132,6 +121,7 @@ namespace grapher set { AccelDropdown.Left = value; + AccelTypeActiveValue.Left = AccelDropdown.Left + Width; } } @@ -144,6 +134,7 @@ namespace grapher set { AccelDropdown.Width = value; + AccelTypeActiveValue.Left = Left + AccelDropdown.Width; } } @@ -187,7 +178,7 @@ namespace grapher public void SetActiveValues(int index, AccelArgs args) { var name = AccelerationTypes.Where(t => t.Value.Index == index).FirstOrDefault().Value.Name; - ActiveValueLabel.SetValue(name); + AccelTypeActiveValue.SetValue(name); Weight.SetActiveValue(args.weight); Cap.SetActiveValues(args.gainCap, args.scaleCap, args.gainCap > 0); @@ -242,6 +233,18 @@ namespace grapher return args; } + public override void AlignActiveValues(int width) + { + AccelTypeActiveValue.Width = width; + + Acceleration.AlignActiveValues(width); + Cap.AlignActiveValues(width); + Offset.AlignActiveValues(width); + Weight.AlignActiveValues(width); + LimitOrExponent.AlignActiveValues(width); + Midpoint.AlignActiveValues(width); + } + private void OnIndexChanged(object sender, EventArgs e) { var accelerationTypeString = AccelDropdown.SelectedItem.ToString(); diff --git a/grapher/Models/Options/ActiveValueLabel.cs b/grapher/Models/Options/ActiveValueLabel.cs index d2b43ab..39af325 100644 --- a/grapher/Models/Options/ActiveValueLabel.cs +++ b/grapher/Models/Options/ActiveValueLabel.cs @@ -91,6 +91,18 @@ namespace grapher.Models.Options } } + public int Top + { + get + { + return ValueLabel.Top; + } + set + { + ValueLabel.Top = value; + } + } + #endregion Properties #region Methods diff --git a/grapher/Models/Options/ActiveValueLabelXY.cs b/grapher/Models/Options/ActiveValueLabelXY.cs index c8caddf..3f94847 100644 --- a/grapher/Models/Options/ActiveValueLabelXY.cs +++ b/grapher/Models/Options/ActiveValueLabelXY.cs @@ -43,9 +43,9 @@ namespace grapher.Models.Options public bool Combined { get; private set; } - private int FullWidth { get; } + private int FullWidth { get; set; } - private int ShortenedWidth { get; } + private int ShortenedWidth { get; set; } #endregion Properties @@ -93,6 +93,29 @@ namespace grapher.Models.Options Combined = false; } + public void AlignActiveValues(int width) + { + Align(width); + + if (Combined) + { + X.Width = FullWidth; + } + else + { + X.Width = ShortenedWidth; + } + } + + private void Align (int width) + { + FullWidth = width; + ShortenedWidth = (FullWidth - Constants.ActiveLabelXYSeparation) / 2; + + Y.Left = X.Left + ShortenedWidth + Constants.ActiveLabelXYSeparation; + Y.Width = ShortenedWidth; + } + #endregion Methods } } diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 96d598d..76a3bb8 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -1,6 +1,7 @@ using grapher.Models.Serialized; using System; using System.Collections.Generic; +using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -19,6 +20,9 @@ namespace grapher.Models.Options CheckBox byComponentVectorXYLock, AccelOptionSet optionSetX, AccelOptionSet optionSetY, + OptionXY sensitivity, + Option rotation, + Label lockXYLabel, AccelCharts accelCharts) { WholeVectorMenuItem = wholeVectorMenuItem; @@ -33,8 +37,14 @@ namespace grapher.Models.Options ByComponentVectorXYLock = byComponentVectorXYLock; OptionSetX = optionSetX; OptionSetY = optionSetY; + Sensitivity = sensitivity; + Rotation = rotation; + LockXYLabel = lockXYLabel; AccelCharts = accelCharts; + LockXYLabel.AutoSize = false; + LockXYLabel.TextAlign = ContentAlignment.MiddleCenter; + ByComponentVectorXYLock.CheckedChanged += new System.EventHandler(OnByComponentXYLockChecked); ByComponentVectorXYLock.Checked = true; @@ -55,8 +65,16 @@ namespace grapher.Models.Options public AccelOptionSet OptionSetY { get; } + public OptionXY Sensitivity { get; } + + public Option Rotation { get; } + public AccelCharts AccelCharts { get; } + public Label ActiveValueTitleY { get; } + + public Label LockXYLabel { get; } + public bool IsWhole { get; private set; } #endregion Properties @@ -86,8 +104,18 @@ namespace grapher.Models.Options } - public void SetActiveValues(int xMode, int yMode, AccelArgs xArgs, AccelArgs yArgs, bool isWhole) + public void SetActiveValues( + double xSens, + double ySens, + double rotation, + int xMode, + int yMode, + AccelArgs xArgs, + AccelArgs yArgs, + bool isWhole) { + Sensitivity.SetActiveValues(xSens, ySens); + Rotation.SetActiveValue(rotation); OptionSetX.SetActiveValues(xMode, xArgs); OptionSetY.SetActiveValues(yMode, yArgs); WholeVectorMenuItem.Checked = isWhole; @@ -96,7 +124,15 @@ namespace grapher.Models.Options public void SetActiveValues(DriverSettings settings) { - SetActiveValues((int)settings.modes.x, (int)settings.modes.y, settings.args.x, settings.args.y, settings.combineMagnitudes); + SetActiveValues( + settings.sensitivity.x, + settings.sensitivity.x, + settings.rotation, + (int)settings.modes.x, + (int)settings.modes.y, + settings.args.x, + settings.args.y, + settings.combineMagnitudes); } public void OnWholeClicked(object sender, EventArgs e) @@ -135,6 +171,7 @@ namespace grapher.Models.Options OptionSetX.SetRegularMode(); OptionSetY.Hide(); AccelCharts.SetWidened(); + SetActiveTitlesWhole(); } public void ShowByComponentAsOneSet() @@ -186,6 +223,19 @@ namespace grapher.Models.Options ShowByComponentSet(); } + private void SetActiveTitlesWhole() + { + OptionSetX.ActiveValuesTitle.Left = OptionSetX.Options.Left + OptionSetX.Options.Width; + LockXYLabel.Width = (AccelCharts.SensitivityChart.Left - OptionSetX.ActiveValuesTitle.Left) / 2; + OptionSetX.ActiveValuesTitle.Width = LockXYLabel.Width; + LockXYLabel.Left = OptionSetX.ActiveValuesTitle.Left + OptionSetX.ActiveValuesTitle.Width; + Sensitivity.Fields.LockCheckBox.Left = LockXYLabel.Left + LockXYLabel.Width / 2 - Sensitivity.Fields.LockCheckBox.Width / 2; + ByComponentVectorXYLock.Left = Sensitivity.Fields.LockCheckBox.Left; + OptionSetX.AlignActiveValuesByTitle(); + Sensitivity.AlignActiveValues(OptionSetX.ActiveValuesTitle.Width); + Rotation.AlignActiveValues(OptionSetX.ActiveValuesTitle.Width); + } + #endregion Methods } } diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index a44b536..064a521 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -173,6 +173,11 @@ namespace grapher } } + public override void AlignActiveValues(int width) + { + CapOption.AlignActiveValues(width); + } + void OnSensitivityCapCheckClick(object sender, EventArgs e) { if (!LegacyCapCheck.Checked) diff --git a/grapher/Models/Options/OffsetOptions.cs b/grapher/Models/Options/OffsetOptions.cs index ffcb862..8942b0c 100644 --- a/grapher/Models/Options/OffsetOptions.cs +++ b/grapher/Models/Options/OffsetOptions.cs @@ -144,6 +144,11 @@ namespace grapher.Models.Options } } + public override void AlignActiveValues(int width) + { + OffsetOption.AlignActiveValues(width); + } + public void OnVelocityGainOffsetClick(object sender, EventArgs e) { if (!VelocityGainOffsetCheck.Checked) diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index 3c7b2ec..fd4a6fe 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -26,6 +26,8 @@ namespace grapher label.AutoSize = false; label.Width = Field.Left - left - Constants.OptionLabelBoxSeperation; label.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + + ActiveValueLabel.Left = Field.Left + Field.Width; } public Option( @@ -82,6 +84,7 @@ namespace grapher { Field.Top = value; Label.Top = value; + ActiveValueLabel.Top = value; } } @@ -163,7 +166,12 @@ namespace grapher Show(); } - + + public override void AlignActiveValues(int width) + { + ActiveValueLabel.Width = width; + } + #endregion Methods } } diff --git a/grapher/Models/Options/OptionBase.cs b/grapher/Models/Options/OptionBase.cs index 7fb7c0e..d9ca952 100644 --- a/grapher/Models/Options/OptionBase.cs +++ b/grapher/Models/Options/OptionBase.cs @@ -29,6 +29,8 @@ namespace grapher.Models.Options public abstract void Hide(); + public abstract void AlignActiveValues(int width); + public virtual void SnapTo(IOption option) { Top = option.Beneath; diff --git a/grapher/Models/Options/OptionXY.cs b/grapher/Models/Options/OptionXY.cs index c1fd0b7..372bbe9 100644 --- a/grapher/Models/Options/OptionXY.cs +++ b/grapher/Models/Options/OptionXY.cs @@ -77,6 +77,11 @@ namespace grapher ActiveValueLabels.SetValues(x, y); } + public void AlignActiveValues(int width) + { + ActiveValueLabels.AlignActiveValues(width); + } + public void Hide() { Fields.Hide(); -- cgit v1.2.3 From 254a66eda9d9f6add21937b3570d29f64af4ab1e Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 8 Sep 2020 01:09:19 -0700 Subject: Fix few small bugs --- grapher/Models/Options/AccelTypeOptions.cs | 1 + grapher/Models/Options/ActiveValueLabelXY.cs | 25 ++++++++++++++++++++----- grapher/Models/Options/ApplyOptions.cs | 5 ++++- grapher/Models/Options/OptionXY.cs | 1 + 4 files changed, 26 insertions(+), 6 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 6a5dbc8..02d54d1 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -155,6 +155,7 @@ namespace grapher public override void Hide() { AccelDropdown.Hide(); + AccelTypeActiveValue.Hide(); Acceleration.Hide(); Cap.Hide(); diff --git a/grapher/Models/Options/ActiveValueLabelXY.cs b/grapher/Models/Options/ActiveValueLabelXY.cs index 3f94847..e6e4f52 100644 --- a/grapher/Models/Options/ActiveValueLabelXY.cs +++ b/grapher/Models/Options/ActiveValueLabelXY.cs @@ -22,10 +22,7 @@ namespace grapher.Models.Options X = x; Y = y; - FullWidth = x.Width; - ShortenedWidth = (FullWidth - Constants.ActiveLabelXYSeparation) / 2; - - Y.Left = X.Left + ShortenedWidth + Constants.ActiveLabelXYSeparation; + Align(x.Width); Y.Width = ShortenedWidth; Y.FormatString = Constants.ShortenedFormatString; @@ -43,6 +40,19 @@ namespace grapher.Models.Options public bool Combined { get; private set; } + public int Left + { + get + { + return X.Left; + } + set + { + X.Left = value; + SetYLeft(); + } + } + private int FullWidth { get; set; } private int ShortenedWidth { get; set; } @@ -112,10 +122,15 @@ namespace grapher.Models.Options FullWidth = width; ShortenedWidth = (FullWidth - Constants.ActiveLabelXYSeparation) / 2; - Y.Left = X.Left + ShortenedWidth + Constants.ActiveLabelXYSeparation; + SetYLeft(); Y.Width = ShortenedWidth; } + private void SetYLeft() + { + Y.Left = X.Left + ShortenedWidth + Constants.ActiveLabelXYSeparation; + } + #endregion Methods } } diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 76a3bb8..5e4aef4 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -163,7 +163,10 @@ namespace grapher.Models.Options public void OnByComponentCheckedChange(object sender, EventArgs e) { - EnableByComponentApplication(); + if (ByComponentVectorMenuItem.Checked) + { + EnableByComponentApplication(); + } } public void ShowWholeSet() diff --git a/grapher/Models/Options/OptionXY.cs b/grapher/Models/Options/OptionXY.cs index 372bbe9..9741702 100644 --- a/grapher/Models/Options/OptionXY.cs +++ b/grapher/Models/Options/OptionXY.cs @@ -16,6 +16,7 @@ namespace grapher Fields = fields; Label = label; ActiveValueLabels = activeValueLabels; + ActiveValueLabels.Left = fields.CombinedWidth + fields.Left; } public OptionXY( -- cgit v1.2.3 From 9502dcf7608475857b1487375997d20a9d29622e Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 8 Sep 2020 01:26:22 -0700 Subject: Remove and sort usings en masse --- grapher/Models/Options/AccelOptionSet.cs | 5 ----- grapher/Models/Options/AccelTypeOptions.cs | 2 -- grapher/Models/Options/ActiveValueLabel.cs | 7 +------ grapher/Models/Options/ActiveValueLabelXY.cs | 8 +------- grapher/Models/Options/ApplyOptions.cs | 5 ----- grapher/Models/Options/CapOptions.cs | 4 ---- grapher/Models/Options/IOption.cs | 8 +------- grapher/Models/Options/OffsetOptions.cs | 4 ---- grapher/Models/Options/Option.cs | 5 ----- grapher/Models/Options/OptionBase.cs | 8 +------- grapher/Models/Options/OptionXY.cs | 4 ---- 11 files changed, 4 insertions(+), 56 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs index 2a1436f..a5399da 100644 --- a/grapher/Models/Options/AccelOptionSet.cs +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -1,10 +1,5 @@ using grapher.Models.Serialized; -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 diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 02d54d1..3739189 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -4,8 +4,6 @@ using grapher.Models.Serialized; using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace grapher diff --git a/grapher/Models/Options/ActiveValueLabel.cs b/grapher/Models/Options/ActiveValueLabel.cs index 39af325..df7ac42 100644 --- a/grapher/Models/Options/ActiveValueLabel.cs +++ b/grapher/Models/Options/ActiveValueLabel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Drawing; using System.Windows.Forms; namespace grapher.Models.Options diff --git a/grapher/Models/Options/ActiveValueLabelXY.cs b/grapher/Models/Options/ActiveValueLabelXY.cs index e6e4f52..ffe57b7 100644 --- a/grapher/Models/Options/ActiveValueLabelXY.cs +++ b/grapher/Models/Options/ActiveValueLabelXY.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace grapher.Models.Options +namespace grapher.Models.Options { public class ActiveValueLabelXY { diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 5e4aef4..6ff2753 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -1,12 +1,7 @@ using grapher.Models.Serialized; using System; -using System.Collections.Generic; using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; -using System.Windows.Forms.DataVisualization.Charting; namespace grapher.Models.Options { diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index 064a521..8a0865a 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -1,9 +1,5 @@ using grapher.Models.Options; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace grapher diff --git a/grapher/Models/Options/IOption.cs b/grapher/Models/Options/IOption.cs index b387971..fff1623 100644 --- a/grapher/Models/Options/IOption.cs +++ b/grapher/Models/Options/IOption.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace grapher.Models.Options +namespace grapher.Models.Options { public interface IOption { diff --git a/grapher/Models/Options/OffsetOptions.cs b/grapher/Models/Options/OffsetOptions.cs index 8942b0c..f68d16d 100644 --- a/grapher/Models/Options/OffsetOptions.cs +++ b/grapher/Models/Options/OffsetOptions.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace grapher.Models.Options diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index fd4a6fe..f44e6b1 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -1,9 +1,4 @@ using grapher.Models.Options; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace grapher diff --git a/grapher/Models/Options/OptionBase.cs b/grapher/Models/Options/OptionBase.cs index d9ca952..77a1038 100644 --- a/grapher/Models/Options/OptionBase.cs +++ b/grapher/Models/Options/OptionBase.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace grapher.Models.Options +namespace grapher.Models.Options { public abstract class OptionBase : IOption { diff --git a/grapher/Models/Options/OptionXY.cs b/grapher/Models/Options/OptionXY.cs index 9741702..9150587 100644 --- a/grapher/Models/Options/OptionXY.cs +++ b/grapher/Models/Options/OptionXY.cs @@ -1,9 +1,5 @@ using grapher.Models.Options; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace grapher -- cgit v1.2.3 From a6448c4a2447a090558da5f52dea3dc418389e8a Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 8 Sep 2020 12:35:23 -0700 Subject: Fix few small bugs --- grapher/Models/Options/AccelOptionSet.cs | 4 +- grapher/Models/Options/AccelTypeOptions.cs | 20 +++++---- grapher/Models/Options/ActiveValueLabel.cs | 28 +++++++++++-- grapher/Models/Options/ActiveValueLabelXY.cs | 17 +++++++- grapher/Models/Options/ApplyOptions.cs | 14 +++++-- grapher/Models/Options/CapOptions.cs | 4 +- grapher/Models/Options/OffsetOptions.cs | 4 +- grapher/Models/Options/Option.cs | 8 ++-- grapher/Models/Options/OptionBase.cs | 2 +- grapher/Models/Options/OptionXY.cs | 61 +++++++++++++++++++++++++--- 10 files changed, 130 insertions(+), 32 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs index a5399da..bc0d368 100644 --- a/grapher/Models/Options/AccelOptionSet.cs +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -109,9 +109,9 @@ namespace grapher.Models.Options Options.SetActiveValues(mode, args); } - public void AlignActiveValuesByTitle() + public void AlignActiveValues() { - Options.AlignActiveValues(ActiveValuesTitle.Width); + Options.AlignActiveValues(); } } } diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 3739189..86a28f4 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -52,6 +52,8 @@ namespace grapher WriteButton = writeButton; AccelTypeActiveValue = accelTypeActiveValue; + AccelTypeActiveValue.Height = AccelDropdown.Height; + Layout("Off"); ShowingDefault = true; } @@ -166,6 +168,7 @@ namespace grapher public void Show() { AccelDropdown.Show(); + AccelTypeActiveValue.Show(); Layout(); } @@ -232,16 +235,15 @@ namespace grapher return args; } - public override void AlignActiveValues(int width) + public override void AlignActiveValues() { - AccelTypeActiveValue.Width = width; - - Acceleration.AlignActiveValues(width); - Cap.AlignActiveValues(width); - Offset.AlignActiveValues(width); - Weight.AlignActiveValues(width); - LimitOrExponent.AlignActiveValues(width); - Midpoint.AlignActiveValues(width); + AccelTypeActiveValue.Align(); + Acceleration.AlignActiveValues(); + Cap.AlignActiveValues(); + Offset.AlignActiveValues(); + Weight.AlignActiveValues(); + LimitOrExponent.AlignActiveValues(); + Midpoint.AlignActiveValues(); } private void OnIndexChanged(object sender, EventArgs e) diff --git a/grapher/Models/Options/ActiveValueLabel.cs b/grapher/Models/Options/ActiveValueLabel.cs index df7ac42..18a4400 100644 --- a/grapher/Models/Options/ActiveValueLabel.cs +++ b/grapher/Models/Options/ActiveValueLabel.cs @@ -22,11 +22,12 @@ namespace grapher.Models.Options public ActiveValueLabel(Label valueLabel, Label centeringLabel) { ValueLabel = valueLabel; - ValueLabel.ForeColor = Constants.ActiveValueFontColor; - Left = centeringLabel.Left; - Width = centeringLabel.Width; ValueLabel.AutoSize = false; ValueLabel.TextAlign = ContentAlignment.MiddleCenter; + ValueLabel.ForeColor = Constants.ActiveValueFontColor; + + CenteringLabel = centeringLabel; + Align(); FormatString = Constants.DefaultActiveValueFormatString; Prefix = string.Empty; @@ -98,6 +99,21 @@ namespace grapher.Models.Options } } + public int Height + { + get + { + return ValueLabel.Height; + } + + set + { + ValueLabel.Height = value; + } + } + + public Label CenteringLabel { get; } + #endregion Properties #region Methods @@ -127,6 +143,12 @@ namespace grapher.Models.Options ValueLabel.Text = string.IsNullOrWhiteSpace(Prefix) ? Value: $"{Prefix}: {Value}"; } + public void Align() + { + Left = CenteringLabel.Left; + Width = CenteringLabel.Width; + } + #endregion Methods } } diff --git a/grapher/Models/Options/ActiveValueLabelXY.cs b/grapher/Models/Options/ActiveValueLabelXY.cs index ffe57b7..9498c66 100644 --- a/grapher/Models/Options/ActiveValueLabelXY.cs +++ b/grapher/Models/Options/ActiveValueLabelXY.cs @@ -47,6 +47,19 @@ } } + public int Height + { + get + { + return X.Height; + } + set + { + X.Height = value; + Y.Height = value; + } + } + private int FullWidth { get; set; } private int ShortenedWidth { get; set; } @@ -97,9 +110,9 @@ Combined = false; } - public void AlignActiveValues(int width) + public void AlignActiveValues() { - Align(width); + Align(X.CenteringLabel.Width); if (Combined) { diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 6ff2753..29f923d 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -43,6 +43,8 @@ namespace grapher.Models.Options ByComponentVectorXYLock.CheckedChanged += new System.EventHandler(OnByComponentXYLockChecked); ByComponentVectorXYLock.Checked = true; + Rotation.SnapTo(Sensitivity); + EnableWholeApplication(); } @@ -229,9 +231,15 @@ namespace grapher.Models.Options LockXYLabel.Left = OptionSetX.ActiveValuesTitle.Left + OptionSetX.ActiveValuesTitle.Width; Sensitivity.Fields.LockCheckBox.Left = LockXYLabel.Left + LockXYLabel.Width / 2 - Sensitivity.Fields.LockCheckBox.Width / 2; ByComponentVectorXYLock.Left = Sensitivity.Fields.LockCheckBox.Left; - OptionSetX.AlignActiveValuesByTitle(); - Sensitivity.AlignActiveValues(OptionSetX.ActiveValuesTitle.Width); - Rotation.AlignActiveValues(OptionSetX.ActiveValuesTitle.Width); + AlignActiveValues(); + } + + private void AlignActiveValues() + { + OptionSetX.AlignActiveValues(); + OptionSetY.AlignActiveValues(); + Sensitivity.AlignActiveValues(); + Rotation.AlignActiveValues(); } #endregion Methods diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs index 8a0865a..5e47d7b 100644 --- a/grapher/Models/Options/CapOptions.cs +++ b/grapher/Models/Options/CapOptions.cs @@ -169,9 +169,9 @@ namespace grapher } } - public override void AlignActiveValues(int width) + public override void AlignActiveValues() { - CapOption.AlignActiveValues(width); + CapOption.AlignActiveValues(); } void OnSensitivityCapCheckClick(object sender, EventArgs e) diff --git a/grapher/Models/Options/OffsetOptions.cs b/grapher/Models/Options/OffsetOptions.cs index f68d16d..b351ab5 100644 --- a/grapher/Models/Options/OffsetOptions.cs +++ b/grapher/Models/Options/OffsetOptions.cs @@ -140,9 +140,9 @@ namespace grapher.Models.Options } } - public override void AlignActiveValues(int width) + public override void AlignActiveValues() { - OffsetOption.AlignActiveValues(width); + OffsetOption.AlignActiveValues(); } public void OnVelocityGainOffsetClick(object sender, EventArgs e) diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs index f44e6b1..5dc022b 100644 --- a/grapher/Models/Options/Option.cs +++ b/grapher/Models/Options/Option.cs @@ -19,10 +19,12 @@ namespace grapher Left = left; label.AutoSize = false; - label.Width = Field.Left - left - Constants.OptionLabelBoxSeperation; label.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + label.Width = Field.Left - left - Constants.OptionLabelBoxSeperation; + label.Height = Field.Height; ActiveValueLabel.Left = Field.Left + Field.Width; + ActiveValueLabel.Height = Field.Height; } public Option( @@ -162,9 +164,9 @@ namespace grapher Show(); } - public override void AlignActiveValues(int width) + public override void AlignActiveValues() { - ActiveValueLabel.Width = width; + ActiveValueLabel.Align(); } #endregion Methods diff --git a/grapher/Models/Options/OptionBase.cs b/grapher/Models/Options/OptionBase.cs index 77a1038..5f6dca1 100644 --- a/grapher/Models/Options/OptionBase.cs +++ b/grapher/Models/Options/OptionBase.cs @@ -23,7 +23,7 @@ public abstract void Hide(); - public abstract void AlignActiveValues(int width); + public abstract void AlignActiveValues(); public virtual void SnapTo(IOption option) { diff --git a/grapher/Models/Options/OptionXY.cs b/grapher/Models/Options/OptionXY.cs index 9150587..6d6129a 100644 --- a/grapher/Models/Options/OptionXY.cs +++ b/grapher/Models/Options/OptionXY.cs @@ -4,7 +4,7 @@ using System.Windows.Forms; namespace grapher { - public class OptionXY + public class OptionXY : OptionBase { #region Constructors public OptionXY(FieldXY fields, Label label, ActiveValueLabelXY activeValueLabels) @@ -58,6 +58,57 @@ namespace grapher public ActiveValueLabelXY ActiveValueLabels { get; } + public override int Top + { + get + { + return Fields.Top; + } + set + { + Fields.Top = value; + } + } + + public override int Height + { + get + { + return Fields.Height; + } + } + + public override int Left + { + get + { + return Fields.Left; + } + set + { + Fields.Left = value; + } + } + + public override int Width + { + get + { + return Fields.Width; + } + set + { + Fields.Width = value; + } + } + + public override bool Visible + { + get + { + return Fields.Visible; + } + } #endregion Properties #region Methods @@ -74,12 +125,12 @@ namespace grapher ActiveValueLabels.SetValues(x, y); } - public void AlignActiveValues(int width) + public override void AlignActiveValues() { - ActiveValueLabels.AlignActiveValues(width); + ActiveValueLabels.AlignActiveValues(); } - public void Hide() + public override void Hide() { Fields.Hide(); Fields.LockCheckBox.Hide(); @@ -93,7 +144,7 @@ namespace grapher Label.Show(); } - public void Show(string name) + public override void Show(string name) { SetName(name); -- cgit v1.2.3 From 29246993d2e9d75db304b0ea2b563658d374aa53 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 8 Sep 2020 13:02:46 -0700 Subject: Fix accel type y active value alignment --- grapher/Models/Options/AccelTypeOptions.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 86a28f4..14c2019 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -52,6 +52,7 @@ namespace grapher WriteButton = writeButton; AccelTypeActiveValue = accelTypeActiveValue; + AccelTypeActiveValue.Left = AccelDropdown.Left + AccelDropdown.Width; AccelTypeActiveValue.Height = AccelDropdown.Height; Layout("Off"); @@ -121,7 +122,6 @@ namespace grapher set { AccelDropdown.Left = value; - AccelTypeActiveValue.Left = AccelDropdown.Left + Width; } } @@ -134,7 +134,6 @@ namespace grapher set { AccelDropdown.Width = value; - AccelTypeActiveValue.Left = Left + AccelDropdown.Width; } } -- cgit v1.2.3 From 9eb9e5e91a50c19207e507481ce1516187a89603 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 8 Sep 2020 15:31:25 -0700 Subject: Fix active values y width --- grapher/Models/Options/ApplyOptions.cs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 29f923d..241fe50 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -179,6 +179,7 @@ namespace grapher.Models.Options OptionSetX.SetTitleMode("X = Y"); OptionSetY.Hide(); AccelCharts.SetWidened(); + SetActiveTitlesByComponents(); } public void ShowByComponentAsTwoSets() @@ -234,6 +235,13 @@ namespace grapher.Models.Options AlignActiveValues(); } + private void SetActiveTitlesByComponents() + { + OptionSetY.ActiveValuesTitle.Left = OptionSetY.Options.Left + OptionSetY.Options.Width; + OptionSetY.ActiveValuesTitle.Width = Constants.NarrowChartLeft - OptionSetY.ActiveValuesTitle.Left; + AlignActiveValues(); + } + private void AlignActiveValues() { OptionSetX.AlignActiveValues(); -- cgit v1.2.3