[Libreoffice] Storage of user's configuration
Martin Richard
martius at martiusweb.net
Tue Jan 24 09:37:57 PST 2012
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>
> 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 listLibreOffice at lists.freedesktop.orghttp://lists.freedesktop.org/mailman/listinfo/libreoffice
>
>
>
>
> _______________________________________________
> LibreOffice mailing list
> LibreOffice at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/libreoffice
>
>
--
Martin <http://www.martiusweb.net> Richard
www.martiusweb.net <http://www.martiuweb.net>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20120124/9813db2a/attachment-0001.htm>
More information about the LibreOffice
mailing list