summaryrefslogtreecommitdiff
path: root/grapher/Models
diff options
context:
space:
mode:
authora1xd <[email protected]>2020-10-08 02:07:56 -0400
committera1xd <[email protected]>2020-10-08 02:07:56 -0400
commit2be0106211cb4ce30036fc0c8e84ae70dff68c87 (patch)
treed36296ff0402c014d355b7fb1b8e7cc4c11fc3f4 /grapher/Models
parentease requirements for loading driver settings (diff)
downloadrawaccel-2be0106211cb4ce30036fc0c8e84ae70dff68c87.tar.xz
rawaccel-2be0106211cb4ce30036fc0c8e84ae70dff68c87.zip
add toggle button + save gui settings on close
remove option to disable write on startup
Diffstat (limited to 'grapher/Models')
-rw-r--r--grapher/Models/AccelGUI.cs150
-rw-r--r--grapher/Models/AccelGUIFactory.cs4
-rw-r--r--grapher/Models/Charts/AccelCharts.cs4
-rw-r--r--grapher/Models/Serialized/GUISettings.cs27
-rw-r--r--grapher/Models/Serialized/RawAccelSettings.cs12
-rw-r--r--grapher/Models/Serialized/SettingsManager.cs22
6 files changed, 159 insertions, 60 deletions
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();
diff --git a/grapher/Models/AccelGUIFactory.cs b/grapher/Models/AccelGUIFactory.cs
index 9f557f3..579e664 100644
--- a/grapher/Models/AccelGUIFactory.cs
+++ b/grapher/Models/AccelGUIFactory.cs
@@ -23,6 +23,7 @@ namespace grapher.Models
ComboBox accelTypeDropX,
ComboBox accelTypeDropY,
Button writeButton,
+ ButtonBase toggleButton,
ToolStripMenuItem showVelocityGainToolStripMenuItem,
ToolStripMenuItem showLastMouseMoveMenuItem,
ToolStripMenuItem wholeVectorToolStripMenuItem,
@@ -31,7 +32,6 @@ namespace grapher.Models
ToolStripMenuItem legacyCapToolStripMenuItem,
ToolStripMenuItem gainOffsetToolStripMenuItem,
ToolStripMenuItem legacyOffsetToolStripMenuItem,
- ToolStripMenuItem autoWriteMenuItem,
ToolStripMenuItem scaleMenuItem,
ToolStripTextBox dpiTextBox,
ToolStripTextBox pollRateTextBox,
@@ -326,7 +326,6 @@ namespace grapher.Models
activeAccel,
accelCalculator.DPI,
accelCalculator.PollRate,
- autoWriteMenuItem,
showLastMouseMoveMenuItem,
showVelocityGainToolStripMenuItem);
@@ -339,6 +338,7 @@ namespace grapher.Models
settings,
applyOptions,
writeButton,
+ toggleButton,
mouseWatcher,
scaleMenuItem);
}
diff --git a/grapher/Models/Charts/AccelCharts.cs b/grapher/Models/Charts/AccelCharts.cs
index 7484a3a..9087b30 100644
--- a/grapher/Models/Charts/AccelCharts.cs
+++ b/grapher/Models/Charts/AccelCharts.cs
@@ -133,14 +133,14 @@ namespace grapher
{
ChartState.SetWidened();
UpdateFormWidth();
- AlignWriteButton();
+ //AlignWriteButton();
}
public void SetNarrowed()
{
ChartState.SetNarrowed();
UpdateFormWidth();
- AlignWriteButton();
+ //AlignWriteButton();
}
public void Redraw()
diff --git a/grapher/Models/Serialized/GUISettings.cs b/grapher/Models/Serialized/GUISettings.cs
index 84e681b..f9e5755 100644
--- a/grapher/Models/Serialized/GUISettings.cs
+++ b/grapher/Models/Serialized/GUISettings.cs
@@ -10,32 +10,35 @@ namespace grapher.Models.Serialized
public GUISettings() {}
- public GUISettings(bool autoWrite, int dpi, int pollRate)
- {
- AutoWriteToDriverOnStartup = autoWrite;
- DPI = dpi;
- PollRate = pollRate;
- }
-
#endregion Constructors
#region Properties
- [JsonProperty(Order = 1)]
- public bool AutoWriteToDriverOnStartup { get; set; }
- [JsonProperty(Order = 2)]
+ [JsonProperty(Order = 1)]
public int DPI { get; set; }
- [JsonProperty(Order = 3)]
+ [JsonProperty(Order = 2)]
public int PollRate { get; set; }
- [JsonProperty(Order = 4)]
+ [JsonProperty(Order = 3)]
public bool ShowLastMouseMove { get; set; }
[JsonProperty(Order = 4)]
public bool ShowVelocityAndGain { get; set; }
#endregion Properties
+
+ #region Methods
+
+ public bool ValueEquals(GUISettings other)
+ {
+ return DPI == other.DPI &&
+ PollRate == other.PollRate &&
+ ShowLastMouseMove == other.ShowLastMouseMove &&
+ ShowVelocityAndGain == other.ShowVelocityAndGain;
+ }
+
+ #endregion Methods
}
}
diff --git a/grapher/Models/Serialized/RawAccelSettings.cs b/grapher/Models/Serialized/RawAccelSettings.cs
index 6f48d44..e0362ff 100644
--- a/grapher/Models/Serialized/RawAccelSettings.cs
+++ b/grapher/Models/Serialized/RawAccelSettings.cs
@@ -115,6 +115,18 @@ namespace grapher.Models.Serialized
.AddFirst(new JProperty("### Mode Types ###", modes));
}
+ public bool IsDefaultEquivalent()
+ {
+ bool wholeOrNoY = AccelerationSettings.combineMagnitudes ||
+ AccelerationSettings.modes.y == AccelMode.noaccel;
+
+ return AccelerationSettings.sensitivity.x == 1 &&
+ AccelerationSettings.sensitivity.y == 1 &&
+ AccelerationSettings.rotation == 0 &&
+ AccelerationSettings.modes.x == AccelMode.noaccel &&
+ wholeOrNoY;
+ }
+
#endregion Methods
}
}
diff --git a/grapher/Models/Serialized/SettingsManager.cs b/grapher/Models/Serialized/SettingsManager.cs
index f53c9c9..8712c87 100644
--- a/grapher/Models/Serialized/SettingsManager.cs
+++ b/grapher/Models/Serialized/SettingsManager.cs
@@ -14,14 +14,12 @@ namespace grapher.Models.Serialized
ManagedAccel activeAccel,
Field dpiField,
Field pollRateField,
- ToolStripMenuItem autoWrite,
ToolStripMenuItem showLastMouseMove,
ToolStripMenuItem showVelocityAndGain)
{
ActiveAccel = activeAccel;
DpiField = dpiField;
PollRateField = pollRateField;
- AutoWriteMenuItem = autoWrite;
ShowLastMouseMoveMenuItem = showLastMouseMove;
ShowVelocityAndGainMoveMenuItem = showVelocityAndGain;
}
@@ -38,8 +36,6 @@ namespace grapher.Models.Serialized
private Field PollRateField { get; set; }
- private ToolStripMenuItem AutoWriteMenuItem { get; set; }
-
private ToolStripMenuItem ShowLastMouseMoveMenuItem { get; set; }
private ToolStripMenuItem ShowVelocityAndGainMoveMenuItem { get; set; }
@@ -90,17 +86,20 @@ namespace grapher.Models.Serialized
return errors;
}
- public void UpdateActiveAccelFromFileSettings(DriverSettings settings)
+ public void UpdateFieldsFromGUISettings()
{
- TryUpdateAccel(settings);
-
DpiField.SetToEntered(RawAccelSettings.GUISettings.DPI);
PollRateField.SetToEntered(RawAccelSettings.GUISettings.PollRate);
- AutoWriteMenuItem.Checked = RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup;
ShowLastMouseMoveMenuItem.Checked = RawAccelSettings.GUISettings.ShowLastMouseMove;
ShowVelocityAndGainMoveMenuItem.Checked = RawAccelSettings.GUISettings.ShowVelocityAndGain;
}
+ public void UpdateActiveAccelFromFileSettings(DriverSettings settings)
+ {
+ TryUpdateAccel(settings);
+ UpdateFieldsFromGUISettings();
+ }
+
public SettingsErrors TryUpdateAccel(DriverSettings settings)
{
var errors = SendToDriverSafe(settings);
@@ -124,7 +123,6 @@ namespace grapher.Models.Serialized
{
return new GUISettings
{
- AutoWriteToDriverOnStartup = AutoWriteMenuItem.Checked,
DPI = (int)DpiField.Data,
PollRate = (int)PollRateField.Data,
ShowLastMouseMove = ShowLastMouseMoveMenuItem.Checked,
@@ -139,10 +137,8 @@ namespace grapher.Models.Serialized
try
{
RawAccelSettings = RawAccelSettings.Load(() => MakeGUISettingsFromFields());
- if (RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup)
- {
- UpdateActiveAccelFromFileSettings(RawAccelSettings.AccelerationSettings);
- }
+ UpdateFieldsFromGUISettings();
+ UpdateActiveAccelFromFileSettings(RawAccelSettings.AccelerationSettings);
return;
}
catch (JsonException e)