[Résolu][Writer] Transporter les raccourcis

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 !
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

[Résolu][Writer] Transporter les raccourcis

Message par joel275 »

Bonsoir,

je sais déplacer à la main le fichier contenant les touches de raccourci de Writer.
Je souhaiterai automatiser cette action grâce à une macro pour faciliter l'installation d'un programme (Rédaction de textes mathématiques dans la rubrique projets de ce forum), mais en deux mois, je n'ai pas trouvé le moindre début de commencement d'idée qui fonctionne pour y arriver. :fou:
A défaut, je serai intéressé par une macro pouvant créer un raccourci.

Je sollicite donc à nouveau votre aide et vos idées.
Merci

Joël

Dernière édition le 4/1/2010

Autre édition le 5/1/2010
finalement, j'ai trouvé (autre fausse piste?) le service "com.sun.star.ui.GlobalAcceleratorConfiguration" qui donne accès aux raccourcis de OpenOffice.org et à un interface "XAcceleratorConfiguration" qui bien que "Unpublished" (?) semble prometteur.

j'ai trouvé également à l'adresse http://codesnippets.services.openoffice ... tcuts.snip une macro de Paolo Mantovani qui permet d'ajouter un ou plusieurs raccourcis à un module (ctrl est le numéro de la touche modifiante, Touche est com.sun.star.awt.Key.F pour la touche F et une macro est de la forme: Bibliothèque.Module.NomMacro

Code : Tout sélectionner

Sub ChargeRaccourcis(ctrl as integer, Touche as Integer, uneMacro as String)
Dim oModuleCfgMgrSupplier As Object, oModuleCfgMgr As Object, oWriterShortCutMgr As Object, 'jdObject as Object
Dim sCommand As String, sLocCommand As String, sMsg As String, combi as String
Dim aKeyEvent As New com.sun.star.awt.KeyEvent
	 sCommand = "vnd.sun.star.script:" & uneMacro & "?language=Basic&location=application"
	oModuleCfgMgrSupplier = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier") 		' UNPUBLISHED service!!
	oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager("com.sun.star.text.TextDocument")
	oWriterShortCutMgr = oModuleCfgMgr.getShortCutManager
	With aKeyEvent
		.Modifiers = ctrl
		.KeyCode = Touche
	End With              ' attention aux IIf qui sont parfois capricieux!
	combi = IIf(ctrl And 2, "CTRL+", "") & IIf(ctrl And 1, "MAJ+", "")	& IIf(ctrl And 4, "ALT+", "") & "H"
	On Error Resume Next			' CommandByKeyEvent renvoie une erreur si aKeyEvent n'est pas affectée
	sLocCommand = oWriterShortCutMgr.getCommandByKeyEvent(aKeyEvent)
	On Error GoTo 0
	Select Case sLocCommand
		Case  ""
			oWriterShortCutMgr.setKeyEvent(aKeyEvent, sCommand)
			oWriterShortCutMgr.store
		Case = sCommand 		'ok sKeyEvent est déjà affectée à notre commande
		Case Else 				' sKeyEvent est déjà affectée à une autre commande
			sMsg = "Le raccourci " & combi & " est déjà utilisé par: " & sLocCommand & Chr(10)
			sMsg = sMsg & "Voulez-vous le remplacer par: " & uneMacro & "?"
			If  MsgBox(sMsg, 1) = 1 Then
				oWriterShortCutMgr.removeKeyEvent(aKeyEvent)
				oWriterShortCutMgr.setKeyEvent(aKeyEvent, sCommand)
				oWriterShortCutMgr.store
			End If
	End Select
End Sub
Ca répond par défaut à mes soucis, mais je suis toujours preneur d'idées pour automatiser "Charger" et "Enregistrer" du menu Outils -> Personaliser -> Clavier


Edition le 21/11/2010:

Code : Tout sélectionner

 en remplaçant
      oModuleCfgMgrSupplier = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier") 		' UNPUBLISHED service!!
	oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager("com.sun.star.text.TextDocument")
	oWriterShortCutMgr = oModuleCfgMgr.getShortCutManager
par:

	oModuleCfgMgr = Thiscomponent.getUIConfigurationManager()		'raccourcis au niveau document
	oDocShortCutMgr = oModuleCfgMgr.getShortCutManager
et en affectant la macro à l'ouverture du document, comme l'indique Spyre quelquepart, on peut disposer de touches de raccourcis particulières pour chaque document.
Merci donc à Spyre :D


Dernière remontée par joel275 le 04 janv. 2010 21:02.
A jour de LibreOffice et de Ubuntu