这次接着说UNO组件的配置文件,该组件的配置文件是以xcu后缀名结尾的,同其他java中的配置文件一样,它也是xml格式的文件。
xcu配置文件的作用是对OOo插件的在OOo的菜单栏、工具栏之中指定如何定义用户界面扩展,以及菜单被点击后应该触发哪个类的具体方法的指向。例子如下:
1 <node oor:name="AddonMenu">
2 <node oor:name="cn.ac.cintcm.openoffice.plugin" oor:op="replace">
3 <prop oor:name="Title" oor:type="xs:string">
4 <value xml:lang="en-US">CRF report</value>
5 <value xml:lang="zh-CN">病例报表</value>
6 </prop>
7 <prop oor:name="Context" oor:type="xs:string">
8 <value>com.sun.star.text.TextDocument</value>
9 </prop>
10 <node oor:name="Submenu">
11 <node oor:name="m1" oor:op="replace">
12 <prop oor:name="URL" oor:type="xs:string">
13 <value>cn.ac.cintcm.openoffice.plugin.lemma:LemmaDialog</value>
14 </prop>
15 <prop oor:name="ImageIdentifier" oor:type="xs:string">
16 <value/>
17 </prop>
18 <prop oor:name="Title" oor:type="xs:string">
19 <value/>
20 <value xml:lang="en-US">TCM lemma search</value>
21 <value xml:lang="zh-CN">中医词条搜索</value>
22 </prop>
23 <prop oor:name="Target" oor:type="xs:string">
24 <value>_self</value>
25 </prop>
26 </node>
27 <node oor:name="m2" oor:op="replace">
28 <prop oor:name="URL" oor:type="xs:string">
29 <value>cn.ac.cintcm.openoffice.plugin.database:DataBase</value>
30 </prop>
31 <prop oor:name="ImageIdentifier" oor:type="xs:string">
32 <value/>
33 </prop>
34 <prop oor:name="Title" oor:type="xs:string">
35 <value/>
36 <value xml:lang="en-US">DataBase</value>
37 <value xml:lang="zh-CN">数据库</value>
38 </prop>
39 <prop oor:name="Target" oor:type="xs:string">
40 <value>_self</value>
41 </prop>
42 </node>
43 </node>
44 </node>
45 </node>
该xml文件为了避免和命名冲突使用了xmlns:oor="http://openoffice.org/2001/registry"、xmlns:xs="http://www.w3.org/2001/XMLSchema"的命名空间。
Addons.xcu是脚本调用和直接调用都要用到的文件,它的根节点为oor:component-data,在
<node oor:name="AddonUI">节点下可以设置三个不同地点显示的信息的子节点,它们分别是
<node oor:name="OfficeMenuBar">、<node oor:name="OfficeToolBar">、
<node oor:name="OfficeHelp">,从xml文件的易读性我们可以看出这些分别是设置菜单栏、工具栏和帮助信息的。
用于定义加载项菜单的支持的 org.openoffice.Office.Addons集 OfficeMenuBar 此集中定义的菜单将成为 OOo 菜单栏中的顶层菜单。
AddonMenu 此集中定义的菜单将成为弹出式菜单,是位于工具菜单底部的“加载项”菜单项的一部分。
模板 MenuItem 的属性
oor:name 字符串型。配置节点的名称。名称必须以 ASCII 字母字符开始。 该名称在 Office-MenuBar 集中必须是唯一的。因此,必须使用诸如org.openoffice.<developer>.<product>.<addon name> 或com.<company>.<product>.<addon name> 之类的模式以避免产生名称冲突。请记住,您的配置文件将合并到 OOo 配置分支中。您不知道当前安装了哪些 加载项或者安装了多少加载项。因此子菜单的菜单项的节点名称在其子菜单中必须是唯一的。配置集不能保证其条目的顺序,因此您应该使用字符串 + 编号(如 “m1”)这样的模式作为排序条目时使用的名称。
URL 字符串型。指定用户激活菜单条目时应该分发的命令 URL。如果 MenuItem 是子菜单的
标题,则该属性将被忽略。要定义分隔符,您可以使用特殊的命令 URL ""private:separator。分隔符将忽略所有其他属性。
Title 字符串型。包含顶层菜单项的标题。 此属性支持本地化:默认字符串(在 StarSuite 无法找到其当前语言的字符串定义时使用)使用不带属性的 value 元素。您可以使用xml:lang 属性为特定语言定义字符串。为属性指定语言/语言环境,例如<value xml:lang="en-US">string</value>。
Target 字符串型。为命令 URL 指定目标框架。通常,加载项会使用以下某个预设的目标名称:
_top 返回调用的框架的顶层框架,它是在向上遍历分层时 isTop() 返回 true 的第一个框架。
_parent 返回框架分层中位于次高的框架。
_self 返回框架本身,其名称与空白目标框架的名称相同。也就是说,您正在搜索一个已经存在而且合法的框架。
_blank 创建新的顶层框架,其父级框架是桌面框架。
Context 字符串型。服务名称的列表,以逗号分隔,指定加载项菜单功能应在哪个上下文中出现。空的 Context 表示功能应该在所有上下文中出现。StarSuite 应用程序模块使用以下服务名称:
Writer:com.sun.star.text.TextDocument
Spreadsheet:com.sun.star.sheet.SpreadsheetDocument
Presentation:com.sun.star.presentation.PresentationDocument
Draw:com.sun.star.drawing.DrawingDocument
Formula:com.sun.star.formula.FormulaProperties
Chart:com.sun.star.chart.ChartDocument
Bibliography:com.sun.star.frame.Bibliography
加载项的上下文服务名称由绑定到框架的模型的服务名称确定,它与 UI 元素(工具栏、菜单栏等)相关。因此,Writer 模型的服务名称是com.sun.star.text.TextDocument。这表示,上下文名称被绑定到应用程序模块的模型。如果开发者实现具有模型的新桌面组件,可以将其服务名称作为加载项 UI 项的上
下文。
Submenu 一组MenuItem 条目。可选,用于定义菜单条目的子菜单。
以上是配置一个插件大致需要编写的关于用户界面扩展文件,以及对其的解释,大家可以参考看看。关于脚本调用的配置文件以及讲解,将在下一次随笔中讲述。
本文依据《创作共用约定》之“署名-禁止派生-非商业用途”方式发布,即你可以免费拷贝、分发、呈现和表演当前作品,但是必须基于以下条款:
对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款。
在得到作者的明确允许下,这里的某些条款可以放弃。