[OXT] Ajout dans la barre de menu

Quoi ? Vous ne connaissez pas cette suite bureautique libre et gratuite. Elle vous permet de faire ce que vous faîtes avec MS-Office sans avoir à pirater.
Bidouille
Webmestre
Messages : 502
Enregistré le : 21 mai 2007 16:08

[OXT] Ajout dans la barre de menu

Messagepar Bidouille » 20 juin 2013 12:35

Pour qu'une extension puisse être accessible dans la barre de menu, il faut agir sur le fichier Addons.xcu

D'abord un exemple avec l'OXT QRcodeGen qui ajoute un item dans le menu Insertion de Writer et Calc juste en dessous de l'élément Image.

Code : Tout sélectionner

01 <?xml version='1.0' encoding='UTF-8'?>
02 <oor:component-data
03  xmlns:oor="http://openoffice.org/2001/registry"
04  xmlns:xs="http://www.w3.org/2001/XMLSchema"
05  oor:name="Addons"
06  oor:package="org.openoffice.Office">
07 <node oor:name="AddonUI">
08 <node oor:name="OfficeMenuBarMerging">
09       <node oor:name="qrcodegen" oor:op="replace">
10       <node oor:name="S1" oor:op="replace">
11        <prop oor:name="MergePoint">
12          <value>.uno:InsertMenu\.uno:GraphicMenu</value>
13        </prop>
14        <prop oor:name="MergeCommand">
15         <value>AddAfter</value>
16        </prop>
17        <prop oor:name="MergeFallback">
18         <value>AddPath</value>
19        </prop>
20        <prop oor:name="MergeContext" oor:type="xs:string">
21          <value>com.sun.star.text.TextDocument,com.sun.star.sheet.SpreadsheetDocument</value>
22        </prop>
23        <node oor:name="MenuItems">
24         <node oor:name="M1" oor:op="replace">
25              <prop oor:name="URL" oor:type="xs:string">
26            <value>macro:///QRcodeGen.QRcodeGen.Main</value>
27         </prop>
28         <prop oor:name="ImageIdentifier" oor:type="xs:string">
29            <value>%origin%/icons/image1</value>
30         </prop>
31         <prop oor:name="Title" oor:type="xs:string">
32            <value>QR code...</value>
33         </prop>
34         <prop oor:name="Target" oor:type="xs:string">
35            <value>_self</value>
36         </prop>
37         </node>
38        </node>
39      </node>
40       </node>
41     </node>
42 </node>
43 </oor:component-data>

Bidouille
Webmestre
Messages : 502
Enregistré le : 21 mai 2007 16:08

Explications des lignes pour l'ajout

Messagepar Bidouille » 20 juin 2013 12:43

08. Demande de fusion dans la barre existante avec la balise OfficeMenuBarMerging
09. Définition du nom du menu avec option de remplacement si l'item existe déjà (cas de mise à jour par exemple)
10. Pas bien compris l'usage de cet élément
11. Demande de fusion à un point précis du menu
12. Position à la hauteur du menu Insertion > Image (voir plus bas les équivalents UNO des menus)
14. Type de la fusion
15. AddAfter pour ajouter après la position donnée en 12 (autre valeur possible AddBefore, Replace et Remove)
17. Décrit comment le menu doit réagir
18. C'est toujours une variable AddPath si AddAfter ou AddBefore
20. Donne le contexte d'utilisation du menu (dans quel module, il doit être visible)
21. Les modules sont séparés par des virgules :
  • Writer : com.sun.star.text.TextDocument
  • Calc : com.sun.star.sheet.SpreadsheetDocument
  • Impress : com.sun.star.presentation.PresentationDocument
  • Draw : com.sun.star.drawing.DrawingDocument
  • Math : com.sun.star.formula.FormulaProperties
  • Graphique : com.sun.star.chart.ChartDocument
  • Base : com.sun.star.sdb.OfficeDatabaseDocument
  • Editeur Basic : com.sun.star.script.BasicIDE

Bidouille
Webmestre
Messages : 502
Enregistré le : 21 mai 2007 16:08

Description de l'élément du menu

Messagepar Bidouille » 21 juin 2013 10:59

23. Description des éléments du menu
24. Nom unique interne pour le menu avec paramètre "replace" en cas de mise à jour
25. Propriété URL
26. Chemin vers une macro ou une commande UNO
28. Propriété Identifiant d'image
29. Chemin vers l'image attachée à la gauche du menu.
Suivant la résolution déclarée, vous devez avoir 4 images (format 150 x 150 pixels) :
  • _16.bmp (16 couleurs normal)
  • _16h.bmp (16 couleurs haute résolution)
  • _26.bmp
  • _26h.bmp
31. Propriété Titre
32. Libellé du menu
34. Propriété Cible
35. Toujours à _self (soi-même)

NB concernant le point 26, il ne faut plus employer la chaîne vnd.sun.star.script: car elle renverra une alerte de sécurité sur l'exécution des macros.

Bidouille
Webmestre
Messages : 502
Enregistré le : 21 mai 2007 16:08

Elément de menu multi-langue

Messagepar Bidouille » 21 juin 2013 11:04

Dans le noeud du titre, ajouter des valeurs avec le paramètre de langue.
Cela permet ainsi d'avoir un menu localisé.

Exemple :

Code : Tout sélectionner

<prop oor:name="Title" oor:type="xs:string">
   <value xml:lang="en-US">Form...</value>
   <value xml:lang="en-UK">Form...</value>
   <value xml:lang="it-IT">Modulo...</value>
   <value xml:lang="fr-FR">Formulaire...</value>
   <value xml:lang="de-DE">Maske...</value>
   <value xml:lang="es-ES">Formulario...</value>
   <value xml:lang="pt-PT">Formulário...</value>
   <value xml:lang="pt-BR">Formulário...</value>
   <value xml:lang="ca-CA">Formulari...</value>
   <value xml:lang="nl-NL">Formulier...</value>
   <value xml:lang="da-DA">Formular...</value>
   <value xml:lang="fi-FI">Lomake...</value>
   <value xml:lang="nb-NB">Skjema...</value>
   <value xml:lang="sv-SV">Formulär...</value>
   <value xml:lang="sl-SL">Obrazec...</value>
   <value xml:lang="hu-HU">Modul...</value>
   <value xml:lang="ru-RU">Форма...</value>
   <value xml:lang="ja-JP">&#x30D5;&#x30A9;&#x30FC;&#x30E0;...</value>
   <value xml:lang="pl-PL">Formularz...</value>
</prop>

Bidouille
Webmestre
Messages : 502
Enregistré le : 21 mai 2007 16:08

Commande UNO des barres de menu

Messagepar Bidouille » 24 juin 2013 09:01

Chaque module a sa propre barre de menu.
Chaque item de menu lance une commande dite UNO (Universal Network Objects).
Les noms de ces commandes sont disponibles dans un fichier menubar.xml
Ces fichiers sont localisés dans le répertoire des programmes de votre système.
Par exemple pour Windows 7 :

Code : Tout sélectionner

%ProgramFiles(x86)/OpenOffice 4/share/config/soffice.cfg/modules

Extrait du fichier pour le traitement de textes swriter :

Code : Tout sélectionner

  <menu:menu menu:id=".uno:InsertMenu">
    <menu:menupopup>
      <menu:menuitem menu:id=".uno:InsertBreak"/>
      <menu:menu menu:id=".uno:FieldMenu">
        <menu:menupopup>
          <menu:menuitem menu:id=".uno:InsertDateField"/>
          <menu:menuitem menu:id=".uno:InsertTimeField"/>
          <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
          <menu:menuitem menu:id=".uno:InsertPageCountField"/>
          <menu:menuitem menu:id=".uno:InsertTopicField"/>
          <menu:menuitem menu:id=".uno:InsertTitleField"/>
          <menu:menuitem menu:id=".uno:InsertAuthorField"/>
          <menu:menuseparator/>
          <menu:menuitem menu:id=".uno:InsertField"/>
        </menu:menupopup>

qui correspond à :
Image

Bidouille
Webmestre
Messages : 502
Enregistré le : 21 mai 2007 16:08

Ne pas oublier le manifeste

Messagepar Bidouille » 21 août 2018 10:13

Le fichier manifest.xml qui se trouve dans le répertoire META-INF doit impérativement intégrer votre addons.xcu.

Il faut ajouter la ligne :

Code : Tout sélectionner

<manifest:file-entry manifest:full-path="Addons.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>


Sans quoi, vous ne verrez jamais votre menu s'ajouter.


Retourner vers « OpenOffice »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 97 invités