Jump to content

Développement / Développement des extensions

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

Introduction

Les extensions permettent d’étendre les fonctionnalités de LibreOffice sans modifier le code source lui-même. LibreOffice a trois types d’extension.

  • Si vous savez comment programmer, vous pouvez utiliser plusieurs langages pour développer une extension pour LibreOffice en utilisant l’API du composant UNO. L’API accepte les langages de programmation Basic, Python, JavaScript, Java, BeanShell et C++. Le code et les données sont regroupées dans des fichiers .oxt et peuvent être partagés sur le dépôt des extensions de LibreOffice.
Les extensions sont le moyen favori des sysadmin pour modifier les paramètres par défaut. Un guide (en anglais) sur le développement des extensions est valable aux formats PDF et ODT. Un exemple de configuration d’une extension OXT accompagne le guide.
  • Il y a aussi des extensions spécifiques à Calc appelées Add-ins qui ajoutent des fonctions de tableur à Calc. En tant que composant UNO, il est possible d’ajouter de nouvelles implémentations de fonctionnalités existantes ou des composants spécialisés tels que : Add-Ins Calc, Add-Ons, DataPilots, Add-Ins Chart ou des composants linguistiques : correcteur orthographique, césure ou thésaurus (voir la documentation, en anglais, sur les Add-Ins).

Au sujet des modèles

Vous avez peut-être pu constater qu’il y a quelques modèles dans le dossier appelé « modèles », quand d’autres exemples de modèles sont rangés dans le dossier « modèle ». Que cela ne vous embrouille pas. Les deux fonctionnent à condition que vous spécifiiez le nom correct que vous avez utilisé dans le fichier Paths.xcu. Noter que, dans le fichier Paths.xcu, la mention "%origin%" comme dans <node oor:name="%origin%/template" oor:op="fuse"/> se rapporte à l’emplacement de l’extension après son installation. Par exemple :

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

Ainsi, le « modèle (template) » tel que dans <node oor:name="%origin%/template" oor:op="fuse"/> doit être le chemin relatif à la racine de votre extension décompressée. Cela signifie que si vous placez les modèles réels dans un dossier nommé « my_templates » au moment où vous structurez l’extension, dans Paths.xcu, cela devrait être : <node oor:name="%origin%/my_templates" oor:op="fuse"/>.

Notez également que le « modèle (template) » tel que dans <node oor:name="Template" oor:op="fuse" oor:mandatory="true"> indiqué dans le fichier Paths.xcu indique que ce paramètre de chemin d’accès concerne la catégorie « Modèle », qui est définie dans unotools/source/config/pathoptions.cxx (avec Addin, AutoCorrect, AutoText, Dictionary, Gallery, etc.).


Ressources

Vous pouvez généralement vous référer à la documentation d’OpenOffice, mais LibreOffice évolue rapidement (voir les Notes de compatibilité ci-dessous), vous devrez donc utiliser notre documentation à jour. Elles restent encore généralement compatibles.

Pour une description complète des extensions et du format de fichier .oxt voir le Developer's guide.

Les ressources actuelles sont en cours de consolidation sur les pages d’aide de LibreOffice.

Avant de commencer, vous devez installer le SDK.

Tutoriels et exemples

Pour commencer, vous pouvez jeter un coup d’œil sur les tutoriels ou les exemples d’extensions ci-dessous. Le code source de LibreOffice contient également une collection d’exemples SDK. Une autre façon de trouver des exemples est de dézipper le fichier .oxt d’une extension existante et d’examiner son contenu.

Basic

Java

  • Starter Extension extension de démarrage à utiliser comme une base pour vos propres extensions.
  • Sidebar Extension similaire à Starter Extension, mais pour créer votre propre Sidebar Deck (Volet latéral ?).
  • NOA-libre est une surcouche légère orientée objet en Java de l'API LibreOffice UNO, fournissant une abstraction de plus haut niveau pour plusieurs interfaces UNO.
  • UNOHelper offre des fonctions d’aide pour utiliser l’API UNO. Il regroupe des fonctions couramment utilisées de l’API UNO pour un usage plus facile.
  • LibreOffice Template System (LOTS) est une importante extension Java avec des fonctionnalités améliorées pour les modèles, les formulaires et les autotextes.


Plugin Eclipse

TDF propose le Plugin Eclipse LOEclipse qui aide au développement des extensions/composants en Java. Vous pouvez le trouver sur Eclipse Marketplace.

Python

Voir aussi les pages (en anglais) sur le développement des extensions Python, le Guide des macros Python et Designing & Developing Python Applications.


C++

Exemples sans codage

  • Le dépôt GitHub extensionbook repository d’Andreas Mantke comporte une collection d’exemples sans codage qui expliquent comment empaqueter un ensemble de couleur, de modèles, d’autotexte et de galeries dans une extension. Le livre (en allemand) est valable en PDF.
  • Le dépôt GitHub de modèles lo_l10n_templates de Kevin Suo est un exemple de comment transformer un ensemble de modèles en extension et en le localisant (traduction et indication de la langue).


Notes de compatibilité

Les développeurs et les développeuses de LibreOffice sont assez conservateurs lorsqu’il s’agit de modifier l’API (UNO) publique, de fait, nombre d’extensions écrites pour OpenOffice.org ou Apache OpenOffice continuent à fonctionner avec LibreOffice. Si des modifications interviennent, elles sont notées dans les Notes de version (modification de l’API pour les versions 4.2, 4.1 et 4.0).

  • La dépendance OpenOffice.org-minimal-version indique que l’extension fonctionne dans les versions spécifiées d’OpenOffice.org ainsi que dans celles de LibreOffice qui correspondent au minimum à la version de référence spécifiée d’OpenOffice.org. Toutes les versions de LibreOffice jusqu’à la version 4.2.3 précisent qu’elles correspondent à la version 3.4 de référence d’OpenOffice.org, tandis que les versions de LibreOffice depuis la version 4.2.4 indiquent qu'elles correspondent à la version de référence 4.1 d’OpenOffice.org. En utilisant cette dépendance, l’extension déclare qu’elle n’utilise que les fonctionnalités présentes dans la version de référence spécifiée d’OpenOffice.org (et qu’elle fonctionne donc avec tous les produits, et pas seulement avec OpenOffice.org lui-même).
  • Si une extension utilise des fonctionnalités spécifiques à LibreOffice, en commençant par LibreOffice 3.5, on peut spécifier une nouvelle dépendance LibreOffice-minimal-version avec le namespace http://libreoffice.org/extensions/description/2011. L’attribut value (sans namespace) impose de spécifier la version minimale de LibreOffice supportée ; il ne doit pas contenir de numéro de micro-version, et il ne doit pas être inférieur à “LibreOffice version” 3.5. (où version est la valeur de version donnée).

On peut trouver des exemples sur core/tree/desktop/test/deployment/dependencies : loversion35.oxt or loversion36.oxt.

  • Si une extension est prévue pour une version spécifique de LibreOffice,à partir de LibreOffice 7.0, on peut spécifier une nouvelle dépendance LibreOffice-minimal-version avec le namespace http://libreoffice.org/extensions/description/2011 en plus de la dépendance LibreOffice-minimal-version. Cela ne devrait être que très rarement nécessaire.