[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