Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


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.