diff options
| author | Jacob Palecki <[email protected]> | 2020-09-07 15:19:39 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-09-07 15:19:39 -0700 |
| commit | aff3a066575f4bfa429f67a5104a1fcffc5f326e (patch) | |
| tree | 975c8cf984e97d818ebf530b68a246f4a4b1aefb /grapher/Models/Options | |
| parent | Pass args by ref for setting (diff) | |
| download | rawaccel-aff3a066575f4bfa429f67a5104a1fcffc5f326e.tar.xz rawaccel-aff3a066575f4bfa429f67a5104a1fcffc5f326e.zip | |
Refactor type options
Diffstat (limited to 'grapher/Models/Options')
| -rw-r--r-- | grapher/Models/Options/AccelOptionSet.cs | 83 | ||||
| -rw-r--r-- | grapher/Models/Options/AccelTypeOptions.cs | 116 | ||||
| -rw-r--r-- | grapher/Models/Options/ApplyOptions.cs | 4 | ||||
| -rw-r--r-- | grapher/Models/Options/CapOptions.cs | 40 | ||||
| -rw-r--r-- | grapher/Models/Options/IOption.cs | 27 | ||||
| -rw-r--r-- | grapher/Models/Options/OffsetOptions.cs | 65 | ||||
| -rw-r--r-- | grapher/Models/Options/Option.cs | 34 | ||||
| -rw-r--r-- | grapher/Models/Options/OptionBase.cs | 30 |
8 files changed, 286 insertions, 113 deletions
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<OptionBase> + { + 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<OptionBase> 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<AccelMode> GetModes() { - var xMode = (AccelMode)OptionSetX.AccelTypeOptions.AccelerationIndex; + var xMode = (AccelMode)OptionSetX.Options.AccelerationIndex; return new Vec2<AccelMode> { 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; + } + } +} |