Zum Inhalt

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.

  1. Aktivieren Sie das Editor-Mapping Skript, indem Sie in der Sektion [General] die Verbindung von der Komponententyp-ID zum Skript eintragen.
  2. Sollen mehrere unterschiedliche Komponententypen mit dem Skript gekoppelt werden, ist für jede Komponententyp-ID ein neuer Eintrag vorzunehmen.
  3. Speichern Sie die Datei.
  4. 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:

[General]
5A527AA2D4A846208BB8648EED1146BD= editor_mapping

editor_Mapping.script bearbeiten

  1. Öffnen Sie die Datei editor_Mapping.script im Texteditor.
  2. Bearbeiten Sie die Skriptapplikation ScriptBeforeEdit.
  3. Nehmen Sie ggf. die in der nachfolgenden Tabelle aufgelisteten Anpassungen vor.
  4. Speichern Sie die Datei.
  5. 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.

Verwandte Themen