Skriptbeispiel: Allgemeine Editor-Verknüpfung¶
Diese Skriptlösung ermöglicht eine Optimierung im Umgang mit unterschiedlichen Komponententypen, die eine Datei mit einer bestimmten Endung haben, jedoch je nach Komponententyp mit einem bestimmten Editor geöffnet werden sollen.
Hierfür verknüpft das Skript BeforeEdit die Projektdatei konfigurierbar mit einem Editor, abhängig von der Komponententyp-ID.
Erforderliche Dateien für diese Skriptfunktion¶
Dateiname | Beschreibung | Funktionsweise |
---|---|---|
ScriptBeforeEdit.exe | Wird im Skriptpaket bereitgestellt | Verknüpft die Projektdatei konfigurierbar mit einem Editor, abhängig von der Komponententyp-ID |
ScriptBeforeEdit.ini | Kann mit einem Texteditor bearbeitet werden | Definiert das Skript BeforeEdit für eine bestimmte Komponententyp-ID |
Editor_mapping.script | Kann mit einem Texteditor bearbeitet werden | Skript, das durch den Skript-Interpreter verarbeitet wird |
Voraussetzungen für die Skriptlösung¶
- Empfehlung: Installieren Sie die Editoren auf unterschiedlichen Rechnern, so dass sie immer unter dem gleichen lokalen Zugriffspfad in den gleichen Ordnern liegen.
- Ist dagegen ein Editor bei unterschiedlichen Rechnern auch in unterschiedlichen Ordnern installiert, so muss jeder mögliche Zugriffspfad im Skript angegeben und konfiguriert werden.
Skript einrichten¶
SkriptBeforeEdit.exe aktivieren¶
Kopieren Sie die Applikation in die Registerkarte Server-Skriptverzeichnis zur automatischen Client-Aktualisierung.
SkriptBeforeEdit.ini bearbeiten¶
Wir empfehlen Ihnen, eine möglicherweise bereits vorhandene Datei ScriptBeforeEdit.ini
aus dem Client-Skriptverzeichnis zu ergänzen. Wenn diese Datei (noch) nicht vorhanden ist, verwenden Sie bitte die Vorlage aus dem Skriptpaket.
- Aktivieren Sie das Editor-Mapping Skript, indem Sie in der Sektion [General] die Verbindung von der Komponententyp-ID zum Skript eintragen.
- Sollen mehrere unterschiedliche Komponententypen mit dem Skript gekoppelt werden, ist für jede Komponententyp-ID ein neuer Eintrag vorzunehmen.
- Speichern Sie die Datei.
- Kopieren Sie die Datei in die Registerkarte Server-Skriptverzeichnis zur automatischen Client-Aktualisierung.
Beispiel:
[General]
//Component types, linking the component type ID to a specific editor.
{Component type ID}= editor_mapping
Konkretes Beispiel:
editor_Mapping.script bearbeiten¶
- Öffnen Sie die Datei
editor_Mapping.script
im Texteditor. - Bearbeiten Sie die Skriptapplikation ScriptBeforeEdit.
- Nehmen Sie ggf. die in der nachfolgenden Tabelle aufgelisteten Anpassungen vor.
- Speichern Sie die Datei.
- Kopieren Sie die Datei in die Registerkarte Server-Skriptverzeichnis zur automatischen Client-Aktualisierung.
Skript¶
Function ScriptBeforeEdit
{
//----------------------------------------------------
//
// en:
// Script configuration
// var1 -> Assignment (component type Id <-> editor)
// var2 -> Filter which files should be considered by the Script.
// var3 -> Formatting of the call argument to open the file in the editor
//
// en:
// Script-Configuration:
// var1 -> Mapping of Component type Id to Editor
// var2 -> specification of files which should be treated by this script.
// var3 -> formated argument to launch the selected file in the editor.
//
$def::var1 = $func::getifcomponenttypeid(<Id 1>, $func::getiffileexists(<Editor 1>) )
$def::var1 = $func::getifcomponenttypeid(<Id 2>, $func::getiffileexists(<Editor 2>) )
$def::var1 = $func::getifcomponenttypeid(<Id 3>, $func::getiffileexists(<Editor 3>) )
$def::var2 =<Filefilter specification>
$def::var3 = $vdog::specific->WorkingDir$vdog::specific->SelectedFile
//----------------------------------------------------
// en:
// Script logic
//
// en:
// Script logic
//
exit.ifemptyvar $def::var1
continue.ifselectedfilefiltermatch $def::var2
call $def::var1
{
arg $def::var3
wait 0
rundir $def::var1
}
done
}
Anpassungen¶
Zeile 17:
Eine bestimmte Komponententyp-ID ist einem bestimmten Editor zugeordnet.
Eine Komponententyp-ID wird als Bedingung definiert. Nur wenn die Komponententyp-ID mit der des Jobs übereinstimmt, wird $def::var1 die Definition für den Editorpfad als Wert zugewiesen.
Es gilt also: $def::var1 = Wenn Komponententyp-ID passt, dann Editor verwenden.
Die Skript-Syntax hierfür lautet: $def::var1 = $func::getifcomponenttypeid(<ID n>
,<Editor n>
) <ID n>
muss nun durch die spezifische Komponententyp-ID ersetzt werden, die mit einem bestimmten Editor verknüpft werden soll. <Editor n>
muss nun durch den absoluten Pfad zu dem Editor ersetzt werden, der mit der Komponententyp-ID verknüpft werden soll.
Die Funktion $func::getiffileexists(...) akzeptiert die Angabe nur, wenn der angegebene Editor tatsächlich lokal gefunden werden kann.
Beispiel mit Prüfung, ob der Editor lokal existiert: $def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD,$func::getiffileexists(C:\Programmdateien
myeditor.exe))
Beispiel ohne Überprüfung, ob der Editor existiert: $def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD, C:\Programmdateien\myeditor.exe)
Zeilen 18, 19: Diese Zeilen können entfernt werden, wenn keine weiteren Editorzuordnungen erforderlich sind. Die Konfiguration erfolgt wie in Zeile 5. Ebenso dürfen für zusätzliche Editorzuordnungen weitere Zeilen eingefügt werden.
Zeile 21:
Hier kann ein Dateifilter konfiguriert werden, um zu bestimmen, welche Dateien vom Skript mit einem Editor verknüpft werden sollen. Beispiel: $def::var2 = .txt|.dat
Nur Dateien mit der Endung TXT oder DAT werden vom Skript berücksichtigt. Für alle anderen Erweiterungen wird das Skript abgebrochen. Die Standardlogik zum Öffnen des Editors wird ausgeführt.
Beispiel: $def::var2 =
Keine Datei wird gefiltert. Das Skript wird auf jede Datei angewendet.
Zeile 23:
Formatierung der Kommandozeile, wie die ausgewählte Datei im Editor geöffnet werden soll. Dies hängt vom jeweiligen Editor ab.
Beispiel für Notepad: $def::var3 = $vdog::specific-> WorkingDir$vdog::specific-> SelectedFile.
Beispiel für einen anderen Editor: $def::var3 = Projekt:$vdog::specific-> WorkingDir$vdog::specific-> SelectedFile
Zeile 32:
Alle Editorzuordnungen müssen vor dieser Zeile erfolgen. Wird das Skript aufgerufen, obwohl die Komponententyp-ID in der Editorzuordnung (noch) nicht berücksichtigt wird, wird das Skript genau in dieser Zeile beendet. Die Standardlogik zum Öffnen des Editors wird ausgeführt.
Zeile 34:
Hier findet die Prüfung auf den konfigurierten Dateifilter statt. Entspricht die aktuelle Datei dem Filter, so wird fortgefahren, ansonsten wird das Skript an dieser Stelle abgebrochen und das Öffnen des Editors wird vom System durchgeführt.