菜单

From Apache OpenOffice Wiki
Jump to: navigation, search


如上节所述,OpenOffice.org 支持两个菜单位置(加载项可以在这两个位置上集成):顶层菜单或工具 - 加载项子菜单。配置分支 org.openoffice.Office.Addons 为这两个位置提供了两个不同的节点:

用于定义加载项菜单的支持的 org.openoffice.Office.Addons
OfficeMenuBar 在此集合中定义的菜单将成为 OpenOffice.org 菜单栏中的顶层菜单。
AddonMenu 此集合中定义的菜单将成为弹出式菜单,是位于工具菜单底部的加载项菜单项

的一部分。


工具 - 加载项中的子菜单

要将“加载项”菜单项集成到工具 – 加载项菜单中,请使用 AddonMenu 集。AddonMenu 集由类型 MenuItem 的节点组成。MenuItem 节点类型还可用于顶层加载项菜单的子菜单。

模板 MenuItem 的属性
oor:name 字符串型。配置节点的名称。名称必须以 ASCII 字母字符开始。 该名称在 OfficeMenuBar 集中必须是唯一的。因此,必须使用诸如 org.openoffice.<developer>.<product>.<addon name>com.<company>.<product>.<addon name> 之类的模式以避免产生名称冲突。请记住,您的配置文件将合并到 OpenOffice.org 配置分支中。您不知道当前安装了哪些 加载项或者安装了多少加载项。因此子菜单的菜单项的节点名称在其子菜单中必须是唯一的。配置集不能保证其条目的顺序,因此您应该使用字符串 + 编号(如 “m1”)这样的模式作为排序条目时使用的名称。
URL 字符串型。指定用户激活菜单条目时应该分发的命令 URL。如果 MenuItem 是子菜单的标题,则该属性将被忽略。

要定义分隔符,您可以使用特殊的命令 URL "private:separator"。分隔符将忽略所有其他属性。

Title 字符串型。包含顶层菜单项的标题。 此属性支持本地化:默认字符串(在 OpenOffice.org 无法找到其当前语言的字符串定义时使用)使用不带属性的 value 元素。您可以使用 xml:lang 属性为特定语言定义字符串。为属性指定语言/语言环境,例如 <value xml:lang="en-US">string</value>
ImageIdentifier 字符串型。定义可选的图像 URL,该 URL 可以定位内部的 OpenOffice.org 图像或外部的用户自定义图像。内部图像 URL 的语法是:private:image/<number>,其中的 number 用于指定图像。


支持外部用户自定义的图像的方法是使用代表文件夹的占位符变量 %origin%,而 pkgchk 工具就将在该文件夹中安装组件。pkgchk 工具会用另一个占位符替换 %origin%,它将在运行时期间由 OpenOffice.org 替换为真正的安装文件夹。由于 OpenOffice.org 支持两个不同的配置文件夹(usershare),因此有必要利用此机制来确定组件的安装文件夹。


例如 URL %origin%/image 将被替换为类似如下所示的路径

 vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE/uno_packages/component.zip.1051610942/image 
 . 


占位符 vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE 将在运行时期间被替换为真正的路径。


由于 ImageIdentifier 属性只能保留一个 URL,而 OpenOffice.org 支持四种不同的图像(小/大图像,以及高对比度的小/大图像),因此需要使用一种命名模式来表示它们。OpenOffice.org 将 _16.bmp_26.bmp 添加到提供的 URL 以表示小图像和大图像。而添加 _16h.bmp_26h.bmp 以表示高对比度的图像。如果高对比度的图像被忽略,则使用普通图像。


OpenOffice.org 支持具有 1、4、8、16 和 24 位颜色深度的位图。洋红(颜色值 red=0xffff、 green=0x0000、blue=0xffff)用作透明色,表示绘制图像时使用显示的背景色,而不使用图像像素颜色。


要获得最佳效果,小图像的大小应为 16x16 像素,大图像为 26x26 像素。其他图像大小由 OpenOffice.org 自动缩放。如果未提供高对比度图像,OpenOffice.org 将在高对比度环境中使用普通图像。无效的图像将被忽略。OpenOffice.org 搜索图像时,此属性的优先级要高于 Images 集。

Target 字符串型。为命令 URL 指定目标框架。通常,加载项会使用以下某个预设的目标名称:

_top

返回调用的框架的顶层框架,它是在向上遍历分层时 isTop() 返回 true 的第一个框架。

_parent

返回框架分层中位于次高的框架。

_self

返回框架本身,其名称与空白目标框架的名称相同。也就是说,您正在搜索一个已经存在而且合法的框架。

_blank

创建新的顶层框架,其父级框架是桌面框架。
Context 字符串型。服务名称的列表,以逗号分隔,指定加载项菜单功能应在哪个上下文中出现。空的 Context 表示功能应该在所有上下文中出现。OpenOffice.org 应用程序模块使用以下服务名称:
  • 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 条目。可选,用于定义菜单条目的子菜单。


以下示例显示了指定一个标题为加载项 Function 1 的菜单项的配置文件。加载项的唯一代码名称是 org.openoffice.example.addon.example.function1

  <?xml version='1.0' encoding='UTF-8'?>
  <oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Addons" oor:package="org.openoffice.Office">
      <node oor:name="AddonUI">
          <node oor:name="AddonMenu">
              <node oor:name="org.openoffice.Office.addon.example.function1" oor:op="replace"> 
                  <prop oor:name="URL" oor:type="xs:string">
                      <value>org.openoffice.Office.addon.example:Function1</value> 
                  </prop>
                  <prop oor:name="ImageIdentifier" oor:type="xs:string"
                      <value/> 
                  </prop>
                  <prop oor:name="Title" oor:type="xs:string"> 
                      <value/> 
                      <value xml:lang="en-US">Add-On Function 1</value> 
                  </prop> 
                  <prop oor:name="Target" oor:type="xs:string"> 
                      <value>_self</value> 
                  </prop> 
                  <prop oor:name="Context" oor:type="xs:string"> 
                      <value>com.sun.star.text.TextDocument</value> 
                  </prop> 
              </node> 
          </node>
      </node>


顶层菜单

如果要将加载项集成到 OpenOffice.org 菜单栏,必须使用 OfficeMenuBar 集。OfficeMenuBar 集由类型 PopupMenu 的节点组成。

模板 PopupMenu 的属性
oor:name 字符串型。配置节点的名称。名称必须以 ASCII 字母字符开始。 该名称在 OfficeMenuBar 集中必须是唯一的。因此,必须使用诸如 org.openoffice.<developer>.<product>.<addon name>com.<company>.<product>.<addon name> 之类的模式以避免产生名称冲突。请记住,您的配置文件将合并到 OpenOffice.org 配置分支中。您不知道当前安装了哪些 加载项或安装了多少加载项。
Title 字符串型。包含顶层菜单项的标题。此属性支持本地化:默认字符串(在 OpenOffice.org 无法找到其当前语言的字符串定义时使用)使用不带属性的 value 元素。您可以使用 xml:lang 属性为特定语言定义字符串。为属性指定语言/语言环境,例如 <value xml:lang="en-US">string</value>
Context 字符串型。服务名称的列表,以逗号分隔,指定加载项菜单应在哪个上下文中出现。空的 Context 表示功能应该在所有上下文中出现。OpenOffice.org 应用程序模块使用以下服务名称:
  • 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 条目。定义顶层菜单的子菜单。它必须在顶层菜单上定义,否则整个菜单都会被忽略。如果需要如何定义子菜单的更多信息,请参阅 指导原则,其中介绍了 MenuItem 模板。


以下示例定义了一个标题为加载项示例的顶层菜单,其中包含一个标题为加载项 Function 1 的菜单项。菜单项具备一个自定义的图像,显示在菜单标题旁边。在此示例中,节点称为 oor:name="org.openoffice.example.addon"oor:name="m1"


不要忘记在自定义节点中指定 oor:op="replace" 属性。要向集或可扩展节点加入新节点,必须使用替换操作。因此,此操作的真正意义是“添加或替换”。动态属性只能添加一次,并被认为是强制性的,因此层合并期间,替换操作对它们始终意味着“添加”。如果需要配置及其文件格式的更多信息,请参阅 配置管理

  <?xml version='1.0' encoding='UTF-8'?>
  <oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Addons" oor:package="org.openoffice.Office">
      <node oor:name="AddonUI">
          <node oor:name="OfficeMenuBar">
              <node oor:name="org.openoffice.example.addon" oor:op="replace">
                  <prop oor:name="Title" oor:type="xs:string">
                      <value/>
                      <value xml:lang="en-US">Add-On example</value>
                      <value xml:lang=”de”>Add-On Beispiel</value>
                  </prop>
                  <prop oor:name="Context" oor:type="xs:string">
                      <value>com.sun.star.text.TextDocument</value>
                  </prop>
                  <node oor:name="Submenu">
                      <node oor:name="m1" oor:op="replace">
                          <prop oor:name="URL" oor:type="xs:string">
                              <value>org.openoffice.Office.addon.example:Function1</value>
                          </prop>
                          <prop oor:name="Title" oor:type="xs:string">
                              <value/>
                              <value xml:lang=”en-US”>Add-On Function 1</value>
                              <value xml:lang="de">Add-On Funktion 1</value>
                          </prop>
                          <prop oor:name="Target" oor:type="xs:string">
                              <value>_self</value>
                          </prop>
                      </node>
                  </node>
              </node>
          </node>
      </node>
  </oor:component-data>
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages