diff options
| author | Jacob Palecki <[email protected]> | 2020-09-01 21:45:42 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-09-01 21:45:42 -0700 |
| commit | 95cc3ed0a0bf66f5535b873f245bc1c35a145478 (patch) | |
| tree | de1a9f20dee0239cf7a2204945249b497deb8f9e /grapher/Models/Options/AccelOptionSet.cs | |
| parent | Add X Y labels for by component (diff) | |
| download | rawaccel-95cc3ed0a0bf66f5535b873f245bc1c35a145478.tar.xz rawaccel-95cc3ed0a0bf66f5535b873f245bc1c35a145478.zip | |
intermittent commit - large commit halfway done
Diffstat (limited to 'grapher/Models/Options/AccelOptionSet.cs')
| -rw-r--r-- | grapher/Models/Options/AccelOptionSet.cs | 169 |
1 files changed, 169 insertions, 0 deletions
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); + } + } +} |