1.    概述

Skyline提供了丰富的API,用户可以根据不同实际需求,进行二次开发封装,实现各种功能的扩展和定制。当我们开发了各种功能页面或者应用程序后,如何将它们快速嵌入到TerraExplorer软件中呢?Skyline为我们提供了一种叫TEZ的方式。

TEZ,实际上就是把基于TerraExplorer开发的工具,制作成一个TEZ格式压缩包,然后再分发给不同的TerraExplorer用户使用。用户在TerraExplorer的“Options->Add-ons”中添加新的TEZ工具后,下次运行TerraExplorer的时候,就可以直接在TerraExplorer的Ribbon菜单中调用新工具。

2.    制作TEZ文件过程

  1. 首先开发完成一个TerraExplorer的功能页面:MyTool.html;
  2. 创建一个XML文件,命名为“tool.xml”;这个XML文件内容包括如下(其中caption是工具名称,id是唯一编号,Path是指定HTML文件相对于tool.xml文件的存储路径):

<Tool caption="Data Analysis" id="ACO009" Path="MyTool\MyTool.html" >

<Ribbon/>

</Tool>

  1. 创建一个文件夹“MyTool”,把MyTool.html和tool.xml都拷贝到这个文件夹;
  2. 把“MyTool”文件夹压缩成zip文件;
  3. 把“MyTool.zip”重名名为“MyTool.tez”;

至此,我们就完成了一个TEZ文件的制作。

这样,我们就把TerraExplorer的扩展功能封装成了一个TEZ文件,就可以很方便的分发给其他Skyline用户使用,用户运行TerraExplorer软件,调用Add-ons功能,就能够将TEZ里面封装的扩展功能嵌入到已经安装的TerraExplorer软件中。

另外,如何配置“tool.xml”文件,是非常关键的一个步骤。

3.    TerraExplorer 的Add-ons功能

  1. 利用新的HTML工具扩展TerraExplorer功能;
  2. 定制TerraExplorer的Ribbon菜单;利用增加新的Ribbon菜单命令来打开对应新增的扩展功能;
  3. 定制用户界面;改变TerraExplorer的开始页面和开始参数设置;

4.    XML配置TerraExplorer用户界面

通过设置too.xml文件中的<Panel><Popup><Hidden>节点属性,可以实现TEZ在TerraExplorer中的不同展现方式。

  1. 创建一个嵌入在TerraExplorer左侧面板中的工具:

<Tool caption="Data Analysis" id="ACO009" Path="MyToolFolder\MyTool.html">

<Icon path="MyAddon.ico"/>

<Ribbon Show="1" Toggle="0"/>

<Container>

<Panel/>

</Container>

</Tool>

  1. 创建一个Popup工具:

<Tool caption="Data Analysis" id="ACO009" Path="MyToolFolder\MyTool.html">

<Icon path="MyAddon.ico"/>

<Ribbon Show="1" Toggle="0"/>

<Container>

<Popupx="30" y="60" width="300" height="200" ShowCaption="1"/>

</Container>

</Tool>

  1. 创建一个隐藏工具:

<Tool caption="Data Analysis" id="ACO009" Path="MyToolFolder\MyTool.html">

<Container>

<Hidden/>

</Container>

</Tool>

5.    XML工具参数设置

决定在什么时候运行工具:通过设置<Tool>节点的属性来实现;

  • AutoStart - 当打开一个FLY工程时自动运行这个工具;
  • RunOnce – 设置工具只运行一次;
  • ShowOnVersionTypes – 决定哪一个级别的TerraExplorer软件可以显示使用这个自定义工具;
  • NeedProject – 决定在TerraExplorer软件中打开了FLY工程才可以使用这个自定义工具;

<Tool caption="Data Analysis" id="ACO009" Path="MyToolFolder\MyTool.html" NeedProject="0" ShowOnVersionTypes="3" RunOnce="1" AutoStart="1">

<Icon path="MyAddon.ico"/>

<Ribbon Show="1" Toggle="0"/>

<Container>

<Panel x="30" y="60" width="300" height="200" ShowCaption="1/0"/>

</Container>

</Tool>

6.    XML实现Ribbon菜单定制

通过设置<Ribbon>等节点属性和内容,来实现多种Ribbon菜单效果:

  1. 创建一个Ribbon菜单命令;

<Tool caption="Data Analysis" id="ACO009" Path="MyToolFolder\MyTool.html">

<Ribbon Show="1" Toggle="0"/>

</Tool>

  1. 定义菜单命令属性:

<Tool caption="Data Analysis" id="ACO009" Path="MyToolFolder\MyTool.html" NeedProject="0" >

<Icon path="MyAddon.ico"/>

<Ribbon Show="1" Toggle="0">

<Category id="MyTabId" caption="My Tab"/>

<Panel id="MyGroupId" caption="My Group" />

<ToolTip title="My Tooltip" description="Tool for demonstrating add-on use"/>

</Ribbon>

</Tool>

  1. 创建一个下拉列表菜单命令:

<Tool caption="Data Analysis" id="ACO009" Path="MyToolFolder\MyTool.html" >

<Icon path="MyAddon.ico"/>

<Ribbon Show="1" Toggle="0">

<Category id="MyTabId" caption="My Tab"/>

<Panel id="MyGroupId" caption="My Group" />

<ToolTip title="My Tooltip" description="Tool for demonstrating add-on use"/>

<Submenu>

<Item caption="My SubmenuOption" id="MySubId" Path="MySubmenuToolFolder\MySubmenuTool.html">

<ToolTip title="My Tooltip" description="Tool for demonstrating submenu use"/>

<Icon path="MySubmenuOption.ico"/>

</Item>

</Submenu>

</Ribbon>

</Tool>

4.定义附加属性的下拉列表菜单命令:

<Tool caption="Data Analysis" id="ACO009" Path="MyToolFolder\MyTool.html">

<Icon path="MyAddon.ico"/>

<Ribbon Show="1" Toggle="0" splitButton="1">

<Category id="AnalysisTools" caption="Graphs"/>

<Panel id="MyGroupID" caption="Analysis" />

<ToolTip title=“My Tooltip” description="Tool for demonstrating add-on use"/>

<Submenu>

<GroupTitle>MyGroup1</GroupTitle>

<Item caption="My SubmenuOption1" id="MySubId1" Path="MySubmenuToolFolder\MySubmenuTool1.html">

<ToolTip title="My Tooltip1" description="Tool for demonstrating submenu use"/>

<Icon path="MySubmenuOption1.ico"/>

</Item>

<Separator></Separator>

<Item caption="My SubmenuOption2" id="MySubId2" Path="MySubmenuToolFolder\MySubmenuTool2.html">

<ToolTip title="My Tooltip2" description="Tool for demonstrating submenu use"/>

<Icon path="MySubmenuOption2.ico"/>

</Item>

<GroupTitle>MyGroup2</GroupTitle>

<Item caption="My SubmenuOption3" id="MySubId3" Path="MySubmenuToolFolder\MySubmenuTool3.html">

<ToolTip title="My Tooltip3" description="Tool for demonstrating submenu use"/>

<Icon path="MySubmenuOption3.ico"/>

</Item>

</Submenu>

</Ribbon>

</Tool>

7.    XML文件结构说明

节点要素

描述说明

<Tool>

定义一个新工具

<Container>

定义工具显示位置

<Ribbon>

定义一个新的菜单命令

<Submenu>

定义一个菜单命令的下拉列表菜单

<Item>

定义一个下拉列表菜单中的子命令

<File>

注册动态链接库文件

<Tool>

定义一个新工具。

属性

属性

描述说明

AutoStart

决定该工具在FLY工程打开时是否自动加载

  • AutoStart = 0 (Default) – 不自动加载
  • AutoStart = 1 – 自动加载

Caption

该工具在Ribbon菜单和工具窗口中显示的名称

Id

Ribbon菜单的唯一编号

NeedProject

决定在TerraExplorer中没有加载FLY工程的时候Ribbon菜单按钮是否可用

  • NeedProject = 0 (Default) – 可用
  • NeedProject = 1 – 不可用

Path

HTML工具所在位置

注意:    路径要包括文件夹, e.g. “MyToolFolder\MyTool.html.”

RunOnce

决定这个工具是否只运行一次

  • RunOnce = 0 (Default) – 每次都可以运行
  • RunOnce = 1 – 只运行一次

注意:    这个属性只在TerraExplorer加载TEZ文件时起作用

ShowOnVersionTypes

决定哪个级别的TerraExplorer软件显示这个工具。这个属性可以选择下面几种类型:

  • TerraExplorer Pro= 1
  • TerraExplorer Plus = 2
  • TerraExplorer Viewer = 4

如果需要显示在TerraExplorer Pro 和 Plus中,而Viewer中不显示,需要设置ShowOnVersionTypes = 3。如果不设置这个属性,则都可以显示这个工具。

子节点要素

节点要素

描述说明

节点要素属性

<Icon>

定义新菜单命令的图标

path – 图标文件所在路径

<Container>
子节点要素

节点要素

描述说明

节点要素属性

<Panel>

设置工具显示在TerraExplorer左侧面板底部

<Popupl>

设置工具作为一个Popup窗口显示,并且设置窗口的位置和大小

注意:    要求TerraExplorer必须已经打开一个FLY工程

X – 相对于3D窗口的X坐标

Y –相对于3D窗口的Y坐标

Width – Popup窗口宽度

Height –Popup窗口高度

ShowCaption – 决定是否显示Popup窗口名称:

  • ShowCaption = “0” – 不显示
  • ShowCaption = “1” – 显示

<Hidden>

设置隐藏工具窗口

注意:    要求TerraExplorer必须已经打开一个FLY工程

<Ribbon>
属性

属性

描述说明

Show

决定按钮是否显示在Ribbon菜单上

  • Show = “0” – 不显示
  • Show = “1” (默认)– 显示

splitButton

决定是否将功能按钮分成两部分,当点击按钮下半部分的时候显示一个下拉菜单列表,当点击上半部分的时候激活主菜单工具选项

  • splitButton = “0” – 按钮仅打开下拉菜单列表
  • splitButton = “1” (默认)  创建一个分上下两部分功能的按钮

Toggle

决定菜单按钮是否是一个切换功能按钮

  • Toggle = “1” – 这个按钮功能作为一个切换按钮来实现打开或者关闭工具面板
  • Toggle = “0” (默认) – 点击按钮总是打开工具面板
子节点要素

节点要素

描述说明

节点要素属性

<Category>

决定新的Ribbon菜单TAB项被放置位置,如果不指定,新的菜单命令会被放置在“Tools”TAB项

id – Ribbon菜单Tab项的唯一编号

caption – 新增的Ribbon菜单TAB项名称

<Panel>

决定新的Ribbon菜单组放置位置,如果这个组不存在,就创建这个组;如果不指定,菜单命令就默认创建在“Tools”组

id – Ribbon菜单组的唯一编号

caption – 新增Ribbon菜单组名称

<Submenu>

决定是否显示菜单下拉列表

<ToolTip>

决定是否显示鼠标提示信息

title – 鼠标提示信息标题

description – 鼠标提示信息内容

<Submenu>

这个节点决定是否显示下拉列表菜单

子节点要素

节点要素

描述说明

节点要素属性

<Item>

增加一个命令到下拉列表菜单

<Separator>

增加一个水平分隔符到下拉列表菜单

<GroupTitle>

定义一个下拉列表菜单的标题名称

<Item>
Attributes

属性

描述说明

Caption

Ribbon下拉列表菜单上要显示的命令名称

id

菜单命令的唯一编号

Path

下拉列表菜单命令要记载的工具HMTL页面的存放位置路径

NeedProject

决定TerraExplorer加载FLY工程前这个命令按钮是否可用

  • NeedProject = 0 (默认) – 可用
  • NeedProject = 1 – 不可用
子节点要素

节点要素

节点要素属性

描述说明

<ToolTip>

title – 鼠标提示信息标题

description – 提示信息内容

<Icon>

path – Ribbon菜单上显示的图标

<File>

注册指定的动态链接库文件

Attributes

属性

描述说明

name

动态链接库文件名称

子节点要素

节点要素

描述说明

节点要素属性

<comClass>

决定COM是否需要注册

clsid – Com对象的类编号

iid – 接口编号

event_iid – 事件编号

tlbid – 类编号

8.    XML示例

<Tool caption="Data Analysis" id="ACO009" Path="MyToolFolder\MyTool.html" NeedProject="0" ShowOnVersionTypes="7" RunOnce="1" AutoStart="1">

<Icon path="MyAddon.ico"/>

<Ribbon Show="1" Toggle="0" splitButton="1">

<Category id="AnalysisTools" caption="Graphs"/>

<Panel id="MyGroupID" caption="Analysis" />

<ToolTip title="My Tooltip" description="Tool for demonstrating add-on use"/>

<Submenu>

<GroupTitle>MyGroup1</GroupTitle>

<Item caption="My SubmenuOption1" id="MySubId1" Path="MySubmenuToolFolder\MySubmenuTool1.html">

<ToolTip title="My Tooltip1" description="Tool for demonstrating submenu use"/>

<Icon path="MySubmenuOption1.ico"/>

</Item>

<Separator></Separator>

<Item caption="My SubmenuOption2" id="MySubId2" Path="MySubmenuToolFolder\MySubmenuTool2.html">

<ToolTip title="My Tooltip2" description="Tool for demonstrating submenu use"/>

<Icon path="MySubmenuOption2.ico"/>

</Item>

<GroupTitle>MyGroup2</GroupTitle>

<Item caption="My SubmenuOption3" id="MySubId3" Path="MySubmenuToolFolder\MySubmenuTool3.html">

<ToolTip title="My Tooltip3" description="Tool for demonstrating submenu use"/>

<Icon path="MySubmenuOption3.ico"/>

</Item>

</Submenu>

</Ribbon>

<Container>

<Popup x="30" y="60" width="300" height="200" ShowCaption="1"/>

</Container>

</Tool>

TerraExplorer Add-ons 和TEZ使用说明的更多相关文章

  1. Qt Add ons Modules(听说QtSystem有接口可以获取 imei号)

    http://wiki.qt.io/Qt-Add-ons-Modules 听说QtSystem有接口可以获取 imei号.http://wiki.qt.io/Qt-Add-ons-Modules这儿下 ...

  2. GWT资料收集

    1.别人的GWT笔记 http://www.blogjava.net/peacess/archive/2007/08/06/84950.html 2.GWT系统类库参考手册 http://www.bo ...

  3. Fiddler初探

    我们知道监视Http和Https请求的工具有多种,例如:HttpWatch,FireBug等.但是今天接触到一种新的工具Fiddler.Fiddler能记录所有客户端和服务器的http和https请求 ...

  4. oracle rac常用的命令

    oracle rac常用的命令 节点层:olsnodes 网络层: oifcfg 集群层:crsctl,ocrcheck,ocrdump,ocrconfig 应用层:srvctl,onsctl,crs ...

  5. Fiddler工具

    Fiddler初探 我们知道监视Http和Https请求的工具有多种,例如:HttpWatch,FireBug等.但是今天接触到一种新的工具Fiddler.Fiddler能记录所有客户端和服务器的ht ...

  6. RAC 10g administration

    10g RAC administration See OCFS Oracle Cluster Filesystem, ASM, TNSnames configuration, Oracle Datab ...

  7. 第四章:Oracle12c 数据库在linux环境安装

    一:搭建yum 仓库 对于新手可以参考此文:<Vmware Workstation _linux yum 仓库搭建>.<CentOS7.2 创建本地YUM源和局域网YUM源> ...

  8. ebs 12.1.1 单节点多用户安装

    本次测试环境:操作系统 oracle linux 6.9   oracle ebs 12.1.1   192.168.20.210  erpapp1.hthorizon.com erpapp1 yum ...

  9. Kubernetes实战(一):k8s v1.11.x v1.12.x 高可用安装

    说明:部署的过程中请保证每个命令都有在相应的节点执行,并且执行成功,此文档已经帮助几十人(仅包含和我取得联系的)快速部署k8s高可用集群,文档不足之处也已更改,在部署过程中遇到问题请先检查是否遗忘某个 ...

随机推荐

  1. RNN,LSTM中如何使用TimeDistributed包装层,代码示例

    本文介绍了LSTM网络中的TimeDistributed包装层,代码演示了具有TimeDistributed层的LSTM网络配置方法. 演示了一对一,多对一,多对多,三种不同的预测方法如何配置. 在对 ...

  2. 09-OpenLDAP加密传输配置

    OpenLDAP加密传输配置(CA服务器与openldap服务器异机) 阅读视图 环境准备 CA证书服务器搭建 OpenLDAP服务端与CA集成 OpenLDAP客户端配置 客户端测试验证 故障处理 ...

  3. 高德地图JS API 开发小结

    项目中有一块功能要用到高德地图,所以,想把编码小结一下. 首先是地图的初始化 var map = new AMap.Map("mapDiv", {                  ...

  4. python pip 使用时错误: Patal error in launcher:Unable to create process using '"'

    当前我的电脑配置是64位, 装有python2.7 和python 3.6 两个版本 在使用pip install mysqlclient 的时候,出现了  Patal error in launch ...

  5. MIME 内容类型

    MIME内容类型 https://www.iana.org/assignments/media-types/media-types.xhtml 媒体在各浏览器的支持情况: https://develo ...

  6. 上下文管理器——with语句的实现

    前言 with语句的使用给我们带来了很多的便利,最常用的可能就是关闭一个文件,释放一把锁. 既然with语句这么好用,那我也想让我自己写的代码也能够使用with语句,该怎么实现? 下面具体介绍怎样实现 ...

  7. U盘内容被病毒隐藏的解决办法(亲测可用)

    前几天用U盘的时候不小心感染上了病毒,用自己的电脑打开后里面只剩下一个U盘的快捷方式,选中显示隐藏文件之后依然没有任何显示,但是查看U盘的属性的时候可以看到,U盘已经使用了300多M,所以就上网查了一 ...

  8. 说说Android6.0动态申请权限的那些坑

    白天在做SDK23版本的适配,遇到了不少坑,现在抽空记下来,以此为戒. 首先要知道哪些坑,就得先了解一些定义和基本使用方式. 那么先介绍一下动态申请的权限分组情况. 下面的权限组是由谷歌官方定义的,目 ...

  9. Lua 与 C 交互之UserData(4)

    lua作为脚本于要能够使用宿主语言的类型,不管是宿主基本的或者扩展的类型结构,所以Lua提供的UserData来满足扩展的需求.在Lua中使用宿主语言的类型至少要考虑到几个方面: 数据内存 生命周期 ...

  10. 常见的web攻击方式

    跨站脚本攻击(XSS) 概述 跨站脚本攻击(XSS,Cross-site scripting),指攻击者在网页中嵌入恶意脚本程序,是最常见和基本的攻击WEB网站的方法.攻击者在网页上发布包含攻击性代码 ...