[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