Comment on page
C# Scripting Interface
The scripting interface is C#6.0 compatible.
You can check the DemoScript provided.
Basically you create Classes in a .cs-File for the needed Purposes.
To ease development it's recommended to use a C#-IDE to develop the Scripts. (e.g. VS 2015 Community edition (free)). Just create a new C#-Class-Library Project and Reference the Assembly "SPAD.Interfaces.dll" from the SPAD.neXt Binaries or Inlcude the Interface-Project from github. (You will need to create your own signing key) This way you will get Intellisense and can test-compile your script.
All classes that derive from IScript somehow will be considered by SPAD.neXt.
Classes that inherit IScriptPrivate will never be called by SPAD.neXt
IScriptValueProvider
Class will work just like a local variable ,and has to provide a method "public double ProvideValue(IApplication app)" which will be called whenever needed.
IScriptAction
Class provides a custom action which can be bound to a Button/Switch.
When the Event is raised the method "void Execute(IApplication app, ISPADEventArgs eventArgs)" will be called.
Additional Interfaces that you can implement:
IScriptCreation
Class supports Initialization/Deinitialization. E.g. if you want to initialize/store some stuff Initialize will be called when the object is instantiated , Deinitialize before the object is Disposed.
IScriptActivation (only suitable for Onjects that also implement IScriptAction)
Class supports activation/deactivation.
Activate will be called when an event using this Action is activated in a profile Deactivate will be called when an event using this Action is deactivated in a profile
To provide an object that is no ValueProvider or Action, derive it from IScript and add the additional necessary Interfaces (e.g. IScriptCreation)
The IApplication-Interface given as Parameter is a gateway to some global functions of SPAD.neXt like creating a logger to write to the logfile.
Comes in handy for debugging:
var myLogger = app.GetLogger("myCoolLoggerName");
myLogger.Error("This will be shown in Logfile");
For checking/viewing the Logfile I recommend a NLog-Compatible LogViewer like e.g. Log4View.
The LogFormat-String is "${longdate}|${level}|${threadid}|${logger}|${message}"
using "EventSystem.GetDataDefinition" you grab a IDatadefiniton from SPAD.neXt and can read or manipulate the Values. This also will makes sure that your script will be called when the data changes.
It's a bit try and error right now, but all interfaces exposed in the SPAD.Interfaces Assembly are usable and working.
(SPAD.neXt uses them itself for all Panels etc)
Inline-Documentation for the Interfaces will be added over time, as it is needed
Just playaround a bit. If you need some help getting started, open an issue, describe what you want to do and I'll try to help you :-D