From 2be0106211cb4ce30036fc0c8e84ae70dff68c87 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 8 Oct 2020 02:07:56 -0400 Subject: add toggle button + save gui settings on close remove option to disable write on startup --- grapher/Models/AccelGUI.cs | 150 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 119 insertions(+), 31 deletions(-) (limited to 'grapher/Models/AccelGUI.cs') diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index 11685ee..c561b23 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -3,7 +3,9 @@ using grapher.Models.Mouse; using grapher.Models.Options; using grapher.Models.Serialized; using System; +using System.Drawing; using System.Windows.Forms; +using System.Windows.Forms.DataVisualization.Charting; namespace grapher { @@ -19,6 +21,7 @@ namespace grapher SettingsManager settings, ApplyOptions applyOptions, Button writeButton, + ButtonBase toggleButton, MouseWatcher mouseWatcher, ToolStripMenuItem scaleMenuItem) { @@ -27,19 +30,28 @@ namespace grapher AccelCharts = accelCharts; ApplyOptions = applyOptions; WriteButton = writeButton; + ToggleButton = (CheckBox)toggleButton; ScaleMenuItem = scaleMenuItem; Settings = settings; Settings.Startup(); - RefreshOnRead(); + RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings); + + DefaultButtonFont = WriteButton.Font; + SmallButtonFont = new Font(WriteButton.Font.Name, WriteButton.Font.Size * 0.666f); MouseWatcher = mouseWatcher; ScaleMenuItem.Click += new System.EventHandler(OnScaleMenuItemClick); WriteButton.Click += new System.EventHandler(OnWriteButtonClick); + ToggleButton.Click += new System.EventHandler(OnToggleButtonClick); + AccelForm.FormClosing += new FormClosingEventHandler(SaveGUISettingsOnClose); + + ButtonTimerInterval = Convert.ToInt32(DriverInterop.WriteDelayMs); + ButtonTimer = new Timer(); + ButtonTimer.Tick += new System.EventHandler(OnButtonTimerTick); + SetupButtons(); - ButtonTimer = SetupButtonTimer(); ChartRefresh = SetupChartTimer(); - SetupWriteButton(); } #endregion Constructors @@ -58,6 +70,8 @@ namespace grapher public Button WriteButton { get; } + public CheckBox ToggleButton { get; } + public Timer ButtonTimer { get; } public MouseWatcher MouseWatcher { get; } @@ -66,10 +80,30 @@ namespace grapher private Timer ChartRefresh { get; } + private Font SmallButtonFont { get; } + + private Font DefaultButtonFont { get; } + + private bool SettingsNotDefault { get; set; } + + private bool LastToggleChecked { get; set; } + + private int ButtonTimerInterval { get; } + #endregion Properties #region Methods + private void SaveGUISettingsOnClose(Object sender, FormClosingEventArgs e) + { + var guiSettings = Settings.MakeGUISettingsFromFields(); + if (!Settings.RawAccelSettings.GUISettings.ValueEquals(guiSettings)) + { + Settings.RawAccelSettings.GUISettings = guiSettings; + Settings.RawAccelSettings.Save(); + } + } + public void UpdateActiveSettingsFromFields() { var driverSettings = Settings.RawAccelSettings.AccelerationSettings; @@ -92,7 +126,8 @@ namespace grapher SettingsErrors errors = Settings.TryUpdateActiveSettings(settings); if (errors.Empty()) { - RefreshOnRead(); + RefreshToggleStateFromNewSettings(); + RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings); } else { @@ -100,26 +135,24 @@ namespace grapher } } - public void RefreshOnRead() + public void RefreshOnRead(DriverSettings args) { - UpdateShownActiveValues(); - UpdateGraph(); + UpdateShownActiveValues(args); + UpdateGraph(args); } - public void UpdateGraph() + public void UpdateGraph(DriverSettings args) { AccelCharts.Calculate( - Settings.ActiveAccel, - Settings.RawAccelSettings.AccelerationSettings); + Settings.ActiveAccel, + args); AccelCharts.Bind(); } - public void UpdateShownActiveValues() + public void UpdateShownActiveValues(DriverSettings args) { - var settings = Settings.RawAccelSettings.AccelerationSettings; - - AccelCharts.ShowActive(settings); - ApplyOptions.SetActiveValues(settings); + AccelCharts.ShowActive(args); + ApplyOptions.SetActiveValues(args); } private Timer SetupChartTimer() @@ -131,38 +164,47 @@ namespace grapher return chartTimer; } - private Timer SetupButtonTimer() + private void SetupButtons() { - Timer buttonTimer = new Timer(); - buttonTimer.Enabled = true; - buttonTimer.Interval = Convert.ToInt32(DriverInterop.WriteDelayMs); - buttonTimer.Tick += new System.EventHandler(OnButtonTimerTick); - return buttonTimer; + WriteButton.Top = AccelCharts.Top + AccelCharts.TopChartHeight - Constants.ButtonVerticalOffset; + SetWriteButtonDefault(); + + ToggleButton.Appearance = Appearance.Button; + ToggleButton.FlatStyle = FlatStyle.System; + ToggleButton.TextAlign = ContentAlignment.MiddleCenter; + ToggleButton.Size = WriteButton.Size; + ToggleButton.Top = WriteButton.Top; + + RefreshToggleStateFromNewSettings(); + SetToggleButtonDefault(); } - private void SetupWriteButton() + private void RefreshToggleStateFromNewSettings() { - WriteButton.Top = AccelCharts.Top + AccelCharts.TopChartHeight - Constants.WriteButtonVerticalOffset; - SetWriteButtonDefault(); + SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent(); + LastToggleChecked = SettingsNotDefault; } private void SetWriteButtonDefault() { + WriteButton.Font = DefaultButtonFont; WriteButton.Text = Constants.WriteButtonDefaultText; WriteButton.Enabled = true; WriteButton.Update(); } - private void SetWriteButtonDelay() + private void SetToggleButtonDefault() { - WriteButton.Enabled = false; - WriteButton.Text = $"{Constants.WriteButtonDelayText} : {ButtonTimer.Interval} ms"; - WriteButton.Update(); + ToggleButton.Checked = LastToggleChecked; + ToggleButton.Enabled = SettingsNotDefault; + ToggleButton.Font = DefaultButtonFont; + ToggleButton.Text = ToggleButton.Checked ? "Enabled" : "Disabled"; + ToggleButton.Update(); } private void OnScaleMenuItemClick(object sender, EventArgs e) { - UpdateGraph(); + UpdateGraph(Settings.RawAccelSettings.AccelerationSettings); } private void OnWriteButtonClick(object sender, EventArgs e) @@ -170,18 +212,64 @@ namespace grapher UpdateActiveSettingsFromFields(); } + private void OnToggleButtonClick(object sender, EventArgs e) + { + var settings = ToggleButton.Checked ? + Settings.RawAccelSettings.AccelerationSettings : + DriverInterop.DefaultSettings; + + ToggleButtonDelay(); + + SettingsManager.SendToDriver(settings); + Settings.ActiveAccel.UpdateFromSettings(settings); + RefreshOnRead(settings); + } + private void OnButtonTimerTick(object sender, EventArgs e) { ButtonTimer.Stop(); SetWriteButtonDefault(); + SetToggleButtonDefault(); } - private void WriteButtonDelay() + private void StartButtonTimer() { - SetWriteButtonDelay(); + ButtonTimer.Interval = ButtonTimerInterval; ButtonTimer.Start(); } + private void WriteButtonDelay() + { + WriteButton.Font = SmallButtonFont; + WriteButton.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms"; + WriteButton.Enabled = false; + WriteButton.Update(); + + if (ToggleButton.Enabled) + { + LastToggleChecked = ToggleButton.Checked; + ToggleButton.Checked = false; + ToggleButton.Enabled = false; + ToggleButton.Update(); + } + StartButtonTimer(); + } + + private void ToggleButtonDelay() + { + LastToggleChecked = ToggleButton.Checked; + ToggleButton.Checked = false; + ToggleButton.Enabled = false; + ToggleButton.Font = SmallButtonFont; + ToggleButton.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms"; + ToggleButton.Update(); + + WriteButton.Enabled = false; + WriteButton.Update(); + + StartButtonTimer(); + } + private void OnChartTimerTick(object sender, EventArgs e) { AccelCharts.DrawLastMovement(); -- cgit v1.2.3 From 37d2cb7d3ed25862683ef807712c7d50f71e8493 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 8 Oct 2020 02:08:27 -0400 Subject: add scroll to charts --- grapher/Models/AccelGUI.cs | 2 ++ 1 file changed, 2 insertions(+) (limited to 'grapher/Models/AccelGUI.cs') diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index c561b23..50207b2 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -35,6 +35,7 @@ namespace grapher Settings = settings; Settings.Startup(); RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings); + AccelForm.DoResize(); DefaultButtonFont = WriteButton.Font; SmallButtonFont = new Font(WriteButton.Font.Name, WriteButton.Font.Size * 0.666f); @@ -151,6 +152,7 @@ namespace grapher public void UpdateShownActiveValues(DriverSettings args) { + AccelForm.ResetAutoScroll(); AccelCharts.ShowActive(args); ApplyOptions.SetActiveValues(args); } -- cgit v1.2.3 From 0039d6e84d4e05e842542ad021a9c21e619c69c2 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 8 Oct 2020 19:44:40 -0700 Subject: Follow full C# convention --- grapher/Models/AccelGUI.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'grapher/Models/AccelGUI.cs') diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index 50207b2..d93017a 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -98,7 +98,7 @@ namespace grapher private void SaveGUISettingsOnClose(Object sender, FormClosingEventArgs e) { var guiSettings = Settings.MakeGUISettingsFromFields(); - if (!Settings.RawAccelSettings.GUISettings.ValueEquals(guiSettings)) + if (!Settings.RawAccelSettings.GUISettings.Equals(guiSettings)) { Settings.RawAccelSettings.GUISettings = guiSettings; Settings.RawAccelSettings.Save(); -- cgit v1.2.3 From 3b4796723709ae0cce9518ec0f682b737c6f7447 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 8 Oct 2020 23:04:00 -0400 Subject: disable write button when settings are toggled off --- grapher/Models/AccelGUI.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'grapher/Models/AccelGUI.cs') diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index d93017a..f75d284 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -169,8 +169,7 @@ namespace grapher private void SetupButtons() { WriteButton.Top = AccelCharts.Top + AccelCharts.TopChartHeight - Constants.ButtonVerticalOffset; - SetWriteButtonDefault(); - + ToggleButton.Appearance = Appearance.Button; ToggleButton.FlatStyle = FlatStyle.System; ToggleButton.TextAlign = ContentAlignment.MiddleCenter; @@ -179,6 +178,7 @@ namespace grapher RefreshToggleStateFromNewSettings(); SetToggleButtonDefault(); + SetWriteButtonDefault(); } private void RefreshToggleStateFromNewSettings() @@ -191,7 +191,7 @@ namespace grapher { WriteButton.Font = DefaultButtonFont; WriteButton.Text = Constants.WriteButtonDefaultText; - WriteButton.Enabled = true; + WriteButton.Enabled = ToggleButton.Checked || !ToggleButton.Enabled; WriteButton.Update(); } @@ -230,8 +230,8 @@ namespace grapher private void OnButtonTimerTick(object sender, EventArgs e) { ButtonTimer.Stop(); - SetWriteButtonDefault(); SetToggleButtonDefault(); + SetWriteButtonDefault(); } private void StartButtonTimer() -- cgit v1.2.3 From bcacf971e4cace869243edd5fff3fdb435d48c44 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 8 Oct 2020 23:08:11 -0400 Subject: add magic number to constants --- grapher/Models/AccelGUI.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'grapher/Models/AccelGUI.cs') diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index f75d284..dd1e37d 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -38,7 +38,7 @@ namespace grapher AccelForm.DoResize(); DefaultButtonFont = WriteButton.Font; - SmallButtonFont = new Font(WriteButton.Font.Name, WriteButton.Font.Size * 0.666f); + SmallButtonFont = new Font(WriteButton.Font.Name, WriteButton.Font.Size * Constants.SmallButtonSizeFactor); MouseWatcher = mouseWatcher; -- cgit v1.2.3