Hi Carsten,

Hi Yan,

You should use the HierarchyAccess (look at com.sun.star.configuration.HierarchyAccess) service of the configuration which provides a com.sun.star.beans.XMultiPropertyState interface. There you can call setAllPropertiesToDefault(). According to Joerg Barfurth, the inventor of the OpenOffice.org configuration implementation, this should be possible for whole sets. It's not clear how well this part of the implementation is tested, therefore you have to try out. Solution 2 or 3 are nothing one would like to implement. We clearly need support for this kind of operation from the configuration itself.

1)Currently, we can reset an updatable property to its default state for group nodes, which support the interfaces com.sun.star.beans.XPropertyState and com.sun.star.beans.XMultiPropertyStates. 2)Individual set elements can not be reset because set nodes do not support com.sun.star.beans.XPropertyState, while the confiuration service supporting com.sun.star.beans.XPropertyWithState can be used to reset the set as a whole. 1) and 2) have been documented in our DevelopersGuide(http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Config/Updating_Configuration_Data)

And I wrote a marco as following, using method setAllPropertiesToDefault() for a group node and found it works fine. BUT set node still can not be removed indeed, using method setToDefaultAsProperty(). The result is just like:
 <node oor:name="Windows">
  <node oor:name="SplitWindow0" oor:op="remove"/>
  <node oor:name="SplitWindow2" oor:op="remove"/>
  <node oor:name="SplitWindow1" oor:op="remove"/>
  <node oor:name="SplitWindow3" oor:op="remove"/>
 </node>

Besides, to iterate over the nodes of a set doesn't work correctly when a set node of the user layer doesn't exist in the default layer. So I suppose the feature for retrieving default value for set nodes is still missing in the configmgr at present. Could you investigate it further?

REM  *****  BASIC  *****
Sub retrieveDefaultCfgValue
        Dim rProps(1) as new com.sun.star.beans.PropertyValue
aConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")

        rProps(0).Name = "nodepath"
        rProps(0).Value = "org.openoffice.Office.Common"
        rProps(1).Name = "locale"
        rProps(1).Value = "*" 
aConfig = aConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess", rProps())
        obj = aConfig.getByHierarchicalName("Misc")
        if hasUnoInterfaces(obj, "com.sun.star.beans.XMultiPropertyStates") then
                obj.setAllPropertiesToDefault()
        endif
        aConfig.commitChanges()
        
        rProps(0).Value = "org.openoffice.Office.Views"
aConfig = aConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess", rProps())
        obj = aConfig.getByHierarchicalName("Windows")
        if hasUnoInterfaces(obj,"com.sun.star.beans.XPropertyWithState") then
                obj.setToDefaultAsProperty()
        endif
        aConfig.commitChanges()
End Sub

Regards,
Carsten
Regards,
Yan



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@framework.openoffice.org
For additional commands, e-mail: dev-h...@framework.openoffice.org

Reply via email to