Problème avec les étiquettes des barres d'outils

Bonjour à vous,

La macro ci-dessous devrait permettre de faire afficher dans Affichage -> Barre d'outils la barre d'outil Dmaths avec l'étiquette "Barre_Dmaths" au lieu de "Addon 1".

/Sub Etiquette_toolbar
     oConfigAccess = GetConfigAccess( "/org.openoffice.Office.UI.WriterWindowState/UIElements/States", True )
     If oConfigAccess.HasByName( "private:resource/toolbar/addon_org.openoffice.Office.addon.DMathsBarre") Then
         oAddon = oConfigAccess.getByName( "private:resource/toolbar/addon_org.openoffice.Office.addon.DMathsBarre")
         oAddon.setPropertyValue ("UIName","Barre_Dmaths")
     Endif
     oConfigAccess.commitChanges()
End Sub
/
Cela fonctionnait parfaitement avant ...

Les paramètres de configurations sont dans le fichier registrymodifications.xcu situé dans le dossier user.
Or dans ce fichier, après la macro on lit :

<prop oor:name="UIName" oor:op="fuse">
<value xml:lang="en-US">Barre_Dmaths</value>
<value xml:lang="fr">Add-on 1</value>
</prop>

et donc c'est toujours Addon 1 qui s'affiche dans le menu Affichage -> Barres d'outils.

Pensez-vous à un bug ou ma macro est à modifier.

Merci pour votre aide.

Bonsoir,

Bonjour à vous,

La macro ci-dessous devrait permettre de faire afficher dans Affichage ->
Barre d'outils la barre d'outil Dmaths avec l'étiquette "Barre_Dmaths" au
lieu de "Addon 1".

/Sub Etiquette_toolbar
   oConfigAccess = GetConfigAccess( "/org.openoffice.Office.UI.**
WriterWindowState/UIElements/**States", True )
   If oConfigAccess.HasByName( "private:resource/toolbar/**
addon_org.openoffice.Office.**addon.DMathsBarre") Then
       oAddon = oConfigAccess.getByName( "private:resource/toolbar/**
addon_org.openoffice.Office.**addon.DMathsBarre")
       oAddon.setPropertyValue ("UIName","Barre_Dmaths")
   Endif
   oConfigAccess.commitChanges()
End Sub
/
Cela fonctionnait parfaitement avant ...

Qu'est-ce qui a changé ? la version windows ? la version LibO ?

Je pense à un manque de droits (si win7 ou vista). Est-ce qu'elle a été
installée en mode utilisateur (ou en éxécutant le programme avec les droits
administrateur ?)
Je suppose que ta macro ne retourne pas d'erreur ?

Yves

Bonjour Yves,

Bonsoir,

Je pense à un manque de droits (si win7 ou vista). Est-ce qu'elle a été
installée en mode utilisateur (ou en éxécutant le programme avec les droits
administrateur ?)
Je suppose que ta macro ne retourne pas d'erreur ?

Yves

Effectivement la macro ne retourne pas d'erreur.
Je suis sous Mandriva et le fichier registrymodifications.xcu est dans le répertoire utilisateur. Il est d'ailleurs modifié automatiquement à chaque fermeture de LibreOffice (il contient notamment le chemin des derniers fichiers ouverts).

Merci.

Bonjour Didier

J'ai testé le code ci-dessous pour une autre extension gérant une barre
d'outils.
Il fonctionne (modification du libellé affiché après redémarrage).
Je ne sais si cela pourra t'aider...
En revanche je me demande pourquoi tu dois modifier "après coup" ce libellé
au lieu de le définir "en amont" (WriterWindowState.xcu) ?

sub PysTestToolBar
dim PysRegistry as object
dim PysBarre as object

globalScope.basicLibraries.loadLibrary("Tools")
PysRegistry =
getRegistryKeyContent("/org.openoffice.Office.UI.WriterWindowState/UIElements/States",
true)

if
PysRegistry.hasByName("private:resource/toolbar/addon_org.linagora.clients.minefi.dpma.terminologie.boutons")
then
  PysBarre =
PysRegistry.getByName("private:resource/toolbar/addon_org.linagora.clients.minefi.dpma.terminologie.boutons")
  PysBarre."UIName" = "Test Pys" & now
  PysRegistry.commitChanges()
end if

end sub

Cordialement
Pierre-Yves

Bonjour,

Bonjour Yves,

Bonsoir,

Je pense à un manque de droits (si win7 ou vista). Est-ce qu'elle a été
installée en mode utilisateur (ou en éxécutant le programme avec les
droits
administrateur ?)
Je suppose que ta macro ne retourne pas d'erreur ?

Yves

Effectivement la macro ne retourne pas d'erreur.
Je suis sous Mandriva et le fichier registrymodifications.xcu est dans le
répertoire utilisateur. Il est d'ailleurs modifié automatiquement à chaque
fermeture de LibreOffice (il contient notamment le chemin des derniers
fichiers ouverts).

Ok.
je remarque que l'UI-Name anglaise est bonne. Ne connaissant pas comment la
fonction de changement de nom réagit aux langues, ne serait-ce pas un
comportement "normal" si ta fonction changeait la variable en-US et pas la
variable FR. (faut-il fixer la langue avant d'appliquer la fonction de
changement de nom ?)

Je connais pas trop la programmation Libo, donc m'en veut pas si je dis des
conneries :wink:
Yves

Bonjour

En revanche je me demande pourquoi tu dois modifier "après coup" ce libellé
au lieu de le définir "en amont" (WriterWindowState.xcu) ?

je rejoints pierre yves
ajouter dans l'extension un fichier WriterWindowState.xcu avec les
differentes langues devrait resoudre ton probleme (si je l'ai bien compris)

Laurent

un exemple (pur calc)

<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
oor:name="CalcWindowState"
oor:package="org.openoffice.Office.UI">
  <node oor:name="UIElements">
    <node oor:name="States">
      <node
oor:name="private:resource/toolbar/monAddon.blablabla.OfficeToolBar"
oor:op="replace">
        <prop oor:name="UIName" oor:type="xs:string">
          <value xml:lang="fr">le libelle</value>
        </prop>
        <prop oor:name="Docked" oor:type="xs:boolean">
          <value>true</value>
            </prop>
      </node>

Bonjour à tous,

Merci pour votre aide précieuse, j'ai mis le fichier dans l'addon et cela fonctionne.

Bonjour

En revanche je me demande pourquoi tu dois modifier "après coup" ce libellé
au lieu de le définir "en amont" (WriterWindowState.xcu) ?

Tout simplement car je ne savais pas que c'était possible ou mieux je n'y ai pas pensé.

Mais heureusement vous êtes là.

Encore merci.

Rebonjour,

J'ai utilisé vos deux propositions :
- celle de Pierre Yves permet de corriger les installations existantes,
- celle de Laurent permet un codage "en dur" et donc de futures installations plus propres.

Merci à vous.