Plugin Interface Erweiterungen ab DMXControl 2.10
aus dem DMXControl-Wiki
| | - Baustelle ! |
Die Beschreibung ist noch in Bearbeitung, bitte Geduld!
Inhaltsverzeichnis |
Plugin Interface Erweiterungen in DMXControl 2.10
In der Version 2.10 wird die Plugin-Schnittstelle um einige wesentliche Funktionen erweitert.
- Fenster-Management
- Kommandos
Fenster-Management
Für alle Plugins, die eine graphische Oberfläche haben kann zusätzlich die Schnittstelle "IExternalWindow" implementiert werden. Diese enthält Funktionen zum Fenster-Management des Plugins und ermöglicht es DMXControl den Zustand und die Position des Pluginfensters zu ermitteln, zu speichern und bei Neustart von DMXControl dieses auch direkt an der alten Position zu starten.
Im Formular des Plugins muss die Schnittstelle implementiert werden:
Implements IExternalWindow
und folgende Funktionen/Properties der Schnittstelle muss das Plugin implementieren:
Private Function IExternalWindow_showWindow() As Boolean Private Function IExternalWindow_hideWindow() As Boolean Private Function IExternalWindow_loadWindow() As Boolean Private Function IExternalWindow_unloadWindow() As Boolean Private Property Get IExternalWindow_isOpen() As Boolean Private Property Let IExternalWindow_WindowState(RHS As Long) Private Property Get IExternalWindow_WindowState() As Long
Die Bedeutung der einzelnen Elemente ist eigentlich sprechend, so dass auf eine detaillierte Beschreibung der einzelnen Funktionen hier verzichtet wird. Eine konkrete Implementierung kann dem "DMXC Plugin Tutorial"-Plugin entnommen werden.
Kommandos
Die Verwendung von Kommandos in Plugins ist ab DMXControl 2.10 in beide Richtungen möglich. D.h., man kann im Plugin eigene Kommandos definieren, die dann in DMXControl zur Buttonbelegung, Szenendefinition, usw. auftauchen und man kann auch vom Plugin aus auf alle in DMXControl vorhandenen Kommandos zugreifen.
Definition eigener Kommandos
Um eigene Kommandos bereitzustellen, muss das Plugin die Schnittstelle ICommandServer implementieren.
implements ICommandServer
Folgende Funktionen/Properties müssen implementiert werden:
' ' mit diesem Namen taucht das Plugin in der Kommandoliste in DMXC auf ' Private Property Get ICommandServer_Name() As String
' ' hier wird auf die Kommandos reagiert Private Function ICommandServer_ExecuteCommand(FirstSelection As String, SecondSelection As String, NewValue As Long, Optional Stream As DMXCTypeLib.IDMXMixerChannel, Optional AdditionalData As PropertyBag) As Variant
'
' hier wird die erste Ebene der Kommandostruktur erstellt
Private Function ICommandServer_GetFirstOptions() As DMXCTypeLib.IKeyCollection
Set ICommandServer_GetFirstOptions = New KeyCollection
With ICommandServer_GetFirstOptions
.Add mHelper.Translator.Translate("Activate Function"), "FUNCTION"
...
End With
End Function
'
' hier wird die zweite Ebene der Kommandostruktur erstellt
Private Function ICommandServer_GetSecondOptions(FirstSelection As String) As DMXCTypeLib.IKeyCollection
Set ICommandServer_GetSecondOptions = New KeyCollection
With ICommandServer_GetSecondOptions
If FirstSelection = "FUNCTION" Then
.Add mHelper.Translator.Translate("an"), "ON"
.Add mHelper.Translator.Translate("aus"), "OFF"
ElseIf FirstSelection = "LISTSELECT" Then
.Add mHelper.Translator.Translate("nächster"), "NEXT"
.Add mHelper.Translator.Translate("vorheriger"), "PREVIOUS"
.Add "-----", "-----"
.Add "1", "1"
...
ElseIf FirstSelection = "VALUE" Then
.Add mHelper.Translator.Translate("1. Wert"), "1.VALUE"
....
End If
End With
End Function
Zugriff auf die Kommandos von DMXControl
Über die hier beschriebenen Methoden ist es möglich alle in DMXControl vorhandenen Kommandos zu benutzen. D.H., man kann Szenen und Effekte anwählen, starten, stoppen und vieles mehr (alles, was man auch auf einen Button legen kann). Um auf die Kommandos zugreifen zu können, braucht man ein spezielles ExtendedListView-Control für VB6. Dieses kann man aus dem Internet herunterladen (http://vcreations.net/product.asp?pid=1) und installieren. Mit den in die Plugin-Schnittstelle eingebauten Funktionen kann ein solches ExtListView gefüllt und genutzt werden.
