??? 這次接著說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 條目。可選,用于定義菜單條目的子菜單。
??? 以上是配置一個插件大致需要編寫的關于用戶界面擴展文件,以及對其的解釋,大家可以參考看看。關于腳本調用的配置文件以及講解,將在下一次隨筆中講述。
本文依據《創作共用約定》之“署名-禁止派生-非商業用途”方式發布,即你可以免費拷貝、分發、呈現和表演當前作品,但是必須基于以下條款:
對于任何二次使用或分發,你必須讓其他人明確當前作品的授權條款。
在得到作者的明確允許下,這里的某些條款可以放棄。