[Libreoffice] Storage of user's configuration

Fernand Vanrie sos at pmgroup.be
Tue Jan 24 09:17:26 PST 2012


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"" " )
   oOutText.WriteString("xmlns:xs=""http://www.w3.org/2001/XMLSchema"" " )
   
oOutText.WriteString("xmlns:xsi=""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
> http://lists.freedesktop.org/mailman/listinfo/libreoffice


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20120124/e26662d2/attachment.html>


More information about the LibreOffice mailing list