using System; namespace MassiveKnob.Plugin { /// /// Determines the type of control this action can be assigned to. /// [Flags] public enum MassiveKnobActionType { /// /// Can be assigned to a potentiometer. The action instance must implement IMassiveKnobAnalogAction. /// InputAnalog = 1 << 0, /// /// Can be assigned to a button or switch. The action instance must implement IMassiveKnobDigitalAction. /// InputDigital = 1 << 1, /// /// Can be assigned to an analog output. /// OutputAnalog = 1 << 2, /// /// Can be assigned to a digital output, like an LED or relay. /// OutputDigital = 1 << 3 } /// /// Provides information about an action which can be assigned to a knob or button. /// public interface IMassiveKnobAction { /// /// Unique identifier for the action. /// Guid ActionId { get; } /// /// Determines the type of control this action can be assigned to. /// MassiveKnobActionType ActionType { get; } /// /// The name of the action as shown in the action list when assigning to a knob or button. /// string Name { get; } /// /// A short description of the functionality provided by the action. /// string Description { get; } /// /// Called when an action is bound to a knob or button to create an instance of the action. /// IMassiveKnobActionInstance Create(); } }