[Résolu][Basic] Dossier par défaut de chargement FilePickerLastDirectory

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
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1468
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

[Résolu][Basic] Dossier par défaut de chargement FilePickerLastDirectory

Message par jeanmi2403 »

Bonsoir,
La question me vient d'un de mes correspondants qui travaille sur des documents comportant beaucoup d'images situées dans le même dossier de chaque document.
Il souhaite qu'au chargement de chaque document le dossier par défaut de chargement (Insertion/Image) soit le dossier du document.
J'arrive (par macro) à modifier le chemin des images (Outils/Options/LibreOffice/Chemins/Images)

Code : Tout sélectionner

oPaths = CreateUnoService("com.sun.star.util.PathSettings")
oPaths.Graphic_user = "file:///I:/Projets/Images"
Mais ça n'est pas pris en compte. En fait Writer conserve le dernier chemin utilisé.
J'ai fini par trouver le paramètre dans la configuration avancée.
Arborescence :
Nom de préférence : org.openoffice.Office.Common->Misc>FilePickerLastDirectory->WriterInsertImage
On trouve à cet endroit une clé : org.openoffice.Office.Common:LastDirectory['WriterInsertImage'] Propriété : LastPath puis l'url du dossier.

C'est donc une propriété du FilePicker, mais je ne suis pas très à l'aise avec ce concept que j'utilise pourtant avec d'autres service UNO.
LA question : peut-on accéder à cette propriété et peut-on la modifier ?
Cordialement,
PS : Il se peut que je pose la même question sur le forum anglophone.
Dernière modification par jeanmi2403 le 18 janv. 2023 23:39, modifié 1 fois.
Jean-Michel
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12457
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [API]Accès à la configuration avancée de LibreOffice

Message par Bidouille »

Titre modifié pour plus de clarté : [API]Accès à la configuration avancée de LibreOffice

Merci de ne pas inventer votre propre balisage à l'avenir.
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1468
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [API]Accès à la configuration avancée de LibreOffice

Message par jeanmi2403 »

Bonjour,
Bidouille a écrit : 17 janv. 2023 07:32 Titre modifié pour plus de clarté :
Si je suis d'accord pour l'invention du balisage API (je cherchais quelque chose de plus général), je ne suis pas d'accord pour la clarté.
Si la solution est trouvée pour le paramètre que je cherche, elle pourra servir d'exemple pour tous les paramètres de la configuration avancée.
Bonne journée,
Jean-Michel
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1468
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Basic] Dossier par défaut de chargement FilePickerLastDirectory

Message par jeanmi2403 »

Bonsoir,
Avec l'aide de nos amis du forum anglophone, j'ai pu comprendre comment atteindre les paramètres de la configuration avancée. Ce qui m'a donné le code suivant :

Code : Tout sélectionner

Sub InitialiseFilePicker
Dim oDocument as Object
Dim sURL as String
sNodePath = "org.openoffice.Office.Common/Misc/FilePickerLastDirectory"
oDocument = ThisComponent
sURL = Repertoire(oDocument.URL)

Dim args(1) As new com.sun.star.beans.PropertyValue 
args(0).Name = "nodepath" 
args(0).Value = sNodePath
args(1).Name = "EnableAsync" 
args(1).Value = false 

aConfProv = createUnoService("com.sun.star.configuration.ConfigurationProvider") 
aParams = aConfProv.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess", args()) 

aParams.getByname("WriterInsertImage").LastPath = sURL
aParams.commitChanges()
Msgbox (ConvertFromURL(sUrl),MB_ICONINFORMATION,"Répertoire insertion")
end sub

Function Repertoire(sURL As String) As String
Dim sChemin() As String, sRep As String 
	sChemin = Split(sURL,"/")
	sChemin(Ubound(sChemin())) = ""
	Repertoire = join(sChemin, "/")
End Function
Connecté sur l'événement "Ouvrir le document", quelles que soient les actions précédentes, lors de l'ouverture du fichier, le dossier de chargement des images sera celui du document.
Cela fonctionne avec la boîte de dialogue LibreOffice et la boîte système.
Yalb-CheminImages.odt
La méthode (avec quelques adaptions) peut s'appliquer à la plupart des paramètres avancés. Ces paramètres se créent au fur et à mesure des usages.
ParamètresFilePickerLast.PNG
Bonne soirée,
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Jean-Michel
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX