FR/Documentation/How Tos/Installation/CreerExtension
Comment créer une extension - Application à une extension pour la Gallery
Étapes à suivre
Une extension permet d'ajouter des fonctionnalités à OOo. Parmi les extensions les plus téléchargées, citons :
- les dictionnaires d'orthographe, de synonymes ou de césure
- l'import ou l'export de fichiers dans d'autres formats : PDF, SVG
- l'ajout de thèmes à la Gallery
Quelle que soit l'extension que l'on veut construire les étapes à suivre sont les mêmes :
- rassemblement des fichiers dans un répertoire
- configuration des fichiers de description
- construction de l'extension
- diffusion de l'extension
Nous allons présenter ici la construction d'une extension pour ajouter des images dans la Gallery.
Préparation des images
Pour diffuser des images que l'on veut utiliser régulièrement dans OOo, la solution la plus simple consiste à construire une extension qui va ajouter un ou plusieurs thèmes à la Gallery contenant ces images. Ces images peuvent être suivant différents formats :
- image par points issue d'un fichier PNG, JPEG, GIF, BMP, TIFF, etc.
- image vectorielle construite avec des objets de dessin de Draw : rectangles, ellipses, segments,...
Il faut donc rassembler les images dans un thème :
- affichez la Gallery par le menu Outils > Gallery
- cliquez sur le bouton Nouveau thème
- renseignez le nom et notez l'emplacement (ce sera nécessaire pour retrouver le fichier)
- validez par OK
Vous avez maintenant un nouveau thème qui est vide. Ajoutez les images que vous souhaitez y mettre. Pour les fichiers images par points, il n'est pas conseillé d'utiliser la méthode d'ajout direct dans le thème :
- clic droit sur le nom du thème > Propriétés, onglet Fichiers,
- bouton Recherche de fichiers pour parcourir le disque
- bouton Ajouter
En effet, par cette méthode, seul un lien est ajouté dans le thème, et cela compliquera l'insertion dans l'extension. Il vaut donc mieux importer le fichier par le menu Insertion > Image > À partir d'un fichier dans un document Draw par exemple, puis d'ajouter l'image dans le thème comme pour une image vectorielle :
- ajustez le zoom et les ascenseurs pour visualiser l'ensemble de l'image à insérer
- cliquez de façon prolongée sans bouger sur l'image. Au bout de quelques secondes, l'image a été mise en mémoire par OOo : une légère modification de la bordure s'est opérée
- sans relâcher, faites glisser dans le thème.
Si cette étape échoue (l'image est déplacée dans le dessin) il faut recommencer l'étape précédente : vous n'avez probablement pas attendu assez longtemps. Pour vérifier que toutes vos images sont bien dans le thème, cliquez sur chacune, et vous devriez voir un nom du type dd2954. Si un chemin apparait, c'est que l'image n'est pas réellement dans le thème, mais qu'il n'y a qu'un lien vers un fichier. Ceci compliquera grandement la construction de l'extension. Dans ce cas, il faut faire glisser l'image à partir du thème vers un document Draw, puis la réinsérer dans le thème comme précédemment.
Lorsque toutes les images souhaitées ont été insérées, vous avez la possibilité de leur donner un nom :
- clic droit sur l'image dans le thème > Titre
Ce titre est purement informatif pour l'utilisateur, il n'a pas besoin d'être unique.
Rendez-vous ensuite à l'emplacement repéré lors de la création du thème et récupérez les 3 fichiers constituant chaque thème : sgxxxx.sdg
, sgxxxx.sdv
et sgxxxx.thm
. xxxx
étant le numéro du thème. Ce numéro a besoin d'être unique dans un même répertoire. Comme l'extension va créer ses propres répertoires, il n'est pas nécessaire que le numéro soit unique pour tous les thèmes d'un utilisateur.
Construction des fichiers de configuration
Une extension est consitué d'un seul fichier d'extension .OXT. Comme tous les fichiers au format OpenDocument, il s'agit d'un fichier compressé. Pour construire une extension, le mieux est de récupérer une extension du même type que celle que l'on veut construire. Par exemple, pour ajouter un thème de gallery, récupérons l'extension d'OxygenOffice depuis le site des extensions http://extensions.services.openoffice.org/ N'installez pas directement l'extension, mais enregistrez le fichier. Dézippez le fichier dans un nouveau répertoire (au besoin changez l'extension du fichier en .ZIP). Dans ce répertoire vous retrouvez tous les fichiers de configuration de l'extension. Il faut repérer ce qui est indispensable au fonctionnement de l'extension et ce qui est ajouté par l'extension.
Contenu d'une extension
répertoire Gallery
Ce répertoire contient les fichiers des thèmes. Il faut supprimer tout le contenu et le remplacer par nos fichiers sgxxxx.sdg
, sgxxxx.sdv
et sgxxxx.thm
.
répertoire META-INF
Ce répertoire est présent dans toutes les extensions et est nécessaire pour l'installation de l'extension. Il contient le fichier manifest.xml
qui déclare les fichiers de l'extension. A priori il n'est pas nécessaire de le modifier, sauf de corriger éventuellement les chemins.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd"> <manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest"> <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path ="Paths.xcu"/> </manifest:manifest>
Il s'agit donc de la déclaration du fichier Paths.xcu
comme fichier de configuration. Pour que votre extension soit compatible avec tous les systèmes d'exploitation, attention au respect des majuscules/minuscules dans les noms de fichier.
répertoire description
Ce répertoire n'est pas obligatoire, mais il contient les fichiers texte de description de l'extension dans différentes langues. Ce texte est utilisé dans le gestionnaire d'extensions pour décrire l'extension. Si un fichier dans la langue de l'interface n'est pas présent, c'est le fichier en anglais qui utilisé. Vous pouvez aussi ne prévoir qu'un seul fichier de description !
répertoire licenses
Ce répertoire n'est pas obligatoire, mais il contient les fichiers texte des licences dans différentes langues. Si vous n'avez pas prévu de faire valider une licence au moment de l'installation de l'extension, ce répertoire n'est pas nécessaire. Cependant, il est recommandé de disposer d'un fichier texte donnant la licence d'utilisation dans l'extension, par exemple en renvoyant sur les licences GNU-GPL, LGPL, PDL, etc.
Autres répertoires
D'autres répertoires peuvent exister, mais ne sont pas nécessaires au fonctionnement et à l'installation de l'extension.
Autres fichiers
Il y a également des fichiers présents à la racine de l'extension :
- n'importe quel fichier de description ou de licence. En effet, il n'est pas obligatoire de mettre ces fichiers dans des répertoires à part. C'est plus propre, c'est tout.
- fichier
description.xml
: ce fichier est très important, et nous allons le détailler juste après - fichier
Paths.xcu
: ce fichier déclare le rôle de l'extension et comment l'installer. Ainsi pour une extension de Gallery :
<?xml version='1.0' encoding='UTF-8'?> <oor:component-data oor:package="org.openoffice.Office" oor:name="Paths" xmlns:install="http://openoffice.org/2004/installation" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <node oor:name="Paths"> <node oor:name="Gallery" oor:op="fuse"> <node oor:name="InternalPaths"> <node oor:name="%origin%/gallery" oor:op="fuse"/> </node> </node> </node> </oor:component-data>
Il n'y a rien à changer dedans.
- un fichier image : il s'agit d'une image de 42x42 points au format PNG qui sera affichée dans le gestionnaire d'extension.
Fichier description.xml
C'est ce fichier qui va contenir toutes l'information que vous voulez personnaliser. Il faut prendre soin de le remplir par rapport aux aspects spécifiques de son extension : noms des fichiers (! majuscule/minuscule), utilisation ou non d'une fonctionnalité... La page du wiki (en anglais) http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Extensions/Example décrit les différents éléments le constituant. Nous allons revoir les éléments principaux.
Structure
Le fichier démarre par un entête :
<?xml version="1.0" encoding="UTF-8"?> <description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
et doit se terminer par une balise de fin
</description>
Entre les deux, il y a une série d'entrées du type :
<mot clé value="valeur du mot clé" />
ou
<mot clé> <sous entrée du mot clé> </mot clé>
Parmi les entrées, certaines sont obligatoires d'autres optionnelles.
Identifiant
Cet identifiant doit être unique dans le monde. C'est pourquoi il est recommandé d'utiliser une chaine de caractères en minuscules, dans l'ordre inverse de domaine. Par exemple :
fr.mon_domaine.mon_nom.mon_extension
Ainsi utilisé dans description.xml
:
<identifier value="fr.mon_domaine.mon_nom.mon_extension" />
Numéro de version
Si vous souhaitez bénéficier du système de mise à jour automatique des extensions, il est important de renseigner cette rubrique. A priori, il y a 3 niveau de numérotation : majeur, mineur, micro.
<version value="1.0.2" />
Il ne faut pas confondre le numéro de version de l'extension, gérer par le développeur de l'extension, et le numéro de version d'OOo.
Dépendances
Il faut indiquer le numéro de version d'OOo à partir de laquelle l'extension est fonctionnelle.
<dependencies> <OpenOffice.org-minimal-version value="2.0" d:name="OpenOffice.org 2.0"/> </dependencies>
Plateformes supportées
Si l'extension est indépendante des plateformes (ce qui est le cas pour un thème de Gallery), on le précise ainsi :
<platform value="all" />
Sinon, on donne une liste :
<platform value="windows_x86,solaris_sparc" />
Nom affiché
Le nom affiché dans le gestionnaire d'extension est déclaré ainsi :
<display-name> <name lang="en">Gallery of danger signs</name> <name lang="fr">Gallery des symboles de dangers</name> <name lang="es">Galería de símbolos de peligro</name> <name lang="de">Gallery von Gefahrzeichen</name> </display-name>
Image
L'image utilisée dans le gestionnaire d'extension est déclarée ainsi :
<icon> <default xlink:href="feu42.png" /> </icon>
Attention à la localisation du fichier si vous l'avez mis dans un sous-répertoire, attention aux majuscules/minuscules. L'image doit avoir une taille de 42x42 pour ne pas être déformée. Vous pouvez définir une autre image pour les interfaces définies en contraste élevé (déficients visuels) :
<icon> <default xlink:href="images/icon.png" /> <high-contrast xlink:href="images/icon_hc.png" /> </icon>
Description
Le texte de description qui sera affiché dans le gestionnaire d'extensions, doit être enregistré dans un fichier (cf. plus haut) :
<extension-description> <src xlink:href="description/description_en.txt" lang="en" /> <src xlink:href="description/description_fr.txt" lang="fr" /> <src xlink:href="description/description_es.txt" lang="es" /> <src xlink:href="description/description_de.txt" lang="de" /> </extension-description>
Les fichiers doivent être au format UTF-8.
Autres informations
D'autres rubriques sont disponibles mais ne sont pas indispensables :
- validation d'un licence :
<registration> <simple-license accept-by="admin" suppress-on-update="true" > <license-text xlink:href="registration/license_de-DE.txt" lang="de-DE" /> <license-text xlink:href="registration/license_en-GB.txt" lang="en-GB" /> <license-text xlink:href="registration/license_en-NZ.txt" lang="en-NZ" /> <license-text xlink:href="registration/license_en-US.txt" lang="en-US" /> </simple-license> </registration>
Si le champ accept-by
a été renseigné par admin
, alors il sera possible d'installer l'extension pour tous les utilisateurs. Si on souhaite que chaque utilisateur valide la licence, le champ est renseigné à user
Construction de l'extension
- Sélectionnez tous les fichiers et répertoires constituant votre extension et faites-en un fichier ZIP
- Changez l'extension du fichier ZIP en OXT
- C'est fait ! Votre extension est prête à être diffusée.
Diffusion de l'extension
Déposez votre extension sur le site officiel de partage des extensions http://extensions.services.openoffice.org/ Ainsi tout le monde pourra bénéficier de votre extension !
N'oubliez que OOo doit être intégralement redémarré (démarrage rapide compris) pour que l'extension soit prise en compte.