Desarrollo/Desarrollo de extensiones

    From The Document Foundation Wiki
    This page is a translated version of the page Development/Extension Development and the translation is 100% complete.
    Other languages:

    Introducción

    Las extensiones hacen posible ampliar la funcionalidad de LibreOffice sin modificar el propio código fuente de LibreOffice. LibreOffice tiene tres clases de extensiones.

    • Si sabe programar, puede usar varios lenguajes para desarrollar extensiones de LibreOffice usando la API de componentes UNO. Los lenguajes de programación admitidos son Basic, Python, JavaScript, Java, BeanShell y C++. El código y los datos se empaquetan como archivos .oxt y se pueden compartir en el repositorio de extensiones de LibreOffice.
    Las extensiones son la forma preferida por los administradores de sistemas para modificar la configuración predeterminada. Una guía para desarrollar extensiones de configuración está disponible en formato PDF o ODT. Una muestra de Extensión de configuración OXT acompaña a la guía.
    • También hay extensiones especiales de Calc conocidas como Complementos (Add-Ins) que agregan funciones de hoja de cálculo a Calc. Como componentes UNO, puede proporcionar nuevas implementaciones de la funcionalidad existente o componentes especializados como Calc Add-Ins, Add-Ons, DataPilots, Chart Add-Ins o componentes lingüísticos: Corrector ortográfico, Hyphenator o Thesaurus (vea la Documentación de Add-Ins).

    Acerca de las plantillas

    Puede que haya notado que en algunos ejemplos las plantillas se ponen en una carpeta llamada "templates", mientras que en algunos otros ejemplos las plantillas se ponen 3n una carpeta llamada "template". No se confunda con estos nombres. Ambos funcionarán siempre que usted especifique el nombre correcto que haya usado en el archivo Paths.xcu. Tenga en cuenta que el archivo Paths.xcu, el "%origin%" como en <node oor:name="%origin%/template" oor:op="fuse"/> se refiere a la localización de la extensión una vez que ha sido instalada. Por ejemplo:

    file:///<path-to-your-libreoffice-installation-or-config>/user/uno_packages/cache/uno_packages/lu168780135zflp.tmp_/<extenion_filename>.oxt

    Así, "template" como en <node oor:name="%origin%/template" oor:op="fuse"/> debería ser la ruta relativa a la raíz de su extensión descomprimida. Esto significa que si coloca las plantillas reales en una carpeta llamada "my_templates" al organizar la estructura de la extensión, entonces en Paths.xcu debería ser <node oor:name="%origin%/my_templates" oor:op="fuse"/>.

    Además, tenga en cuenta que "Template" como se muestra en <node oor:name="Template" oor:op="fuse" oor:mandatory="true"> en el archivo Paths.xcu, indica que esta configuración de ruta es para la categoría "Template", que se define en unotools/source/config/pathoptions.cxx (junto con Addin, AutoCorrect, AutoText, Dictionary, Gallery. etc)


    Recursos

    En un esfuerzo por no duplicar la información, puede consultar la documentación de OpenOffice, vea por ejemplo la versión de esta página en la wiki de OpenOffice. Todavía son en gran medida compatibles, pero se debe realizar una verificación adicional ya que LibreOffice avanza rápidamente (consulte las Notas de compatibilidad a continuación).

    Para una descripción completa de las extensiones y el archivo .oxt, vea la Guía del desarrollador.

    Los recursos actuales se están consolidando actualmente en las páginas de ayuda de LibreOffice.

    Antes de empezar, debe instalar el SDK.

    Tutoriales y ejemplos

    Para comenzar, puede echar un vistazo a los tutoriales o el código fuente de la extensiones de ejemplo más adelante. El código fuente de LibreOffice también tiene una colección de ejemplos del SDK. Otra forma de encontrar ejemplos es descomprimir el archivo .oxt de una extensión existente e inspeccionar su contenido.

    Basic

    Java

    • Starter Extension Extensión de inicio para ser utilizada como base para extensiones propias
    • Sidebar Extension Similar a la extensión de inicio, pero para crear una barra lateral propia
    • NOA-libre es un envoltorio de Java liviano orientado a objetos alrededor de la API de UNO de LibreOffice, que proporciona una abstracción de alto nivel de muchas interfaces de UNO.
    • UNOHelper ofrece funciones auxiliares para trabajar con la API de UNO. Envuelve las funciones de uso común de la API de UNO para un uso más fácil.
    • Sistema de plantillas de LibreOffice (LOTS) es una gran extensión de Java con funciones mejoradas de plantillas, formularios y autotexto.


    Complemento de Eclipse

    TDF ofrece el complemento de Eclipse LOEclipse que ayuda a desarrollar extensiones/componentes de LibreOffice en Java. Puede encontrarlo en Eclipse Marketplace.

    Python

    Consulte también las páginas en Desarrollo de extensiones de Python, Guía de macros Python y Diseño y desarrolo de aplicaciones Python.

    C++

    Ejemplos sin código

    • El repositorio de github de Andreas Mantke extensionbook contiene una colección de ejemplos sin código explicando como empaquetar un conjunto de colores, plantillas, texto automático y galerías en una extensión.
    • El repositorio de github de Kevin Suo lo_l10n_templates es un ejemplo de como convertir un conjunto de plantillas en una extensión de LibreOffice localizada.

    Notas de compatibilidad

    Los desarrolladores de LibreOffice son conservadores cuando se trata de cambios en la API pública (UNO) y, por lo tanto, la mayoría de las extensiones escritas para OpenOffice.org o Apache OpenOffice seguirán funcionando con LibreOffice. Si se producen cambios, se indican en ReleaseNotes (cambios de API en 4.2, 4.1 y 4.0).

    • La dependencia OpenOffice.org-minimal-version establece que una extensión funciona en las versiones de OpenOffice.org especificadas, así como en las versiones de LibreOffice que corresponden al menos a la versión de referencia de OpenOffice.org especificada. Todas las versiones de LibreOffice hasta la 4.2.3 informan que corresponden a la versión de referencia de OpenOffice.org 3.4, mientras que las versiones de LibreOffice desde 4.2.4 informan que corresponden a la versión de referencia de OpenOffice.org 4.1.
      - Usando esta dependencia, la extensión declara que solo usa funciones que se encuentran en la versión de referencia de OpenOffice.org especificada (y que, en consecuencia, funciona en todos los productos, no solo para OpenOffice.org en sí).
    • Si una extensión utiliza funciones específicas de LibreOffice, a partir de LibreOffice 3.5 puede especificar una nueva dependencia LibreOffice-minimal-version con el espacio de nombres http://libreoffice.org/extensions/description/2011. Su atributo value requerido (sin espacio de nombres) especifica la versión de LibreOffice con soporte mínimo; no debe contener un número de versión micro y no debe ser inferior a 3.5.
      - El atributo name generalmente requerido (con el espacio de nombres http://openoffice.org/extensions/description/2006) debe ser “LibreOffice version” (donde version es el valor de versión dado).
      - Se pueden encontrar ejemplos en core/tree/desktop/test/deployment/dependencies: loversion35.oxt o loversion36.oxt.
    • Si una extensión está destinada a una versión específica de LibreOffice, a partir de LibreOffice 7.0 puede especificar una nueva dependencia LibreOffice-maximal-version con el espacio de nombres http://libreoffice.org/extensions/description/2011 además de la dependencia LibreOffice-minimal-version.
      - Esto debe ser raramente indicado.