[Résolu] [Basic] Modifier les infobulles d'une OfficeToolBar

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 !
Avatar de l’utilisateur
ddorange
Membre hOOnoraire
Membre hOOnoraire
Messages : 120
Inscription : 23 déc. 2015 18:49
Localisation : Annecy

[Résolu] [Basic] Modifier les infobulles d'une OfficeToolBar

Message par ddorange »

Bonjour à tous,

Je suis confronté semble-t-il à un problème de langue.
Je voudrais modifier les infobulles des icônes d'une OfficeToolBar en remplaçant pour MacOsX le Ctrl par Pom.

Voici mon code

Code : Tout sélectionner

	oConfigAccessToolBarre = GetConfigAccess( "/org.openoffice.Office.Addons/AddonUI/OfficeToolBar", True )
	oDmBarre = oConfigAccessToolBarre.getByName("org.openoffice.Office.addon.DMathsBarre")
	sElementNames = getElementNamesofToolbar(oDmBarre)
	oToolBarItems = getToolBarItems(oDmBarre)
	For I = LBound(sElementNames()) To UBound(sElementNames())
		oToolBarItems.getByname(sElementNames(I)).Title = RemplaceChaine(oToolBarItems.getByname(sElementNames(I)).Title,"Ctrl","Pom",False)
	Next I	
	oConfigAccessToolBarre.commitChanges()	
Lorsque le code est exécuté, je me retrouve dans le fichier registrymodifications.xcu avec des lignes du type :

Code : Tout sélectionner

<item oor:path="/org.openoffice.Office.Addons/AddonUI/OfficeToolBar/org.openoffice.Office.Addons:ToolBarItems['org.openoffice.Office.addon.DMathsBarre']/org.openoffice.Office.Addons:ToolBarItem['btn02']/Title"><value xml:lang="en-US">Create a table [Pom+T]</value></item>
Premier constat : le changement ne s'effectue que pour la langue en-US
Deuxième constat : si je change manuellement en-US en fr-FR, l'infobulle n'est pas modifiée,
Troisième constat : si je redémarre la suite en anglais, l'infobulle devient Pom+T.

Un extrait du fichier initial Addons.xcu

Code : Tout sélectionner

<node oor:name="btn02" oor:op="replace">
						<prop oor:name="Context" oor:type="xs:string">
							<value>com.sun.star.text.TextDocument</value>
						</prop>
						<prop oor:name="Title" oor:type="xs:string">
							<value xml:lang="fr">Créer un tableau [Ctrl+T]</value>
							<value xml:lang="de">Tabellen-Dialog [Strg+T]</value>
							<value xml:lang="it">Creare una tavola [Control (Ctrl)+T]</value>
							<value xml:lang="pt">Criar una tabela [Ctrl+T]</value>
							<value xml:lang="en">Create a table [Ctrl+T]</value>
							<value xml:lang="et">Create a table [Ctrl+T]</value>
							<value xml:lang="es">Crear una tabla [Ctrl+T]</value>
						</prop>
						<prop oor:name="URL" oor:type="xs:string">
							<value>macro:///Dmaths.Tableau.LanceCreationTableau</value>
						</prop>
						<prop oor:name="Target" oor:type="xs:string">
							<value>_self</value>
						</prop>
						<prop oor:name="ImageIdentifier" oor:type="xs:string">
							<value>%origin%/Fichiers/icons/theme/lancecreationtableau</value>
						</prop>
					</node>
Merci d'avance pour votre aide.
Dernière modification par ddorange le 15 mai 2018 17:54, modifié 1 fois.
LibreOffice 7.5 et OpenOffice 4.1.14 sous Ubuntu 22.10, Windows 7, Windows 10, MacOs Monterey
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Basic] Modifier les infobulles d'une OfficeToolBar

Message par Hubert Lambert »

Bonjour,

Deux pistes a priori (je n'ai pas les moyens de tester tout de suite) :
1. le plus simple : modifier le fichier Addons.xcu avec un éditeur de texte ;
2. ta méthode GetConfigAccess instancie en principe le service "com.sun.star.configuration.ConfigurationProvider", au niveau duquel tu peux définir la langue (méthode setLocale) : en passant un objet "Locale" fr-FR, cela devrait fonctionner.
Cordialement.
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)
Avatar de l’utilisateur
ddorange
Membre hOOnoraire
Membre hOOnoraire
Messages : 120
Inscription : 23 déc. 2015 18:49
Localisation : Annecy

Re: [Basic] Modifier les infobulles d'une OfficeToolBar

Message par ddorange »

Bonjour,

Merci pour ta réponse.

J'ai modifié en conséquence la fonction GetConfigAccess et cela fonctionne.

Code : Tout sélectionner

Function GetConfigAccess( ByVal cNodePath As String,ByVal bWriteAccess As Boolean,Optional bEnableSync,Optional bLazyWrite) As Object
	If IsMissing(bEnableSync) Then 	bEnableSync = True 
	If IsMissing( bLazyWrite ) Then bLazyWrite = False
	Dim oConfigProvider, oConfigAccess as Object
	oConfigProvider = GetProcessServiceManager.createInstanceWithArguments("com.sun.star.configuration.ConfigurationProvider",Array( MakePropertyValue( "enableasync", bEnableSync)))
	If bWriteAccess Then
		cServiceName = "com.sun.star.configuration.ConfigurationUpdateAccess"
	Else
		cServiceName = "com.sun.star.configuration.ConfigurationAccess"
	EndIf
	oConfigAccess = oConfigProvider.createInstanceWithArguments( cServiceName, Array( _
         MakePropertyValue( "nodepath", cNodePath ), _
         MakePropertyValue( "lazywrite", bLazyWrite ), _
         MakePropertyValue( "enableasync", bEnableSync), _
         MakePropertyValue( "Locale",GetRepertoirePath("vlang"))))
	GetConfigAccess() = oConfigAccess
End Function
Bien cordialement.
Dernière modification par ddorange le 15 mai 2018 17:56, modifié 1 fois.
LibreOffice 7.5 et OpenOffice 4.1.14 sous Ubuntu 22.10, Windows 7, Windows 10, MacOs Monterey
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9248
Inscription : 28 août 2010 08:45

Re: [Résolu] [Basic] Modifier les infobulles d'une OfficeToo

Message par micmac »

Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac