Andrew , Kor
On 12/07/2011 03:14 AM, Fernand Vanrie wrote:
Dag Cor ,
Hi Fernand,
Fernand Vanrie wrote (06-12-11 13:17)
When have made some changes to a Dialog (stored in a Library) I
trye to
make this changes persitent for future use.
Not sure if I understand you.
But I've some basic projects, where users settings/choices in a
dialog are preserved for a next time the dialog is used.
I do that simply by writing to some local config if the Dialog is
executed and loading those settings when initialising the dialog.
Is that what you are looking for?
Yes i was also thinking on storing some settings "IN" a dialog
(mis-ussing some property of a control) but in this case i have a lot
of dialogs with Event URL's pointing to macro's in a document, we
change the stuf to a exension and all the pointers to the macro's go
the wrong way. So i tried to changes this event URL's but with no
luck to make them persistent .
Thanks
Fernand
The secrets are in the methods off the dialog.model
odialog.model.read( ???)
odialog.model.write(???)
found a confusing explaination in the DSK but nullware any examples
how
to use this read-write mechanism to make the changes persitent
I wrote an extension that is configurable. I store configuration
options using
com.sun.star.configuration.ConfigurationProvider
I learned it well enough to use it but I am certainly not an expert on
it. There is a complete example available if you install my colorizer
/ macro formatter (see
http://extensions.libreoffice.org/extension-center/code-colorizer-formatter)
Look in the CfgFmtCode module for some example code. My guess is that
you would need to create an extension to do this.
Another alternative is to directly modify a module to hold the values.
This would entail replacing an entire module that would probably
consist of function calls to return the data of interest. Not that
difficult to do, but it feels kind of dirty.
You can also just persist the values in a configuration file. Have not
given that much thought, but it should work.
Sadly, I cannot comment on directly modifying the dialog so that when
it is next loaded it will contain the values of interest, but I have
never done that.
Thanks for the respons, For making Dialogchanges "persistent" a learned
that the moqst simple way is to edit the dialog.xdl file.
For "registering" some values i use for some years the code made by "ms777"
the code below stores and recall a "photopath" for opening phocto's in a
dialog
public sElementnaam , sfotopath as string
public oParameter as object
sub addFotoPath()'sdir as string)
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
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
--
For unsubscribe instructions e-mail to: users+help@global.libreoffice.org
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.