Uso de cookies

Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continúa navegando, consideramos que acepta su uso. Para obtener más información o bien conocer cómo cambiar la configuración lea nuestra Política de cookies

Revisión a fecha de 13:10 22 jun 2016; Salva (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)

Cómo crear una extensión con barra de herramientas y menús para Apache OpenOffice

Señal aviso.png

Se han introducido cambios a la hora de definir barras de herramientas en la nueva versión Apache OpenOffice 4.0.0, cambios que hemos reflejado en este tutorial

Como dijimos en el anterior caso que estudiamos:

Señal Nota.png

Una extensión no es más que un conjunto de carpetas y archivos comprimidos en formato zip, al que se le ha cambiado la extensión .zip por .oxt

Para aprender cómo está hecha una extensión lo mejor que puedes hacer es descargar una y destriparla. Dado que es un sencillo y simple archivo comprimido en formato zip, no te será difícil. En este tutorial vamos a utilizar como base la extensión ooEs Palette.

Descárgala en tu equipo, seleccionando Guardar en lugar de Ejecutar cuando tu navegador te lo pregunte.

Crear extension openoffice 001.png
Ejemplo con Mozilla Firefox
Crear extension openoffice 002.png
Ejemplo con Internet Explorer

Vamos a analizar qué contiene cada uno de esos ingredientes necesarios para cocinar con éxito esta receta.

Señal Nota.png

Dado que muchos apartados son comunes a los del tema Cómo crear una extensión tipo ClipArt a lo largo de este tutorial agregaremos los enlaces a esos apartados

Los ingredientes

Crear una carpeta que contiene la extensión

El primer paso que tendrás que dar es sencillo. Crea una carpeta con el nombre que deseas dar a la extensión. En ella almacenaremos todos los archivos que se precisan para crear la extensión.

Un lugar recomendable puede ser el propio Escritorio, o la carpeta Mis Documentos, para que sea de fácil acceso.

Eso sí, el nombre de la carpeta debe empezar por una letra de la a a la z, y el resto del nombre puede contener letras, números y el signo de subrayado. Ni espacios ni ningún otro signo o símbolo deberás utilizar (tampoco la ñ o la ç), pues es muy probable que más tarde no puedas subir la extensión a la web oficial manteniendo el mismo nombre.

Si seguiste nuestro consejo y has descomprimido la extensión de ejemplo ooEs Palette verás que todo el contenido de la extensión se encuentra dentro de la carpeta ooEsPalette.

El código OOoBasic de la extensión

Nuestra extensión incorpora un código creado en lenguaje OOoBasic desde el mismo Apache OpenOffice. No vamos a entrar en detalles con la parte del código, pues no es ese el objetivo de este tutorial, pero sí explicaremos todo aquello que concierne a la creación de la misma.

El código OOoBasic deberá estar integrado en una Biblioteca que contendrá todos los módulos y diálogos necesarios para que funcione la extensión. Las Bibliotecas propias creadas con el IDE Basic se encuentran almacenadas (salvo orden en contrario) en la carpeta del perfil del usuario, en una subcarpeta llamada basic.

Deberás copiar por completo la carpeta de la biblioteca dentro de la carpeta de tu extensión, a nivel raíz.

Si no sabes cómo acceder a la carpeta del perfil de usuario, dado que es una carpeta oculta del sistema:

  • Si eres usuario de Windows consulta este sencillo truco.
  • Si eres usuario de GNU/Linux, desde tu aplicación para recorrer carpetas (por ejemplo, Nautilus), activa Mostrar carpetas ocultas (generalmente Ctrl+H) y accede a la carpeta /home/<nombre del usuario>/.openoffice.org/3/user
  • Si eres usuario de Mac... podrás encontrarla en /Users/<nombre del usuario>/Library/Application Support/OpenOffice.org/3/user

Dentro de la carpeta basic encontrarás tu biblioteca. En nuestro ejemplo, la Biblioteca se llama ooEsPalette, y hemos copiado la carpeta completa dentro de la carpeta de la extensión, a nivel raíz. Acompañando al código hemos agregado unas paletas de colores extra, que copiamos también a nivel raíz en la carpeta de la extensión, dentro de una subcarpeta llamada palettes.

A partir de ahora tendrás que estar muy atento y ser muy cuidadoso, pues un error en cualquier punto, una coma mal puesta, borrar accidentalmente una sola letra o escribir una de más puede dar al traste con horas y horas de trabajo. Una técnica recomendable para minimizar problemas es utilizar otra extensión ya creada, y sustituir en ella sólo aquellos valores que la convertirán en tu propia extensión.

Contenido de description.xml

En la carpeta de nuestra extensión crearemos un nuevo archivo vacío que llamaremos description.xml, todo en minúsculas. Este documento puede ser editado con cualquier editor de texto plano, como por ejemplo el bloc de notas (para los de Windows) o el gEdit (para los de GNU/Linux). Si eres de los primeros, deberías probar el Notepad++. No es conveniente editarlo con Writer, Word, o cualquier editor de textos con formato.

Este archivo contiene la declaración de los elementos que se mostrarán al usuario al instalar la extensión en el administrador de extensiones.

Empieza por este código, que puedes copiar y pegar en tu documento:

<?xml version='1.0' encoding='UTF-8'?>
<description
 xmlns="http://openoffice.org/extensions/description/2006"
 xmlns:dep="http://openoffice.org/extensions/description/2006"
 xmlns:xlink="http://www.w3.org/1999/xlink">

y termina por este otro

</description>

Se utiliza lo que se llama un lenguaje de marcas o lenguaje de etiquetas, de forma que:

  • El nombre de cada comando viene encerrado entre un par de símbolos < >.
  • Cada comando está formado por un par de etiquetas que encierran un valor, con este formato: <comando>valor</comando>
  • Es posible que se utilice el formato reducido <comando valor />.
  • Si deseamos agregar un comentario, deberemos encerrarlo entre los códigos <!-- y -->

Entre estos dos bloques se insertarán las diferentes secciones que definen la información mostrada al instalar la extensión.

Sección version

Declara la versión de la extensión.

   <version value="1.0.0"/>

Como ves, hemos un comando reducido, indicando que la versión es la 1.0.0

Sección identifier

Declara el identificador interno de nuestra extensión

   <identifier value="open-office.ES.ooEsPalette"/>

Hemos utilizado de nuevo un comando reducido. Este identificador interno lo utilizará AOO para identificar tu extensión, y es necesario si en el código OOoBasic debes acceder a información de la misma (por ejemplo, para averiguar en qué carpeta se ha instalado la extensión). Debe ser un nombre único, así que puedes utilizar, por ejemplo, las iniciales de tu nombre, o la marca comercial de tu empresa, seguidas de un punto y el nombre de la extensión. No se deben utilizar espacios, ni creo que acepte ñ, ç, caracteres acentuados ni símbolos especiales. Sólo letras a-z y A-Z, números, guión normal y guión de subrayado.

Sección platform

Siempre he copiado, simplemente, esta línea. No he investigado más :(

  <platform value="all" />

Sección dependencies

Declara la versión mínima necesaria para que se ejecute correctamente la extensión

   <dependencies>
      <OpenOffice.org-minimal-version 
        xmlns:d="http://openoffice.org/extensions/description/2006" 
        d:name="OpenOffice.org 3.1.0" value="3.1.0"/>
   </dependencies>

Sección publisher

Declara el nombre de quien publica la extensión. En este ejemplo haremos que se muestre un hiperenlace

  <publisher>
    <name xlink:href="http://open-office.es">http://open-office.es</name>
  </publisher>

Más ejemplos en Cómo crear una extensión tipo ClipArt - Sección publisher.

Sección display-name

Declara el nombre de la extensión en el administrador de extensiones:

   <display-name>
      <name lang="en">ooEs Palette</name>
   </display-name>

Seccion extension-description

Declara el nombre y carpeta donde se encuentran los archivos con la descripción de nuestra extensión.

   <extension-description>
      <src xlink:href="description/desc_en.txt" lang="en" />
      <src xlink:href="description/desc_es.txt" lang="es" />		
   </extension-description>

Más información en Cómo crear una extensión tipo ClipArt - Sección extension-description.

Sección icon

Declara el icono que se presentará en el administrador de extensiones.

   <icon>
      <default xlink:href="icon.png" />
   </icon>

Más información en Cómo crear una extensión tipo ClipArt - Sección icon.

Sección license

Declara la información sobre la licencia.

   <registration>
      <simple-license  accept-by="admin" 
         default-license-id="ID0" 
         suppress-on-update="true" >
         <license-text xlink:href="license/license_en.txt" 
            lang="en" license-id="ID0" />
         <license-text xlink:href="license/license_es.txt" 
            lang="es" license-id="ID0" />
      </simple-license>
   </registration>

Más información en Cómo crear una extensión tipo ClipArt - Sección license.

Pues este paso ya está finalizado. Verifica que todo es correcto, que no hay nada de más, ni nada de menos, y guarda el archivo description.xml en la carpeta de la extensión a nivel raíz.

El icono

Ver Cómo crear una extensión tipo ClipArt - El icono.

Contenido de manifest.xml hasta 3.4.1

Si el archivo description.xml declara las opciones que se presentarán al usuario al instalar la extensión, manifest.xml declara los archivos que definen qué nuevos elementos se agregarán a nuestro perfil personal en la instalación de AOO.

Muy importante: el archivo manifest.xml debe estar contenido en una carpeta llamada META-INF de forma obligatoria. El administrador de extensiones busca ese archivo en esa carpeta, y si no lo encuentra, se queda colgado o no instala correctamente la extensión.

Señal Nota.png

El archivo manifest.xml debe estar obligatoriamente almacenado en una carpeta de nombre META-INF

Cuando se instala una extensión se pueden agregar nuevos menús, opciones, barras de herramientas, carpetas agregadas o que se fusionan con existentes, etc. En nuestro caso vamos a agregar una barra de herramientas con un sólo botón, y una entrada en el menú Herramientas > Complementos (Add-ons) de la suite.

La declaración de las barras de herramientas y menús se realizará en un archivo denominado Addons.xcu.

Por otra parte, en las versiones 3.x.x de AOO es necesario declarar en un archivo separado el nombre de las barras de herramientas; si no lo declaramos, AOO le asignará un nombre neutro, muy poco estético. En realidad, deberemos crear un archivo para cada una de las aplicaciones de la suite que mostrarán barras de herramientas, cuyo contenido será casi idéntico. Estos archivos serán guardados dentro de una subcarpeta de nombre UI que a su vez estará dentro de otra subcarpeta, de nombre Office, almacenada a nivel raíz de la carpeta de la extensión.

Nuestra extensión también agrega código a nuestra suite. Debemos también declarar en este archivo qué carpeta contiene la o las librerías a instalar.

Resumiendo, en manifest.xml debemos de indicar donde están almacenados todos esos archivos declarativos y las librerías de código, y de qué tipo de elemento se trata en cada caso.

El contenido necesario para nuestra extensión es el que mostramos a continuación:

<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
 <manifest:file-entry
   manifest:full-path="ooEsPalette/" 
   manifest:media-type="application/vnd.sun.star.basic-library"/>
 <manifest:file-entry
   manifest:full-path="description/desc_es.txt" 
   manifest:media-type="application/vnd.sun.star.package-bundle-description"/>
 <manifest:file-entry
   manifest:full-path="Addons.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
 <manifest:file-entry
   manifest:full-path="Office/UI/BasicIDEWindowState.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
 <manifest:file-entry
   manifest:full-path="Office/UI/BaseWindowState.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
 <manifest:file-entry
   manifest:full-path="Office/UI/CalcWindowState.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
 <manifest:file-entry
   manifest:full-path="Office/UI/DrawWindowState.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
 <manifest:file-entry
   manifest:full-path="Office/UI/ImpressWindowState.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
 <manifest:file-entry
   manifest:full-path="Office/UI/MathWindowState.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
 <manifest:file-entry
   manifest:full-path="Office/UI/StartModuleWindowState.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
 <manifest:file-entry
   manifest:full-path="Office/UI/WriterWindowState.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
</manifest:manifest>

Se establece una única sección llamada manifest:manifest, que contiene varias líneas con un comando reducido manifest:file-entry (que artificialmente hemos dividido en tres líneas) y cada uno de ellos declara dos valores:

  • cómo se llama y dónde está el archivo que contiene la información sobre el elemento mediante manifest:full-path, y
  • qué tipo de elemento se va a crear, mediante manifest:media-type

En nuestro caso:

  • Declaramos la biblioteca de código, almacenada en la carpeta ooEsPalette a nivel raiz, y declaramos que es de tipo "application/vnd.sun.star.basic-library, o sea, una librería basic.
  • Declaramos un archivo con la descripción en español, almacenada en la subcarpeta description, y declaramos que es de tipo "application/vnd.sun.star.package-bundle-description, o sea, la descripción de la extensión.
  • Declaramos los elementos de tipo "application/vnd.sun.star.configuration-data:
  • El archivo Addons.xcu que contiene la declaración de la barra de herramientas y de los menús a agregar, almacenado a nivel raiz.
  • El archivo BasicIDEWindowState.xcu que contiene la declaración del nombre de la barra de herramientas cuando se muestre en el IDE Basic, almacenado en la subcarpeta Office/UI. Si no se va a mostrar en el IDE Basic, no sería necesario este archivo ni esta entrada. El contenido de este archivo lo veremos más adelante, en el apartado Títulos de las barras de herramientas.
  • El archivo BaseWindowState.xcu, ídem para Base.
  • El archivo CalcWindowState.xcu, ídem para Calc.
  • El archivo DrawWindowState.xcu, ídem para Draw.
  • El archivo ImpressWindowState.xcu, ídem para Impress.
  • El archivo MathWindowState.xcu, ídem para Math.
  • El archivo StartModuleWindowState.xcu, ídem para la pantalla inicial de AOO.
  • El archivo WriterWindowState.xcu, ídem para Writer.

En nuestro ejemplo, en realidad las paletas de colores no se muestran en Math, Base, el IDE Basic ni tampoco en la pantalla inicial de AOO, pero lo hemos agregado por si acaso en un futuro se mostrasen. Actualmente podríamos haber prescindido de estas entradas y de esos archivos declarativos.

Contenido de manifest.xml desde 4.0.0

Apache OpenOffice 4.0.0 ha modificado la forma de declarar las barras de herramientas en el archivo Addons.xcu, lo que hace innecesaria la creación y declaración de los archivos WriterWindowState.xcu, CalcWindowState.xcu, etc. que se almacenaban en la carpeta Office/UI de la extensión.

Resumiendo, manifest.xml queda sensiblemente reducido y simplificado, como se muestra en el siguiente ejemplo:

<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
 <manifest:file-entry
   manifest:full-path="ooEsPalette/" 
   manifest:media-type="application/vnd.sun.star.basic-library"/>
 <manifest:file-entry
   manifest:full-path="description/desc_es.txt" 
   manifest:media-type="application/vnd.sun.star.package-bundle-description"/>
 <manifest:file-entry
   manifest:full-path="Addons.xcu" 
   manifest:media-type="application/vnd.sun.star.configuration-data"/>
 </manifest:manifest>

Contenido de Addons.xcu hasta 3.4.1

Este archivo se suele situar a nivel raíz en la carpeta de la extensión, pero realmente puede estar almacenado en cualquier subcarpeta, y no es obligatorio utilizar este nombre, pero sí usar la extensión xcu. El nombre de Addons es porque lo que define este archivo es una modificación a realizar en los componentes (barras de herramientas y menús) del perfil del usuario, en inglés add-ons. Por ello, lo mejor es dejarlo tal y como está, ya que también es lo más habitual. En caso de cambiar su nombre y localización, deberemos declararlo correctamente en el archivo manifest.xlm.

Veamos su contenido.

<?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="OfficeToolBar">
      <node oor:name="ooEsPalette.OfficeToolBar" oor:op="replace">
         <node oor:name="m01" oor:op="replace">
            <prop oor:name="Context" oor:type="xs:string">
               <value>com.sun.star.text.TextDocument,
                com.sun.star.sheet.SpreadsheetDocument,
                com.sun.star.drawing.DrawingDocument,
                com.sun.star.presentation.PresentationDocument,
                com.sun.star.script.BasicIDE</value>
            </prop>
            <prop oor:name="URL" oor:type="xs:string">
               <value>vnd.sun.star.script:
                 ooEsPalette.ooEsPalette.ooEsP_Cambiar_Paleta
                 ?language=Basic&amp;location=application</value>
            </prop>
            <prop oor:name="ImageIdentifier" oor:type="xs:string">
               <value>%origin%/images/icon</value>
            </prop>
            <prop oor:name="Title" oor:type="xs:string">
               <value lang="en">Change color palette</value>
               <value lang="es">Cambiar la paleta de colores</value>                  
            </prop>
            <prop oor:name="Target" oor:type="xs:string">
               <value>_self</value>
            </prop>
         </node>
      </node>
   </node>
   <node oor:name="AddonMenu">
      <node oor:name="ooEsPalette.AddonMenu.m01" oor:op="replace">
         <prop oor:name="Context" oor:type="xs:string">
            <value>com.sun.star.text.TextDocument,
             com.sun.star.sheet.SpreadsheetDocument,
             com.sun.star.drawing.DrawingDocument,
             com.sun.star.presentation.PresentationDocument,
             com.sun.star.script.BasicIDE</value>
         </prop>
         <prop oor:name="URL" oor:type="xs:string">
            <value>vnd.sun.star.script:
             ooEsPalette.ooEsPalette.ooEsP_Cambiar_Paleta
             ?language=Basic&amp;location=application</value>
         </prop>
         <prop oor:name="ImageIdentifier" oor:type="xs:string">
            <value>%origin%/images/icon</value>
         </prop>
         <prop oor:name="Title" oor:type="xs:string">
            <value lang="en">Change color palette</value>
            <value lang="es">Cambiar la paleta de colores</value>      
         </prop>
         <prop oor:name="Target" oor:type="xs:string">
            <value>_self</value>
         </prop>
      </node>
   </node>   
</node>
</oor:component-data>

A la segunda línea le hemos agregado algunos saltos de línea para que resulte más legible, lo cual es admitido. En cambio, por necesidades de esta wiki, hemos agregado artificialmente saltos de línea en el código al declarar los valores de las propiedades Context y URL. El texto contenido entre las etiquetas <value> y </value> de estas propiedades debe formar una única línea, sin espacios en blanco.

Ni que decir que es absolutamente necesario respetar las mayúsculas y minúsculas en todos los nombres que contiene este archivo. No es lo mismo ToolBar que toolbar ni que Toolbar, y un error tonto puede dar al traste con horas de trabajo.

Un adecuado indentado (o sangrado) de las líneas nos permite identificar mejor los diversos elementos que declaramos.

En nuestro ejemplo declaramos una modificación en las rutas del perfil del usuario Addons, nodo AddonUI, que es el camino que nos permite agregar las barras de herramientas y opciones de menú de nuestra extensión. El nodo AddonUI contendrá las declaraciones tanto de barras como de menús.

Declarar la barra de herramientas

Las barras de herramientas se declaran utilizando un nodo llamado OfficeToolBar, siguiendo el siguiente esquema:

  • Se le agrega un nuevo nodo, que define la barra de herramientas, que reemplazará a cualquier nodo del mismo nombre que existiese previamente, llamado ooEsPalette.OfficeToolBar, donde ooEsPalette es el nombre interno que queremos asignarle para distinguirlo de otras posibles barras de herramientas. Salvo este nombre, el resto del texto debe ser completamente respetado, sin modificaciones, a la hora de crear tu extensión. El nombre que se mostrará al usuario lo definiremos en otro archivo, como veremos más adelante.

Este nodo contiene a su vez otro que define el botón, de nombre m01, que reemplazará a cualquiera con el mismo nombre ya existente, con las siguientes propiedades:

  • Propiedad Context que define en qué contextos se mostrará. En nuestro caso hemos incluido los contextos com.sun.star.text.TextDocument (documento de texto), com.sun.star.sheet.SpreadsheetDocument (hoja de cálculo), com.sun.star.drawing.DrawingDocument (dibujo de Draw), com.sun.star.presentation.PresentationDocument (presentación de Impress) y com.sun.star.script.BasicIDE (editor IDE de Basic).
  • Propiedad URL que define el nombre de la subrutina que se ejecutará al hacer clic sobre el mismo. Se debe indicar la ruta completa hasta la subrutina, teniendo en cuenta la biblioteca y el módulo en la que se encuentra. En nuestro caso, llamamos a la subrutina ooEsP_Cambiar_Paleta, que se encuentra en la biblioteca ooEsPalette, dentro de un módulo que hemos llamado ooEsPalette.
  • Propiedad ImageIdentifier que define el nombre y carpeta del icono del botón. Si, como en nuestro ejemplo, has almacenado los iconos de los botones de la barra de herramientas en una subcarpeta llamada images a nivel raíz de la carpeta de la extensión, y el icono se llama aceptar.bmp, el valor de esta propiedad será %origin%/images/aceptar. Como ves, no se indica la extensión. Más adelante hablaremos de los #Iconos para la barra de herramientas y las opciones del menú.
  • Propiedad Title que define el texto emergente del botón. Como ves en el ejemplo, es fácil definir el texto emergente del botón para distintos idiomas.
  • Propiedad Target que debes dejar tal y como está.

Y con esto hemos declarado todos los elementos del botón. Si precisas crear más botones, repite el proceso para el botón m02, m03, m34, ...

         <node oor:name="m01" oor:op="replace">
            <prop .....
            </prop>
         </node>
         <node oor:name="m02" oor:op="replace">
            <prop .....
            </prop>
         </node>
         <node oor:name="m03" oor:op="replace">
            <prop .....
            </prop>
         </node>

El orden de los botones vendrá definido por el nombre con que los bautizamos, no con el que los declaramos. Si declaras varios botones cxx, bxx y axx en la barra de herramientas se mostrarán primero los axx, seguidos de los bxx y por último los cxx. El botón a43 se mostrará delante del a67, aunque los declaremos en otro orden.

Si precisas declarar otra barra de herramientas, repite el proceso declarando un nombre distinto y una secuencia distinta de botones para cada barra:

      <node oor:name="ooEsPalette.OfficeToolBar" oor:op="replace">
         <node oor:name="m01" oor:op="replace">
            <prop .....
            </prop>
         </node>
         <node oor:name="m02" oor:op="replace">
            <prop .....
            </prop>
         </node>
      </node>
      <node oor:name="OtraBarra.OfficeToolBar" oor:op="replace">
         <node oor:name="p01" oor:op="replace">
            <prop .....
            </prop>
         </node>
         <node oor:name="p02" oor:op="replace">
            <prop .....
            </prop>
         </node>
      </node>

Opciones del menú

En nuestro ejemplo declaramos también una entrada en el menú Herramientas > Accesorios (Add-ons)

Integrado dentro del nodo AddonUI declaramos un nodo de nombre AddonMenu.

Por cada opción que queramos mostrar en el menú declaramos un nombre que reemplazará a cualquiera otro previamente existente del mismo nombre. En nuestro caso hemos bautizado el menú como ooEsPalette.AddonMenu.m01.

Este nodo dispone de las siguiente propiedades, idénticas a las comentadas anteriormente para la barra de herramientas:

  • Propiedad Context.
  • Propiedad URL.
  • Propiedad ImageIdentifier.
  • Propiedad Title.
  • Propiedad Target.

Si queremos declarar dos o más opciones en el menú, debemos seguir el siguiente esquema:

   <node oor:name="AddonMenu">
      <node oor:name="ooEsPalette.AddonMenu.m01" oor:op="replace">
         <prop ... propiedades de la opción del menú
         </prop>
      </node>
      <node oor:name="ooEsPalette.AddonMenu.m02" oor:op="replace">
         <prop ... propiedades de la opción del menú
         </prop>
      </node>
      .... más opciones
      <node oor:name="ooEsPalette.AddonMenu.m99" oor:op="replace">
         <prop ... propiedades de la opción del menú
         </prop>
      </node>
   </node>

Contenido de Addons.xcu desde 4.0.0

En la nueva versión 4.0.0 de Apache OpenOffice se han introducido cambios en el archivo Addons.xcu. Estos cambios permiten definir el nombre de la barra de herramientas desde este mismo archivo, si ser necesario recurrir a otros archivos para tal fin.

Mostramos el nuevo archivo Addons.xcu. Hemos indicado con tres puntos suspensivos aquellos bloques de código que son idénticos al anterior:

...
  <node oor:name="OfficeToolBar">
    <node oor:name="ooEsPalette.ToolBar" oor:op="replace">
      <prop oor:name="Title" oor:type="xs:string" oor:localized="true">
         <value>ooEs Palette</value>
      </prop>
      <node oor:name="ToolBarItems">    
        ...
      </node>
 
    </node>
  </node>
...

Básicamente el contenido es el mismo, salvo los siguientes cambios y añadidos:

  • CAMBIO: El nodo que define el objeto barra de herramientas en AOO 4.0 pasa de llamarse OfficeToolBar a ToolBar:
 <node oor:name="ooEsPalette.ToolBar" oor:op="replace">
  • AÑADIDO: Justo a continuación se agrega la propiedad que define el título de la barra de herramientas
 <prop oor:name="Title" oor:type="xs:string" oor:localized="true">
    <value>ooEs Palette</value>
 </prop>
  • AÑADIDO: Tras la propiedad se inicia un nuevo nodo que engloba los botones de la barra de herramientas
 <node oor:name="ToolBarItems">
    ... aquí se definen los distintos botones del mismo modo que en 3.4.1 y anteriores
 </node>

El sistema adoptado por AOO 4.0.0 hace innecesarios los archivos WriterWindowState.xcu, CalcWindowState.xcu, etc.

La carpeta description

Ver Cómo crear una extensión tipo ClipArt - La carpeta description

La licencia

Ver Cómo crear una extensión tipo ClipArt - La licencia

Títulos de las barras de herramientas

Señal truco 96.png
¡Truco!

Si estás preparando una extensión para Apache OpenOffice 4.0.0 y posteriores puedes saltarte este apartado

Como hemos comentado anteriormente, las versiones 3.x de AOO precisan que se definan los títulos de las barras de herramientas en un archivo distinto para cada aplicación en la que se muestran. En nuestro ejemplo lo hemos definido para todas las aplicaciones de AOO, se muestren o no en ellas la barra de herramientas de la extensión. Todos estos archivos son idénticos, salvo por dos detalles:

  • Su nombre, que debe ser distinto, evidentemente, para poder almacenarlos en la misma carpeta.
  • El nombre de la propiedad oor:name, que es distinto para cada aplicación.

Reproducimos a continuación el contenido del archivo WriterWindowState.xcu:

<?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="WriterWindowState"
 oor:package="org.openoffice.Office.UI">
   <node oor:name="UIElements">
      <node oor:name="States">
         <node oor:name="private:resource/toolbar/addon_ooEsPalette.OfficeToolBar" 
            oor:op="replace">
            <prop oor:name="UIName" oor:type="xs:string">
               <value>ooEsPalette</value>
            </prop>
         </node>
      </node>
   </node>
</oor:component-data>

El valor declarado en la propiedad UIName será el nombre que presentará la barra de herramientas de nuestra extensión cuando se ejecute en la aplicación correspondiente, en este caso, Writer.

La propiedad oor:Name en este caso será declarada como:

  • Para Writer, WriterWindowState.
  • Para Calc, CalcWindowState.
  • Para Impress, ImpressWindowState.
  • Para Draw, DrawWindowState.
  • Para Base, BaseWindowState.
  • Para Math, MathWindowState.
  • Para el IDE Basic, BasicIDEWindowState.
  • Para el menú inicial, StartModuleWindowState.

Lo recomendable es que el nombre de cada archivo coincida con el nombre de esta propiedad, porque es lo habitual. Todos los archivos deberán estar en la subcarpeta Office/UI, y así debe ser declarado en manifest.xml

Iconos para la barra de herramientas y las opciones del menú

En el archivo Addons.xcu hemos declarado botones y opciones de menú que poseen la propiedad ImageIdentifier, que define el icono que presentará el botón o la opción del menú.

Este icono debe ser obligatoriamente una imagen en formato .bmp, de tamaño 16x16 píxeles.

Lo habitual y más correcto es entregar además un icono de tamaño mayor, por si el usuario ha decidido configurar su AOO para mostrar iconos grandes en las barras de herramientas. El tamaño en este caso será de 26x26 píxeles.

En este caso los iconos deben nombrarse nombreDelIcono_16.bmp y nombreDelIcono_26.bmp. En la declaración del archivo Addons.xcu, como vimos anteriormente, se declara sólo %origin%/nombreDelIcono como propiedad ImageIdentifier, donde %origin% que es la variable que identificará la carpeta en que se instalará la extensión.

Lo habitual es almacenar estos iconos en una subcarpeta, de nombre por ejemplo, icons o images; en tal caso se indicará la ruta completa %origin%/images/nombreDelIcono. No se debe agregar ni el _16, ni el _26, ni el .bmp.

También se suele entregar una versión de cada icono en alto contraste, en el que los colores se reducen y los detalles se acentúan para que los usuarios con determinadas discapacidades visuales puedan distinguir los botones gracias a una resolución de color más conveniente a sus capacidades. Estos iconos se nombran añadiendo una letra h minúscula justo al final de su nombre y antes de la extensión. De esta forma, se crearán también los iconos nombreDelIcono_16h.bmp y nombreDelIcono_26h.bmp

¿Quieres publicar tu extensión en open-office.es?

Contacta con nosotros
Mavi.png
Modificada el 22 jun 2016 13:10.   Visitas: 8715