summaryrefslogtreecommitdiff
path: root/grapher/Models/Serialized
diff options
context:
space:
mode:
Diffstat (limited to 'grapher/Models/Serialized')
-rw-r--r--grapher/Models/Serialized/GUISettings.cs27
-rw-r--r--grapher/Models/Serialized/LookupTable.cs50
-rw-r--r--grapher/Models/Serialized/RawAccelSettings.cs141
-rw-r--r--grapher/Models/Serialized/SettingsManager.cs138
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