[Résolu][OXT] Comment rendre une extension paramétrable ?

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
ThierryM
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 437
Inscription : 26 nov. 2006 11:29
Localisation : Les Corbières

[Résolu][OXT] Comment rendre une extension paramétrable ?

Message par ThierryM »

Bonjour à tous,
Jusqu'à présent j'ai réalisé des extensions "basiques" grâce à l'outil de Bernard Marcelly "Extension Compiler" (encore merci à lui pour tous ses partages).
Je souhaiterais améliorer ces extensions afin que l'utilisateur puissent personnaliser certains de leurs paramètres (couleurs de cellules ou des caractères, bordures de cellules) via une boîte de dialogue optionnelle (l'extension doit fonctionner directement si on n'a pas besoin de modifier ses réglages). Malheureusement, je ne sais pas du tout comment faire (je n'ai pas réussi à trouver de documents que je sache exploiter).
Quelle serait la méthode ?
- Construire une boîte de dialogue dans mes extensions pour recueillir les choix des utilisateurs ? Et comment l'activer (via un menu contextuel sur le bouton, ça serait l'idéal mais je ne sais pas si c'est possible) ?
- Où seront stockées ces infos ?

Dans Extension Compiler, j'ai lu une option "addConfiguration" (chapitre 3.7.1) à ajouter dans la partie "Annexe" du module1 de Extension Compiler :
3.7.1 addConfiguration
Optional. List here your own xml configuration files and schemas.
• Arg1 : String : mandatory : "File" or "Schema"
• Arg2 : String : mandatory : URL path to a file ; the path is relative to the extension folder.
Here the extension contains an xml configuration file for storing settings, and its corresponding schema which describes its syntax.
addConfiguration("File", "myConfig.xcu")
addConfiguration("Schema", "myConfigSchema.xcs")
Serait-ce la bonne façon de paramétrer mes extensions ? Et dans ce cas-là, comment faudrait-il faire ?
Je me doute que ça ne doit pas être une sinécure mais c'est toujours bien d'évoluer et d'apprendre de nouvelles choses :wink: .
Merci pour vos éclairages,
Cordialement,

Thierry

Pistes trouvées :
https://wiki.openoffice.org/wiki/Docume ... ons_Dialog
http://specs.openoffice.org/appwide/pac ... nsions.odt
https://wiki.openoffice.org/wiki/Docume ... Extensions
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [OXT] Comment rendre une extension paramétrable ?

Message par Hubert Lambert »

Bonjour Thierry,

La documentation n'est pas très abondante concernant les fichiers de configuration.
Pour ajouter des clés dans le registre de configuration de l'application, il faut fournir deux types de fichiers :
- un fichier "schéma" (extension xcs) qui va définir le nom et la nature des nouvelles clés de configuration;
- un fichier "définition" (extension xcu) qui va fournir les valeurs de ces clés.
Ces deux fichiers doivent partager les mêmes identifiants :

Code : Tout sélectionner

  oor:name="monNoeud"
  oor:package="mon.extension.id"
Le fichier manifest.xml doit contenir une entrée pour chaque fichier, mais en principe Extension Compiler s'en chargera.
Je joins deux exemple simplissimes, mais le mieux est sans doute d'étudier les extensions existantes qui les utilisent (mri par exemple).

L'accès en lecture ou en écriture aux clés de configuration se fait au moyen des services respectivement "com.sun.star.configuration.ConfigurationAccess" et "com.sun.star.configuration.ConfigurationUpdateAccess", eux-mêmes accessibles via le service "com.sun.star.configuration.ConfigurationProvider". Dans le module "Misc" de la bibilothèque "Tools" (dans les macros basic installées avec LibO) se trouve une fonction GetRegistryKeyContent qui illustre l'utilisation de ces services, et qui peut être employée telle quelle.
Pour lire la valeur d'une clé associée aux identifiants précités, il suffira ainsi de faire :

Code : Tout sélectionner

monNoeud = GetRegistryKeyContent("mon.extension.id/monNoeud")
valeurCle = monNoeud.getByName("nomDeMaCle")
Pour modifier la valeur d'une clé :

Code : Tout sélectionner

monNoeud = GetRegistryKeyContent("mon.extension.id/monNoeud", True)
monNoeud.getByName("nomDeMaCle") = nouvelleValeur
monNoeud.commitChanges()
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
ThierryM
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 437
Inscription : 26 nov. 2006 11:29
Localisation : Les Corbières

Re: [OXT] Comment rendre une extension paramétrable ?

Message par ThierryM »

Salut à tous,
Merci beaucoup Hubert d'avoir pris le temps de me répondre et de chercher. J'essaie de regarder ça rapidement.
Cordialement,

Thierry
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?