diff options
Diffstat (limited to 'grapher/Models/AccelGUI.cs')
| -rw-r--r-- | grapher/Models/AccelGUI.cs | 170 |
1 files changed, 80 insertions, 90 deletions
diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index a7d5d49..3acb943 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -3,67 +3,47 @@ using grapher.Models.Mouse; using grapher.Models.Options; using grapher.Models.Serialized; using System; -using System.CodeDom; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; -using System.Windows.Forms.DataVisualization.Charting; namespace grapher { public class AccelGUI { - #region constructors + #region Constructors public AccelGUI( RawAcceleration accelForm, AccelCalculator accelCalculator, AccelCharts accelCharts, SettingsManager settings, - AccelOptions accelOptions, - OptionXY sensitivity, - Option rotation, - OptionXY weight, - CapOptions cap, - OffsetOptions offset, - Option acceleration, - Option limtOrExp, - Option midpoint, + ApplyOptions applyOptions, Button writeButton, Label mouseMoveLabel, - ToolStripMenuItem scaleMenuItem, - ToolStripMenuItem autoWriteMenuItem) + ToolStripMenuItem scaleMenuItem) { AccelForm = accelForm; AccelCalculator = accelCalculator; AccelCharts = accelCharts; - AccelerationOptions = accelOptions; - Sensitivity = sensitivity; - Rotation = rotation; - Weight = weight; - Cap = cap; - Offset = offset; - Acceleration = acceleration; - LimitOrExponent = limtOrExp; - Midpoint = midpoint; + ApplyOptions = applyOptions; WriteButton = writeButton; ScaleMenuItem = scaleMenuItem; Settings = settings; Settings.Startup(); - UpdateGraph(); + RefreshOnRead(); MouseWatcher = new MouseWatcher(AccelForm, mouseMoveLabel, AccelCharts); ScaleMenuItem.Click += new System.EventHandler(OnScaleMenuItemClick); + WriteButton.Click += new System.EventHandler(OnWriteButtonClick); + + ButtonTimer = SetupButtonTimer(); + SetupWriteButton(); } - #endregion constructors + #endregion Constructors - #region properties + #region Properties public RawAcceleration AccelForm { get; } @@ -73,67 +53,33 @@ namespace grapher public SettingsManager Settings { get; } - public AccelOptions AccelerationOptions { get; } - - public OptionXY Sensitivity { get; } - - public Option Rotation { get; } - - public OptionXY Weight { get; } - - public CapOptions Cap { get; } - - public OffsetOptions Offset { get; } - - public Option Acceleration { get; } - - public Option LimitOrExponent { get; } - - public Option Midpoint { get; } + public ApplyOptions ApplyOptions { get; } public Button WriteButton { get; } + public Timer ButtonTimer { get; } + public MouseWatcher MouseWatcher { get; } public ToolStripMenuItem ScaleMenuItem { get; } - #endregion properties + #endregion Properties - #region methods + #region Methods public void UpdateActiveSettingsFromFields() { var settings = new DriverSettings { - rotation = Rotation.Field.Data, + rotation = ApplyOptions.Rotation.Field.Data, sensitivity = new Vec2<double> { - x = Sensitivity.Fields.X, - y = Sensitivity.Fields.Y - }, - combineMagnitudes = true, - modes = new Vec2<AccelMode> - { - x = (AccelMode)AccelerationOptions.AccelerationIndex - }, - args = new Vec2<AccelArgs> - { - x = new AccelArgs - { - offset = Offset.Offset, - legacy_offset = Offset.LegacyOffset, - weight = Weight.Fields.X, - gainCap = Cap.VelocityGainCap, - scaleCap = Cap.SensitivityCapX, - accel = Acceleration.Field.Data, - rate = Acceleration.Field.Data, - powerScale = Acceleration.Field.Data, - limit = LimitOrExponent.Field.Data, - exponent = LimitOrExponent.Field.Data, - powerExponent = LimitOrExponent.Field.Data, - midpoint = Midpoint.Field.Data - } + x = ApplyOptions.Sensitivity.Fields.X, + y = ApplyOptions.Sensitivity.Fields.Y }, + combineMagnitudes = ApplyOptions.IsWhole, + modes = ApplyOptions.GetModes(), + args = ApplyOptions.GetArgs(), minimumTime = .4 }; @@ -141,10 +87,17 @@ namespace grapher { AccelForm.Invoke((MethodInvoker)delegate { + WriteButtonDelay(); UpdateGraph(); }); }); - + RefreshOnRead(); + } + + public void RefreshOnRead() + { + UpdateGraph(); + UpdateShownActiveValues(); } public void UpdateGraph() @@ -154,29 +107,66 @@ namespace grapher Settings.ActiveAccel, Settings.RawAccelSettings.AccelerationSettings); AccelCharts.Bind(); - UpdateActiveValueLabels(); } - public void UpdateActiveValueLabels() + public void UpdateShownActiveValues() { var settings = Settings.RawAccelSettings.AccelerationSettings; - - Sensitivity.SetActiveValues(settings.sensitivity.x, settings.sensitivity.y); - Rotation.SetActiveValue(settings.rotation); - AccelerationOptions.SetActiveValue((int)settings.modes.x); - Offset.SetActiveValue(settings.args.x.offset, settings.args.y.offset); - Weight.SetActiveValues(settings.args.x.weight, settings.args.x.weight); - Acceleration.SetActiveValue(settings.args.x.accel); // rate, powerscale - LimitOrExponent.SetActiveValue(settings.args.x.limit); //exp, powerexp - Midpoint.SetActiveValue(settings.args.x.midpoint); - //Cap.SetActiveValues(Settings.ActiveAccel.GainCap, Settings.ActiveAccel.CapX, Settings.ActiveAccel.CapY, Settings.ActiveAccel.GainCapEnabled); + + AccelCharts.ShowActive(settings); + ApplyOptions.SetActiveValues(settings); + } + + private Timer SetupButtonTimer() + { + Timer buttonTimer = new Timer(); + buttonTimer.Enabled = true; + buttonTimer.Interval = Convert.ToInt32(ManagedAccel.WriteDelay); + buttonTimer.Tick += new System.EventHandler(OnButtonTimerTick); + return buttonTimer; + } + + private void SetupWriteButton() + { + WriteButton.Top = AccelCharts.SensitivityChart.Top + AccelCharts.SensitivityChart.Height - Constants.WriteButtonVerticalOffset; + SetWriteButtonDefault(); + } + + private void SetWriteButtonDefault() + { + WriteButton.Text = Constants.WriteButtonDefaultText; + WriteButton.Enabled = true; + } + + private void SetWriteButtonDelay() + { + WriteButton.Enabled = false; + WriteButton.Text = $"{Constants.WriteButtonDelayText} : {ButtonTimer.Interval} ms"; } private void OnScaleMenuItemClick(object sender, EventArgs e) { UpdateGraph(); } - #endregion methods + + private void OnWriteButtonClick(object sender, EventArgs e) + { + UpdateActiveSettingsFromFields(); + } + + private void OnButtonTimerTick(object sender, EventArgs e) + { + ButtonTimer.Stop(); + SetWriteButtonDefault(); + } + + private void WriteButtonDelay() + { + SetWriteButtonDelay(); + ButtonTimer.Start(); + } + + #endregion Methods } } |