[Libreoffice] Storage of user's configuration
Fernand Vanrie
sos at pmgroup.be
Tue Jan 24 09:59:17 PST 2012
Martin,
I supose it is already cross platform and environment independent, neve
tested it but interesting to know.
> Hi Fernand,
>
> Thank you for your response, it may help indeed.
>
> It seems that you create your own xcs file from scratch and store it
> in a custom location. I think that in my case, I will need to find a
> way to make it cross platform and environment independent.
>
> Cheers
>
> 2012/1/24 Fernand Vanrie <sos at pmgroup.be <mailto:sos at pmgroup.be>>
>
> Martin ,
>
> i use folowed BASIC code to make a "path" consitent , maybe it
> helps ?
>
> public sElementnaam , sfotopath as string
> public oParameter as object
>
> sub addFotoPath()
> sRegisterPath = "/org.openoffice.OpmaakMacro.FotoPath/Parameters/"
> CreateRegistrySchemaPathIfNotPresent(sRegisterPath)
> aSettings = GetConfigSettings(sRegisterPath)
> sElementNaam = "FOTO"
> sParaNaam = "FotoPath"
> sParameter = "c:\test"
>
> call addParameter(aSettings, sParaNaam, sParaMeter)
>
> end sub
> sub getFotoPath
> sRegisterPath =
> "/org.openoffice.OpmaakMacro.FotoPath/Parameters/"
> aSettings = GetConfigSettings(sRegisterPath)
> asElNames = aSettings.ElementNames
> if aSettings.hasByName("FOTO") then
> oParameter = aSettings.getByName("FOTO")
>
> sFOTOpath = oParameter.getByName("ParameterString")
> else
> sFOTOpath = ""
> endif
> end sub
>
>
> function GetConfigSettings(sRegisterPath as String) as Object
> 'Taken from DannyB
> Dim args(1) As new com.sun.star.beans.PropertyValue
> aConfProv =
> createUnoService("com.sun.star.configuration.ConfigurationProvider")
> args(1).Name = "nodepath"
> args(1).Value = sRegisterPath
> args(0).Name = "EnableAsync"
> args(0).Value = false
> GetConfigSettings =
> aConfProv.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess",
> args())
> end function
>
> sub CreateRegistrySchemaPathIfNotPresent(sRegisterPath as String)
> oPathSettings = CreateUnoService( "com.sun.star.util.PathSettings" )
> xray oPathSettings
> sPathConfig = oPathSettings.Work 'Config
>
> asPath1 = split(sRegisterPath, "/")
> sFullDotPath = asPath1(1)
> asPath2 = Split(sFullDotPath,".")
> sFolder = join(asPath2,"/")
>
>
> sRegistrySchemaPath = "file:///H:/" & sFolder & ".xcs"
>
> sFileName = asPath2(UBound(asPath2))
> sPackage = left(sFullDotPath, len(sFullDotPath)-len(sFileName)-1)
>
> oSFA = createUNOService ("com.sun.star.ucb.SimpleFileAccess")
> if not oSFA.exists(sRegistrySchemaPath) then 'See the chapter 15
> of the dev guide for some explanation
> print sRegistrySchemaPath
> oOutStream = oSFA.openFileWrite(sRegistrySchemaPath)
> oOutText = createUNOService ("com.sun.star.io.TextOutputStream")
> oOutText.setOutputStream(oOutStream)
>
> oOutText.WriteString("<?xml version='1.0' encoding='UTF-8'?>" &
> Chr(10))
>
> oOutText.WriteString("<oor:component-schema oor:name=""" &
> sFileName & """ oor:package=""" & sPackage & """ " )
> oOutText.WriteString("xml:lang=""en-US""
> xmlns:oor=""http://openoffice.org/2001/registry"
> <http://openoffice.org/2001/registry>" " )
>
> oOutText.WriteString("xmlns:xs=""http://www.w3.org/2001/XMLSchema"
> <http://www.w3.org/2001/XMLSchema>" " )
>
> oOutText.WriteString("xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"
> <http://www.w3.org/2001/XMLSchema-instance>">" & Chr(10))
>
> oOutText.WriteString("<templates>" & Chr(10))
> oOutText.WriteString(" <group oor:name=""Parameter"">" & Chr(10))
> oOutText.WriteString(" <prop oor:name=""ParameterName""
> oor:type=""xs:string""/>" & Chr(10))
> oOutText.WriteString(" <prop oor:name=""ParameterString""
> oor:type=""xs:string""/>" & Chr(10))
> oOutText.WriteString(" </group>" & Chr(10))
> oOutText.WriteString("</templates>" & Chr(10))
>
> oOutText.WriteString("<component>" & Chr(10))
> oOutText.WriteString(" <set oor:name=""Parameters""
> oor:node-type=""Parameter""/>" & Chr(10))
> oOutText.WriteString("</component>" & Chr(10))
>
> oOutText.WriteString("</oor:component-schema>" & Chr(10))
>
> oOutText.closeOutput()
> oOutStream.closeOutput
> endif
>
> end sub
>
> sub addParameter(aSettings as Object, ParameterName as String,
> ParameterString as String)
>
> Dim arParameters1(0) As new com.sun.star.beans.PropertyValue
> arParameters1(0).Name = ParameterName
> arParameters1(0).Value = ParameterString
> call setParameters(aSettings, arParameters1(0))
>
> end sub
>
> function getParameterCount(aSettings as Object) as long
> getParameterCount = UBound(aSettings.ElementNames)+1
> end function
>
>
>
> sub setParameters(aSettings as Object, aNewValue as Object)
> if aSettings.hasbyName(sElementnaam) then
> 'print aNewvalue.name
> oParameter = aSettings.createInstance()
> oParameter.ParameterName = aNewValue.Name
> oParameter.ParameterString = aNewValue.Value
>
> aSettings.ReplaceByName(sElementNaam , oParameter)
>
> aSettings.commitChanges()
> else
> oParameter = aSettings.createInstance()
> oParameter.ParameterName = aNewValue.Name
> oParameter.ParameterString = aNewValue.Value
>
> aSettings.insertByName(sElementNaam , oParameter)
> aSettings.commitChanges()
> endif
>
> end sub
>> Hi everybody,
>>
>>
>> I'm hacking the cross-platform filepicker (in
>> fpicker/source/office). I added a "Places" (bookmarks) list on
>> the left and I would like to save the entries that the user
>> bookmarked .
>>
>> Cedric Bosdonnat told me to look at xcu and xcs files, but I'm a
>> bit lost. I'm looking for a code sample where user's persistent
>> configuration is manipulated (read and written) and/or anything
>> that can be usefull, like search keywords, links to old threads
>> in the mailing list, which would help me to identify some good
>> practices (naming conventions, for instance).
>>
>> Cheers,
>> Martin Richard
>>
>>
>> _______________________________________________
>> LibreOffice mailing list
>> LibreOffice at lists.freedesktop.org <mailto:LibreOffice at lists.freedesktop.org>
>> http://lists.freedesktop.org/mailman/listinfo/libreoffice
>
>
>
> _______________________________________________
> LibreOffice mailing list
> LibreOffice at lists.freedesktop.org
> <mailto:LibreOffice at lists.freedesktop.org>
> http://lists.freedesktop.org/mailman/listinfo/libreoffice
>
>
>
>
> --
> Martin Richard
> www.martiusweb.net <http://www.martiuweb.net>
>
>
>
> _______________________________________________
> LibreOffice mailing list
> LibreOffice at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/libreoffice
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20120124/c30613fe/attachment-0001.htm>
More information about the LibreOffice
mailing list