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")]
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))]
public string ScriptIndex { set; get; }

View file

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

View file

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