跳转至

脚本示例:通用编辑器链接

该脚本编写方案可以优化处理不同组件类型时的工作,这些组件类型的文件扩展名相同,但要根据组件类型使用特定的编辑器打开。

为此,BeforeEdit 脚本会根据组件类型 ID 将项目文件链接到可配置的编辑器。

该脚本功能所需的文件

文件名 描述 功能性
ScriptBeforeEdit.exe 已在脚本包中提供 根据组件类型 ID 配置将项目文件链接到编辑器
ScriptBeforeEdit.ini 可使用文本编辑器进行编辑 为特定组件类型 ID 定义 BeforeEdit 脚本
Editor_Mapping.script 可使用文本编辑器进行编辑 脚本解释器处理的脚本

脚本解决方案的前提条件

  • 建议:将编辑器安装在不同的计算机上,以便它们始终位于相同文件夹中的相同本地访问路径下。
  • 但是,如果编辑器也安装在不同计算机的不同文件夹中,则必须在脚本中指定并配置所有可能的访问路径。

设置脚本

激活 ScriptBeforeEdit.exe

将应用程序复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。

编辑 ScriptBeforeEdit.ini

我们建议您将客户端脚本编写目录中任何现有的 ScriptBeforeEdit.ini 文件添加进去。如果该文件还不存在,请使用脚本包中的模板。

  1. 在 [General] 节输入从组件类型 ID 到脚本的连接,以激活编辑器映射脚本。
  2. 如果要链接多个不同的组件类型到脚本,则必须为每个组件类型 ID 创建一个新的条目。
  3. 保存该文件。
  4. 将文件复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。

例如:

[General]
//Component types, linking the component type ID to a specific editor.
{Component type ID}= editor_mapping

具体例子:

[General]
5A527AA2D4A846208BB8648EED1146BD= editor_mapping

编辑 editor_Mapping.script

  1. 在文本编辑器中打开 editor_Mapping.script 文件。
  2. 编辑 ScriptBeforeEdit 脚本应用程序。
  3. 如有必要,请根据下表进行调整。
  4. 保存该文件。
  5. 将文件复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。

脚本

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
}

自定义

第 17 行:

为特定组件类型 ID 分配一个特定的编辑器。
组件类型 ID 被定义为一个条件。只有当组件类型 ID 与作业的组件类型匹配时,才会将编辑器路径的定义作为值分配给 $def::var1。
因此,适用以下规则:$def::var1 = 如果组件类型 ID 匹配,则使用编辑器。
相应的脚本语法如下:$def::var1 = $func::getifcomponenttypeid(<ID n>,<Editor n>)。其中 <ID n> 必须替换为要与特定编辑器关联的组件类型 ID,<Editor n> 必须替换为与该组件类型关联的编辑器的绝对路径。
函数 $func::getiffileexists(...) 仅在指定的编辑器路径在本地可用时才适用。
示例:检查编辑器是否存在于本地:$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD,$func::getiffileexists(C:\Program files
myeditor.exe))
示例:不检查编辑器是否存在:$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD, C:\Program files\myeditor.exe)

第 18、19 行:如果不需要进一步分配编辑器,可以删除这些行。配置按第 5 行进行。也可以插入更多行,以分配更多编辑器。

第 21 行:

可以在此配置文件过滤器,以确定哪些文件将由脚本链接到编辑器。示例:$def::var2 = .txt|.dat

脚本只考虑扩展名为 TXT 或 DAT 的文件。对于所有其他扩展名,脚本编写将被终止。将执行打开编辑器的标准逻辑。

示例:$def::var2 =
不过滤任何文件。脚本编写适用于每个文件。

第 23 行:

命令行的格式,即所选文件应如何在编辑器中打开。这取决于相应的编辑器。

记事本示例:$def::var3 = $vdog::specific-> WorkingDir$vdog::specific-> SelectedFile.

给另一个编辑器的示例: $def::var3 = Project:$vdog::specific-> WorkingDir$vdog::specific-> SelectedFile

第 32 行:

所有编辑器分配必须在这一行之前完成。如果在编辑器分配中尚未考虑组件类型 ID,但调用了脚本,脚本将在这一行终止。将执行打开编辑器的标准逻辑。

第 34 行:

此处将对配置的文件过滤器进行检入检查。如果当前文件符合过滤器的要求,脚本编写将继续进行,否则脚本编写将在此时中止,并由系统打开编辑器。