diff options
Diffstat (limited to 'grapher/Models/Serialized')
| -rw-r--r-- | grapher/Models/Serialized/GUISettings.cs | 27 | ||||
| -rw-r--r-- | grapher/Models/Serialized/LookupTable.cs | 50 | ||||
| -rw-r--r-- | grapher/Models/Serialized/RawAccelSettings.cs | 141 | ||||
| -rw-r--r-- | grapher/Models/Serialized/SettingsManager.cs | 138 |
4 files changed, 119 insertions, 237 deletions
diff --git a/grapher/Models/Serialized/GUISettings.cs b/grapher/Models/Serialized/GUISettings.cs index bb35055..93d56de 100644 --- a/grapher/Models/Serialized/GUISettings.cs +++ b/grapher/Models/Serialized/GUISettings.cs @@ -1,5 +1,6 @@ using Newtonsoft.Json; using System; +using System.IO; namespace grapher.Models.Serialized { @@ -65,6 +66,32 @@ namespace grapher.Models.Serialized AutoWriteToDriverOnStartup.GetHashCode(); } + public void Save() + { + File.WriteAllText(Constants.GuiConfigFileName, JsonConvert.SerializeObject(this)); + } + + public static GUISettings MaybeLoad() + { + GUISettings settings = null; + + try + { + settings = JsonConvert.DeserializeObject<GUISettings>( + File.ReadAllText(Constants.GuiConfigFileName)); + } + catch (Exception ex) + { + if (!(ex is JsonException || ex is FileNotFoundException)) + { + throw; + } + } + + return settings; + } + #endregion Methods + } } diff --git a/grapher/Models/Serialized/LookupTable.cs b/grapher/Models/Serialized/LookupTable.cs deleted file mode 100644 index d373461..0000000 --- a/grapher/Models/Serialized/LookupTable.cs +++ /dev/null @@ -1,50 +0,0 @@ -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace grapher.Models.Serialized -{ - [Serializable] - public static class LookupTable - { - public static void Deserialize(string lutFile, ref DriverSettings settings) - { - if (!File.Exists(lutFile)) - { - throw new Exception($"LUT file does not exist at {lutFile}."); - } - - JObject lutJObject = JObject.Parse(File.ReadAllText(lutFile)); - - var spacedLut = lutJObject.ToObject<SpacedTable>(JsonSerializer.Create(RawAccelSettings.SerializerSettings)); - - if (spacedLut is null) - { - var arbitraryLut = lutJObject.ToObject<ArbitraryTable>(JsonSerializer.Create(RawAccelSettings.SerializerSettings)); - - if (arbitraryLut is null || arbitraryLut.points is null) - { - throw new Exception($"{lutFile} does not contain valid lookuptable json."); - } - - settings.ArbitraryTable = arbitraryLut; - settings.args.x.lutArgs.type = TableType.arbitrary; - } - else - { - if (spacedLut.points is null) - { - throw new Exception($"{lutFile} does not contain valid lookuptable json."); - } - - settings.SpacedTable = spacedLut; - settings.args.x.lutArgs = spacedLut.args; - } - } - } -} diff --git a/grapher/Models/Serialized/RawAccelSettings.cs b/grapher/Models/Serialized/RawAccelSettings.cs deleted file mode 100644 index dc4eb0a..0000000 --- a/grapher/Models/Serialized/RawAccelSettings.cs +++ /dev/null @@ -1,141 +0,0 @@ -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using System; -using System.IO; -using System.Linq; - -namespace grapher.Models.Serialized -{ - [Serializable] - public class RawAccelSettings - { - #region Fields - - public static readonly string ExecutingDirectory = AppDomain.CurrentDomain.BaseDirectory; - public static readonly string DefaultSettingsFile = Path.Combine(ExecutingDirectory, Constants.DefaultSettingsFileName); - public static readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings - { - MissingMemberHandling = MissingMemberHandling.Ignore, - }; - #endregion Fields - - #region Constructors - - public RawAccelSettings() { } - - public RawAccelSettings( - DriverSettings accelSettings, - GUISettings guiSettings) - { - AccelerationSettings = accelSettings; - GUISettings = guiSettings; - } - - #endregion Constructors - - #region Properties - [JsonProperty(Required = Required.Always)] - public GUISettings GUISettings { get; set; } - - [JsonProperty(DriverSettings.Key, Required = Required.Always)] - public DriverSettings AccelerationSettings { get; set; } - - #endregion Properties - - #region Methods - - public static RawAccelSettings Load(Func<GUISettings> DefaultGUISettingsSupplier) - { - return Load(DefaultSettingsFile, DefaultGUISettingsSupplier); - } - - public static RawAccelSettings Load(string file, Func<GUISettings> DefaultGUISettingsSupplier) - { - try - { - RawAccelSettings settings = null; - - JObject settingsJObject = JObject.Parse(File.ReadAllText(file)); - if (settingsJObject.ContainsKey(DriverSettings.Key)) - { - settings = settingsJObject.ToObject<RawAccelSettings>(JsonSerializer.Create(SerializerSettings)); - } - else - { - settings = new RawAccelSettings - { - AccelerationSettings = settingsJObject.ToObject<DriverSettings>(), - GUISettings = DefaultGUISettingsSupplier() - }; - } - - if (settings is null || settings.AccelerationSettings is null) - { - throw new JsonException($"{file} contains invalid JSON"); - } - - return settings; - } - catch (FileNotFoundException e) - { - throw new FileNotFoundException($"Settings file does not exist at {file}", e); - } - catch (JsonException e) - { - throw new JsonException($"Settings file at {file} does not contain valid Raw Accel Settings.", e); - } - } - - public static bool Exists() - { - return Exists(DefaultSettingsFile); - } - - public static bool Exists(string file) - { - return File.Exists(file); - } - - public void Save() - { - Save(DefaultSettingsFile); - } - - public void Save(string file) - { - JObject thisJO = JObject.FromObject(this); - AddComments(thisJO); - File.WriteAllText(file, thisJO.ToString(Formatting.Indented)); - } - - private void AddComments(JObject thisJO) - { - string modes = string.Join(" | ", Enum.GetNames(typeof(AccelMode))); - ((JObject)thisJO[DriverSettings.Key]) - .AddFirst(new JProperty("### Mode Types ###", modes)); - } - - public bool IsDefaultEquivalent() - { - return IsDefaultEquivalent(AccelerationSettings); - } - - public static bool IsDefaultEquivalent(DriverSettings accelSettings) - { - bool wholeOrNoY = accelSettings.combineMagnitudes || - accelSettings.args.y.mode == AccelMode.noaccel; - - return string.IsNullOrEmpty(accelSettings.deviceID) && - accelSettings.sensitivity.x == 1 && - accelSettings.sensitivity.y == 1 && - accelSettings.directionalMultipliers.x <= 0 && - accelSettings.directionalMultipliers.y <= 0 && - accelSettings.rotation == 0 && - accelSettings.snap == 0 && - accelSettings.args.x.mode == AccelMode.noaccel && - wholeOrNoY; - } - - #endregion Methods - } -} diff --git a/grapher/Models/Serialized/SettingsManager.cs b/grapher/Models/Serialized/SettingsManager.cs index 25aa534..c0cc413 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; @@ -21,22 +22,41 @@ namespace grapher.Models.Serialized ToolStripMenuItem showVelocityAndGain, DeviceIDManager deviceIDManager) { - ActiveAccel = activeAccel; DpiField = dpiField; PollRateField = pollRateField; AutoWriteMenuItem = autoWrite; ShowLastMouseMoveMenuItem = showLastMouseMove; ShowVelocityAndGainMoveMenuItem = showVelocityAndGain; 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; set; } + 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; } @@ -53,47 +73,54 @@ 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; - AutoWriteMenuItem.Checked = RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup; + DpiField.SetToEntered(GuiSettings.DPI); + PollRateField.SetToEntered(GuiSettings.PollRate); + ShowLastMouseMoveMenuItem.Checked = GuiSettings.ShowLastMouseMove; + ShowVelocityAndGainMoveMenuItem.Checked = GuiSettings.ShowVelocityAndGain; + AutoWriteMenuItem.Checked = GuiSettings.AutoWriteToDriverOnStartup; } - public SettingsErrors TryUpdateAccel(DriverSettings settings) + public SettingsErrors TryActivate(DriverSettings settings) { - var accel = new ManagedAccel(settings); - var errors = SendToDriverSafe(accel); - if (errors.Empty()) ActiveAccel= accel; - return errors; - } + var errors = new SettingsErrors(settings); - public static void SendToDriver(ManagedAccel accel) - { - new Thread(() => accel.Activate()).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(ManagedAccel accel) + public void SetHiddenOptions(DriverSettings settings) { - var errors = new SettingsErrors(accel.Settings); - if (errors.Empty()) SendToDriver(accel); - 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() @@ -108,32 +135,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( - ManagedAccel.GetActive().Settings, - 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 |