Use static validators

This commit is contained in:
X9VoiD 2021-04-21 23:17:34 +08:00
parent bbb2afa087
commit f25210d41c
5 changed files with 31 additions and 34 deletions

View file

@ -10,9 +10,9 @@ namespace VoiDPlugins.Binding.ScriptRunner
[PluginName("Script Runner")] [PluginName("Script Runner")]
public class ScriptRunner : IBinding public class ScriptRunner : IBinding
{ {
private List<string> ScriptPathList = new List<string>(10); public static string[] ValidIndexes = Enumerable.Range(0, 10).Select(i => i.ToString()).ToArray();
public string[] ValidIndexes = Enumerable.Range(0, 10).Select(i => i.ToString()).ToArray(); private List<string> ScriptPathList = new List<string>(10);
[Property("Script Index"), PropertyValidated(nameof(ValidIndexes))] [Property("Script Index"), PropertyValidated(nameof(ValidIndexes))]
public string ScriptIndex { set; get; } public string ScriptIndex { set; get; }

View file

@ -14,11 +14,11 @@ namespace VoiDPlugins.Filter
internal static bool IsActive { set; get; } internal static bool IsActive { set; get; }
internal static bool SetPosition { set; get; } internal static bool SetPosition { set; get; }
public static string[] ValidModes => new[] { "Toggle", "Hold" };
[Property("Mode"), PropertyValidated(nameof(ValidModes))] [Property("Mode"), PropertyValidated(nameof(ValidModes))]
public string Mode { set; get; } public string Mode { set; get; }
public string[] ValidModes => new[] { "Toggle", "Hold" };
public void Press(IDeviceReport report) public void Press(IDeviceReport report)
{ {
if (Mode == "Toggle") if (Mode == "Toggle")

View file

@ -1,19 +1,34 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using OpenTabletDriver.Plugin;
using OpenTabletDriver.Plugin.Attributes; using OpenTabletDriver.Plugin.Attributes;
using OpenTabletDriver.Plugin.Tablet;
using VoiDPlugins.Library.VMulti; using VoiDPlugins.Library.VMulti;
namespace VoiDPlugins.OutputMode namespace VoiDPlugins.OutputMode
{ {
[PluginName("VMulti Mode")] [PluginName("VMulti Mode")]
public class VMultiButtonHandler : ButtonHandler public class VMultiButtonHandler : ButtonHandler, IBinding
{ {
private readonly Dictionary<string, int> bindings = new() public static Dictionary<string, int> Bindings { get; } = new()
{ {
{ "Left", 1 }, { "Left", 1 },
{ "Right", 2 }, { "Right", 2 },
{ "Middle", 4 } { "Middle", 4 }
}; };
public override Dictionary<string, int> Bindings => bindings; [Property("Button"), PropertyValidated(nameof(ValidButtons))]
public string Button { get; set; }
public static string[] ValidButtons => Bindings.Keys.ToArray();
public void Press(IDeviceReport report)
{
EnableBit(Bindings[Button]);
}
public void Release(IDeviceReport report)
{
DisableBit(Bindings[Button]);
}
} }
} }

View file

@ -1,5 +1,5 @@
using System.Collections.Generic;
using HidSharp; using HidSharp;
using OpenTabletDriver.Plugin;
using OpenTabletDriver.Plugin.Attributes; using OpenTabletDriver.Plugin.Attributes;
using OpenTabletDriver.Plugin.Tablet; using OpenTabletDriver.Plugin.Tablet;
using VoiDPlugins.Library.VMulti; using VoiDPlugins.Library.VMulti;
@ -8,11 +8,9 @@ using VoiDPlugins.Library.VMulti.Device;
namespace VoiDPlugins.OutputMode namespace VoiDPlugins.OutputMode
{ {
[PluginName("Windows Ink")] [PluginName("Windows Ink")]
public class WinInkButtonHandler : ButtonHandler public class WinInkButtonHandler : ButtonHandler, IBinding
{ {
public override Dictionary<string, int> Bindings => null; public static string[] ValidButtons { get; } = new string[]
public override string[] ValidButtons { get; } = new string[]
{ {
"Pen Tip", "Pen Tip",
"Pen Button", "Pen Button",
@ -20,6 +18,9 @@ namespace VoiDPlugins.OutputMode
"Eraser (Hold)" "Eraser (Hold)"
}; };
[Property("Button"), PropertyValidated(nameof(ValidButtons))]
public string Button { get; set; }
private enum ButtonBits : int private enum ButtonBits : int
{ {
Press = 1, Press = 1,
@ -33,7 +34,7 @@ namespace VoiDPlugins.OutputMode
private static HidStream Device; private static HidStream Device;
private static new DigitizerInputReport Report; private static new DigitizerInputReport Report;
public override void Press(IDeviceReport report) public void Press(IDeviceReport report)
{ {
switch (Button) switch (Button)
{ {
@ -70,7 +71,7 @@ namespace VoiDPlugins.OutputMode
} }
} }
public override void Release(IDeviceReport report) public void Release(IDeviceReport report)
{ {
switch (Button) switch (Button)
{ {

View file

@ -1,31 +1,12 @@
using System.Collections.Generic;
using System.Linq;
using OpenTabletDriver.Plugin;
using OpenTabletDriver.Plugin.Attributes; using OpenTabletDriver.Plugin.Attributes;
using OpenTabletDriver.Plugin.Tablet;
using VoiDPlugins.Library.VMulti.Device; using VoiDPlugins.Library.VMulti.Device;
namespace VoiDPlugins.Library.VMulti namespace VoiDPlugins.Library.VMulti
{ {
[PluginIgnore] [PluginIgnore]
public abstract class ButtonHandler : IBinding public class ButtonHandler
{ {
protected static Report Report; protected static Report Report;
public abstract Dictionary<string, int> Bindings { get; }
[Property("Button"), PropertyValidated(nameof(ValidButtons))]
public string Button { get; set; }
public virtual string[] ValidButtons => Bindings.Keys.ToArray();
public virtual void Press(IDeviceReport report)
{
EnableBit(Bindings[Button]);
}
public virtual void Release(IDeviceReport report)
{
DisableBit(Bindings[Button]);
}
public static void SetReport(Report report) public static void SetReport(Report report)
{ {