Scriptlets: Unterschied zwischen den Versionen

Aus AquaSoft Wiki
Zur Navigation springenZur Suche springen
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= Einführung =
 
= Einführung =
Scriptlets sind kleine Erweiterungen des DiaShow-Programms. Sie können selbst kleine Erweiterungen schreiben, die dann als Menüpunkt sichtbar werden.
+
Scriptlets sind kleine Erweiterungen des Vison/Stages-Programms. Sie können selbst kleine Erweiterungen schreiben, die dann als Menüpunkt sichtbar werden.
  
 
= Möglichkeiten =
 
= Möglichkeiten =
  
Solche Erweiterungen können z.B. folgende Dinge mit Ihrer Show anstellen:
+
Solche Erweiterungen können z.B. folgende Dinge mit Ihrem Projekt anstellen:
 
* EXIF-Daten auslesen
 
* EXIF-Daten auslesen
 
* Dauer und Position verändert
 
* Dauer und Position verändert
Zeile 16: Zeile 16:
 
Damit Scriptlets als Menüeintrag sichtbar werden, können Sie in einem der folgenden Ordner liegen:
 
Damit Scriptlets als Menüeintrag sichtbar werden, können Sie in einem der folgenden Ordner liegen:
  
* <code>c:\Users\<Benutzername>\AppData\Roaming\AquaSoft\DiaShow9\Scriptlets\</code> - Scriptlets nur für den aktuellen Nutzer
+
* <code>c:\Users\<Benutzername>\AppData\Roaming\AquaSoft\Vision14\presets\scriptlets\</code> - Scriptlets nur für den aktuellen Nutzer
* <code>c:\ProgramData\AquaSoft\DiaShow9\Scriptlets\</code> - Scriptlets die hier liegen, sind für alle Nutzer des gleichen Computers sichtbar
 
 
* <code><DiaShowInstallationsverzeichnis>\Presets\Scriptlets</code> - Achtung: Es wird nicht empfohlen hier eigenen Scriptlets zu speichern, denn 1. haben Sie in diesem Ordner normalerweise keine Schreibrechte und 2. verschwinden die Dateien nach jedem Programm-Update
 
* <code><DiaShowInstallationsverzeichnis>\Presets\Scriptlets</code> - Achtung: Es wird nicht empfohlen hier eigenen Scriptlets zu speichern, denn 1. haben Sie in diesem Ordner normalerweise keine Schreibrechte und 2. verschwinden die Dateien nach jedem Programm-Update
 
   
 
   
Legen Sie einfach eine Datei mit der Endung .sss (also z.B. MeinScript.sss) in einem der o.g. Ordner an und starten Sie das Programm neu. Nur dann erscheint der Menüeintrag.
+
Legen Sie einfach eine Datei mit der Endung .sss (also z.B. MeinScript.sss) in einem der o.g. Ordner an und starten Sie das Programm neu. Nur dann erscheint der Menüeintrag. Falls der Ordner nicht vorhanden ist, legen Sie ihn einfach an.
  
 
= Bearbeiten und Debuggen =
 
= Bearbeiten und Debuggen =
Zeile 26: Zeile 25:
 
Zum Bearbeiten nutzen Sie die integrierte Entwicklungsumgebung die Sie über ''Ansicht / Steuerelemente / Scripting-Entwicklungsumgebung'' öffnen können, sofern der [[Entwicklermodus]] aktiviert ist. Sie können Scripts hier schreiben, Syntaxfehler ansehen aber auch die Ausführung debuggen, mit Haltepunkten, Schrittweiser ausführung und Werteüberwachung.
 
Zum Bearbeiten nutzen Sie die integrierte Entwicklungsumgebung die Sie über ''Ansicht / Steuerelemente / Scripting-Entwicklungsumgebung'' öffnen können, sofern der [[Entwicklermodus]] aktiviert ist. Sie können Scripts hier schreiben, Syntaxfehler ansehen aber auch die Ausführung debuggen, mit Haltepunkten, Schrittweiser ausführung und Werteüberwachung.
  
= Beispiel =
+
= Beispiel: Spuren untereinander anordnen =
  
 
Dieses Scriptlet ordnet alle Objekte innerhalb des markierten Kapitels untereinander an.
 
Dieses Scriptlet ordnet alle Objekte innerhalb des markierten Kapitels untereinander an.
Speichern Sie diesen Quelltext zum Ausprobieren hier ab: <code>c:\ProgramData\AquaSoft\DiaShow9\Scriptlets\SpurenUntereinander.sss</code>
+
Speichern Sie diesen Quelltext zum Ausprobieren hier ab: <code>%appdata%\AquaSoft\Vision14\presets\scriptlets\SpurenUntereinander.sss</code>
  
 
<code>
 
<code>
Zeile 40: Zeile 39:
 
   begin
 
   begin
 
     Result := '['
 
     Result := '['
     +'{"Caption":"Untereinander anordnen","Type":"Title"}'
+
     +'{"Caption":"Untereinander anordnen","Type":"title"}'
     +',{"Caption":"Platziert alle Objekte eines Containers untereinander.","Type":"Description"}'
+
     +',{"Caption":"Platziert alle Objekte eines Containers untereinander.","Type":"description"}'
 
     +']';  
 
     +']';  
 
   end;
 
   end;
Zeile 57: Zeile 56:
 
     begin
 
     begin
 
       var Item := SlideShowObject[i];
 
       var Item := SlideShowObject[i];
       Item.Track := i;
+
       Item.Track := i; // Spurnummer setzen
       Item.Offset := 0;  
+
       Item.Offset := 0; // Abstand zum Spuranfang entfernen)
 
     end;
 
     end;
 
   end;
 
   end;
 
    
 
    
   procedure OnExecute(Parameters: IParameters);
+
   procedure OnExecute(Parameters: [[IParameters]]);
 
   begin
 
   begin
    if DocumentController.GetFirstSelected = nil then
 
      Exit;
 
   
 
 
     var Item := DocumentController.GetFirstSelected;
 
     var Item := DocumentController.GetFirstSelected;
 
     while Item <> nil do
 
     while Item <> nil do
 
     begin
 
     begin
       SetTracks((Item as ISlideShowObject));  // Spuren für alle Kindelemente neu setzen
+
       SetTracks(Item as ISlideShowObject);  // Spuren für alle Kindelemente neu setzen
 
       Item := DocumentController.GetNextSelected(Item); // weiter zum nächsten markierten Eintrag
 
       Item := DocumentController.GetNextSelected(Item); // weiter zum nächsten markierten Eintrag
 
     end;
 
     end;
 +
  end;
 +
</code>
 +
 +
= Beispiel: Zugriff auf Parameter =
 +
 +
In diesem Scriptlet definiert die GUI zwei Werte, die vom Anwender eingebbar sind. Hier wird die GUI über die Hilfsfunktion [[GUIControl]] zusammengebaut, was etwas übersichtlicher ist, als direkt einen JSON-Script zu konstruieren.
 +
 +
<code>
 +
  //////////////////////////////////////////////////
 +
  // GUI
 +
  //////////////////////////////////////////////////
 +
 +
  // Name und Beschreibung des Menüeintrags
 +
  function OnGetGUI: string;
 +
  begin
 +
    Result := '['
 +
    + GUIControl('', 'Scriptlet-Titel', cGUITitle)
 +
    + ',' + GUIControl('', 'Scriptlet-Beschreibung', cGUIDescription) // verwenden Sie 'Description' anstelle von cGUIDescription, falls die Konstante noch nicht definiert ist.
 +
    + ',' + GUIControl('key1', 'Ein String-Wert', cGUIEdit)
 +
    + ',' + GUIControl('key2', 'Ein anderer Wert', cGUISlider, '"Min":0, "Max":100, "Increment":5, "Center":25, "Unit": "%", "Decimals": 1')
 +
    + ']';
 +
  end;
 +
 
 +
  //////////////////////////////////////////////////
 +
  // Ausführung
 +
  //////////////////////////////////////////////////
 +
 
 +
  procedure OnExecute(Parameters: [[IParameters]]);
 +
  begin
 +
    var wert1 := Parameters.GetValueAsString('key1');
 +
    var wert2 := Parameters.GetValueAsFloat('key2');
 +
   
 +
    // ...
 
   end;
 
   end;
 
</code>
 
</code>
  
 
[[Kategorie:Scripting-API]]
 
[[Kategorie:Scripting-API]]

Aktuelle Version vom 4. Mai 2023, 08:40 Uhr

Einführung

Scriptlets sind kleine Erweiterungen des Vison/Stages-Programms. Sie können selbst kleine Erweiterungen schreiben, die dann als Menüpunkt sichtbar werden.

Möglichkeiten

Solche Erweiterungen können z.B. folgende Dinge mit Ihrem Projekt anstellen:

  • EXIF-Daten auslesen
  • Dauer und Position verändert
  • Bewegungspfad und Kameraschwenk modifizieren
  • Gestaltungsvorlagen laden und anwenden
  • u.v.m.
  • Fehlt Ihnen etwas? Fragen Sie uns, denn entweder geht es bereits oder es lohnt sich vielleicht die API entsprechend zu erweitert.

Einbinden von Scriptlets

Damit Scriptlets als Menüeintrag sichtbar werden, können Sie in einem der folgenden Ordner liegen:

  • c:\Users\<Benutzername>\AppData\Roaming\AquaSoft\Vision14\presets\scriptlets\ - Scriptlets nur für den aktuellen Nutzer
  • <DiaShowInstallationsverzeichnis>\Presets\Scriptlets - Achtung: Es wird nicht empfohlen hier eigenen Scriptlets zu speichern, denn 1. haben Sie in diesem Ordner normalerweise keine Schreibrechte und 2. verschwinden die Dateien nach jedem Programm-Update

Legen Sie einfach eine Datei mit der Endung .sss (also z.B. MeinScript.sss) in einem der o.g. Ordner an und starten Sie das Programm neu. Nur dann erscheint der Menüeintrag. Falls der Ordner nicht vorhanden ist, legen Sie ihn einfach an.

Bearbeiten und Debuggen

Zum Bearbeiten nutzen Sie die integrierte Entwicklungsumgebung die Sie über Ansicht / Steuerelemente / Scripting-Entwicklungsumgebung öffnen können, sofern der Entwicklermodus aktiviert ist. Sie können Scripts hier schreiben, Syntaxfehler ansehen aber auch die Ausführung debuggen, mit Haltepunkten, Schrittweiser ausführung und Werteüberwachung.

Beispiel: Spuren untereinander anordnen

Dieses Scriptlet ordnet alle Objekte innerhalb des markierten Kapitels untereinander an. Speichern Sie diesen Quelltext zum Ausprobieren hier ab: %appdata%\AquaSoft\Vision14\presets\scriptlets\SpurenUntereinander.sss

 //////////////////////////////////////////////////
 // GUI
 //////////////////////////////////////////////////
 
 // Name und Beschreibung des Menüeintrags
 function OnGetGUI: string;
 begin
   Result := '['
 	  +'{"Caption":"Untereinander anordnen","Type":"title"}'
 	  +',{"Caption":"Platziert alle Objekte eines Containers untereinander.","Type":"description"}'
   +']'; 
 end;
 
 //////////////////////////////////////////////////
 // Ausführung
 //////////////////////////////////////////////////
 
 procedure SetTracks(const SlideShowObject: ISlideShowObject);
 begin
   if SlideShowObject.Count = 0 then
     Exit;
 
   for var i := 0 to SlideShowObject.Count - 1 do
   begin
     var Item := SlideShowObject[i];
     Item.Track := i; // Spurnummer setzen
     Item.Offset := 0; // Abstand zum Spuranfang entfernen)
   end;
 end;
 
 procedure OnExecute(Parameters: IParameters);
 begin
   var Item := DocumentController.GetFirstSelected;
   while Item <> nil do
   begin
     SetTracks(Item as ISlideShowObject);  // Spuren für alle Kindelemente neu setzen
     Item := DocumentController.GetNextSelected(Item); // weiter zum nächsten markierten Eintrag
   end;
 end;

Beispiel: Zugriff auf Parameter

In diesem Scriptlet definiert die GUI zwei Werte, die vom Anwender eingebbar sind. Hier wird die GUI über die Hilfsfunktion GUIControl zusammengebaut, was etwas übersichtlicher ist, als direkt einen JSON-Script zu konstruieren.

 //////////////////////////////////////////////////
 // GUI
 //////////////////////////////////////////////////
 // Name und Beschreibung des Menüeintrags
 function OnGetGUI: string;
 begin
   Result := '['
   + GUIControl(, 'Scriptlet-Titel', cGUITitle)
   + ',' + GUIControl(, 'Scriptlet-Beschreibung', cGUIDescription) // verwenden Sie 'Description' anstelle von cGUIDescription, falls die Konstante noch nicht definiert ist.
   + ',' + GUIControl('key1', 'Ein String-Wert', cGUIEdit)
   + ',' + GUIControl('key2', 'Ein anderer Wert', cGUISlider, '"Min":0, "Max":100, "Increment":5, "Center":25, "Unit": "%", "Decimals": 1')
   + ']'; 
 end;
 
 //////////////////////////////////////////////////
 // Ausführung
 //////////////////////////////////////////////////
 
 procedure OnExecute(Parameters: IParameters);
 begin
   var wert1 := Parameters.GetValueAsString('key1');
   var wert2 := Parameters.GetValueAsFloat('key2');
   
   // ...
 end;