diff options
| author | a1xd <[email protected]> | 2021-07-05 23:33:41 -0400 |
|---|---|---|
| committer | a1xd <[email protected]> | 2021-07-05 23:33:41 -0400 |
| commit | 31efc792f5895d7ef3533390875de3c480add996 (patch) | |
| tree | 8db5b16a88f50448cb525ba8ae56801985294f63 /grapher/Models/Serialized/SettingsManager.cs | |
| parent | Merge pull request #87 from matthewstrasiotto/streamer_mode (diff) | |
| parent | Handle power\exponent correctly in GUI (diff) | |
| download | rawaccel-31efc792f5895d7ef3533390875de3c480add996.tar.xz rawaccel-31efc792f5895d7ef3533390875de3c480add996.zip | |
merge lut2
Diffstat (limited to 'grapher/Models/Serialized/SettingsManager.cs')
| -rw-r--r-- | grapher/Models/Serialized/SettingsManager.cs | 139 |
1 files changed, 93 insertions, 46 deletions
diff --git a/grapher/Models/Serialized/SettingsManager.cs b/grapher/Models/Serialized/SettingsManager.cs index c867c0a..6bcfab8 100644 --- a/grapher/Models/Serialized/SettingsManager.cs +++ b/grapher/Models/Serialized/SettingsManager.cs @@ -1,5 +1,6 @@ using Newtonsoft.Json; using System; +using System.IO; using System.Windows.Forms; using System.Threading; using System.Text; @@ -22,7 +23,6 @@ namespace grapher.Models.Serialized ToolStripMenuItem streamingMode, DeviceIDManager deviceIDManager) { - ActiveAccel = activeAccel; DpiField = dpiField; PollRateField = pollRateField; AutoWriteMenuItem = autoWrite; @@ -30,15 +30,35 @@ namespace grapher.Models.Serialized ShowVelocityAndGainMoveMenuItem = showVelocityAndGain; StreamingModeMenuItem = streamingMode; DeviceIDManager = deviceIDManager; + + SetActiveFields(activeAccel); + + GuiSettings = GUISettings.MaybeLoad(); + + if (GuiSettings is null) + { + GuiSettings = MakeGUISettingsFromFields(); + GuiSettings.Save(); + } + else + { + UpdateFieldsFromGUISettings(); + } + + UserSettings = InitUserSettings(); } #endregion Constructors #region Properties - public ManagedAccel ActiveAccel { get; } + public GUISettings GuiSettings { get; private set; } + + public ManagedAccel ActiveAccel { get; private set; } + + public ExtendedSettings ActiveSettings { get; private set; } - public RawAccelSettings RawAccelSettings { get; private set; } + public DriverSettings UserSettings { get; private set; } public Field DpiField { get; private set; } @@ -55,47 +75,55 @@ namespace grapher.Models.Serialized #endregion Properties #region Methods - public SettingsErrors TryUpdateActiveSettings(DriverSettings settings) - { - var errors = TryUpdateAccel(settings); - - if (errors.Empty()) - { - RawAccelSettings.AccelerationSettings = settings; - RawAccelSettings.GUISettings = MakeGUISettingsFromFields(); - RawAccelSettings.Save(); - } - return errors; + public void DisableDriver() + { + var defaultSettings = new ExtendedSettings(); + ActiveSettings = defaultSettings; + ActiveAccel.Settings = defaultSettings; + new Thread(() => ActiveAccel.Activate()).Start(); } public void UpdateFieldsFromGUISettings() { - DpiField.SetToEntered(RawAccelSettings.GUISettings.DPI); - PollRateField.SetToEntered(RawAccelSettings.GUISettings.PollRate); - ShowLastMouseMoveMenuItem.Checked = RawAccelSettings.GUISettings.ShowLastMouseMove; - ShowVelocityAndGainMoveMenuItem.Checked = RawAccelSettings.GUISettings.ShowVelocityAndGain; - StreamingModeMenuItem.Checked = RawAccelSettings.GUISettings.StreamingMode; - AutoWriteMenuItem.Checked = RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup; + DpiField.SetToEntered(GuiSettings.DPI); + PollRateField.SetToEntered(GuiSettings.PollRate); + ShowLastMouseMoveMenuItem.Checked = GuiSettings.ShowLastMouseMove; + ShowVelocityAndGainMoveMenuItem.Checked = GuiSettings.ShowVelocityAndGain; + StreamingModeMenuItem.Checked = GUISettings.StreamingMode; + AutoWriteMenuItem.Checked = GuiSettings.AutoWriteToDriverOnStartup; } - public SettingsErrors TryUpdateAccel(DriverSettings settings) + public SettingsErrors TryActivate(DriverSettings settings) { - var errors = SendToDriverSafe(settings); - if (errors.Empty()) ActiveAccel.UpdateFromSettings(settings); - return errors; - } + var errors = new SettingsErrors(settings); - public static void SendToDriver(DriverSettings settings) - { - new Thread(() => DriverInterop.Write(settings)).Start(); + if (errors.Empty()) + { + GuiSettings = MakeGUISettingsFromFields(); + GuiSettings.Save(); + + UserSettings = settings; + File.WriteAllText(Constants.DefaultSettingsFileName, RaConvert.Settings(settings)); + + ActiveSettings = new ExtendedSettings(settings); + ActiveAccel.Settings = ActiveSettings; + + new Thread(() => ActiveAccel.Activate()).Start(); + } + + return errors; } - public static SettingsErrors SendToDriverSafe(DriverSettings settings) + public void SetHiddenOptions(DriverSettings settings) { - var errors = DriverInterop.GetSettingsErrors(settings); - if (errors.Empty()) SendToDriver(settings); - return errors; + settings.snap = UserSettings.snap; + settings.maximumSpeed = UserSettings.maximumSpeed; + settings.minimumSpeed = UserSettings.minimumSpeed; + settings.minimumTime = UserSettings.minimumTime; + settings.maximumTime = UserSettings.maximumTime; + settings.ignore = UserSettings.ignore; + settings.directionalMultipliers = UserSettings.directionalMultipliers; } public GUISettings MakeGUISettingsFromFields() @@ -111,32 +139,51 @@ namespace grapher.Models.Serialized }; } - // Returns true when file settings are active - public bool Startup() + public bool TableActive() + { + return ActiveSettings.tables.x != null || ActiveSettings.tables.y != null; + } + + public void SetActiveFields(ManagedAccel activeAccel) { - if (RawAccelSettings.Exists()) + ActiveAccel = activeAccel; + ActiveSettings = activeAccel.Settings; + } + + private DriverSettings InitUserSettings() + { + var path = Constants.DefaultSettingsFileName; + if (File.Exists(path)) { try { - RawAccelSettings = RawAccelSettings.Load(() => MakeGUISettingsFromFields()); - UpdateFieldsFromGUISettings(); - if (RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup) + DriverSettings settings = RaConvert.Settings(File.ReadAllText(path)); + + if (!GuiSettings.AutoWriteToDriverOnStartup || + TableActive() || + TryActivate(settings).Empty()) { - TryUpdateAccel(RawAccelSettings.AccelerationSettings); + return settings; } - return RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup; + } catch (JsonException e) { - Console.WriteLine($"bad settings: {e}"); + System.Diagnostics.Debug.WriteLine($"bad settings: {e}"); } } - RawAccelSettings = new RawAccelSettings( - DriverInterop.GetActiveSettings(), - MakeGUISettingsFromFields()); - RawAccelSettings.Save(); - return true; + if (!TableActive()) + { + File.WriteAllText(path, RaConvert.Settings(ActiveSettings.baseSettings)); + return ActiveSettings.baseSettings; + } + else + { + var defaultSettings = new DriverSettings(); + File.WriteAllText(path, RaConvert.Settings(defaultSettings)); + return defaultSettings; + } } #endregion Methods |