Example of a script used for connecting to an editor
This script solution allows optimization in dealing with different component types that equally have a file with a certain extension, but should be opened with a certain editor depending on the component type.
For this purpose, the BeforeEdit script links the project file to an editor in a configurable way depending on the component type ID.
Necessary files for this script function:
File nam | Description | Functio |
---|---|---|
ScriptBeforeEdit.exe | Available in the scripting package | Links the configurable project file with an editor, depending on the Component type ID |
ScriptBeforeEdit.ini | Can be edited with a text editor | Defines the script BeforeEdit for a specific component type ID |
Editor_mapping.script | Can be edited with a text editor | script, which was processed by the script interpreter |
Requirements for scripting solutions
- Recommendation: Install the editors on different computers, so that they are always under the same local access path in the same directory
- In contrast, if an editor is installed on different computers in different directories then each possible access path needs to be entered into the script and configured there
Set up script
Activate ScriptBeforeEdit.exe
Copy the application into the Server scripting directory for automatic update of client
Edit ScriptBeforeEdit.ini
We recommend that you edit theScriptBeforeEdit.ini
taken from the Server scripting directory for automatic update of client. If this file is not yet available, use the template from the scripting package.
- Activate the mapping script editor by entering the connection to the Component type ID in the section [General]
- If more than one different component type is connected to the script, a new entry is required for each component type
- Save the file
- Copy the file into the Server scripting directory for automatic update of client
Example:
1 2 3
[General] //Component types, connection to the component type ID with an existing editor<ComponentTypeID>
= editor_mapping
Specific example:
1 2
[General] 5A527AA2D4A846208BB8648EED1146BD= editor_mapping
Edit the editor_Mapping.script
- Open the editor_Mapping.script in the text editor
- Edit the function ScriptBeforeEdit.
- If necessary, make the adjustments listed in the table below.
- Save the file.
- Copy the file to the Server script directory for automatic client update.
Script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
Function ScriptBeforeEdit { //—————————————————- // de: // de: // Script configuration // var1 -> Allocation (Component type ID<-> Editor) // var2 -> Filter, the files that the script should monitor. // var3 -> Format the execution argument to open the file in the editor // // en: // Script-Configuration: // var1 -> Mapping of ComponenttypeId 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
//—————————————————- // de: // Scriptlogic // // en: // Script logic // exit.ifemptyvar $def::var1
continue.ifselectedfilefiltermatch $def::var2
call $def::var1 { arg $def::var3 wait 0 rundir $def::var1 }
done }
Lines | Descriptio |
---|---|
17 | A specific component type ID is assigned to a specific editor.A component type ID is defined as a condition.$def::var1 is assigned the definition to the editor path as a value only exactly when the component type ID matches that of the job.The following applies:$def::var1 = If component type ID matches then use editorScript syntax:$def::var1 = $func::getifcomponenttypeid (<ID n> , <Editor n> )<ID n> needs to be substituted with the exact component type ID with which you wish to link the editor to.<Editor n> needs to be substituted with the absolute path to the editor with which you wish to link the component type ID to.The function $func::getiffileexists(…) takes over the specification only if the editor can also be found locally.Example with test as to whether the editor exists locally:$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD,$func::getiffileexists(C:Program filesmyeditor.exe)) Example without test as to whether the editor exits:$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD,C:Program filesmyeditor.exe) |
18, 1 | These lines can be removed if there aren’t any other necessary editors. The configuration occurs just like in line 5.You can add additional lines if there are any other necessary editors. |
2 | It is possible to configure a file filter in order to determine which files the script should link to the editor.Example:$def::var2 = .txt|.datOnly files with the endings TXT and DAT will be recognized by the script. For all other endings, the script will simply end. The standard logic for opening the editor is executed.Example:$def::var2 =No file is filtered. The script is used for each file. |
2 | Format the command lines to specify how you want the file in the editor to open. This depends on the respective editor.Example for notepad:$def::var3 = $vdog::specific->WorkingDir$vdog::specific->SelectedFileExample for a different editor:$def::var3 = Projekt:$vdog::specific->WorkingDir$vdog::specific->SelectedFile |
3 | All editors need to assigned before this line.If the script was executed, even though the specified component type ID was not (yet) included, the script will end exactly at this line. The versiondog system only uses standard logic to open the editor. |
3 | This is where the configured file filter is checked. If the file matches the filter, the script will continue to run, otherwise the script is aborted at this point and the opening of the editor is performed by the system. |