Ah I think I know the problem. vtkSMProxy::Copy() copies all properties
even those on the sub proxies. A representation is a complex beast with
several internal subproxies which are linked up internally. You actually
simply want to save/restore the exposed properties so I'd do something
like follows:
void Copy(vtkSMProxy* src, vtkSMProxy* dest)
{
vtkSMPropertyIterator* iter = dest->NewPropertyIterator();
for (iter->Begin(); !iter->IsAtEnd(); iter->Next())
{
vtkSMProperty* destProp = iter->GetProperty();
vtkSMProperty* srcProp = src->GetProperty(iter->GetKey());
if (destProp && srcProp)
{
destProp->Copy(srcProp);
}
}
iter->Delete();
}
Use the above Copy instead of vtkSMProxy::Copy().
Utkarsh
Nehme Bilal wrote:
Hi again,
I did save and restore the source proxy and representations and it's
working.
All display properties are saved/restored perfectly, but after
restoring, changing "color" or "Style" properties from the object
inspector has no effect. Other properties like "visible" or
"Transformation" works !
after restoring I called:
vtkSMObject::GetProxyManager()->UpdateRegisteredProxiesInOrder();
but it didn't solve the problem.
On Wed, 19 Nov 2008 13:14:27 -0500
Utkarsh Ayachit <[EMAIL PROTECTED]> wrote:
For saving the object inspector properties you'll have to save/restore
the state for the source proxy (and not merely it's representation
proxy).
Utkarsh
Nehme Bilal wrote:
Thank you Utkarsh !
it works but I have some problems like:
- after restoring the proxy, changing some display properties in
Paraview has no effect (like color ...)
- only the display properties are saved/restored. (variables in
object inspector "properties" tab are not restored)
It's probably the way that I'm casting the source proxy and some
staff like that.
I'll try to solve these problems and let you know.
thank you !
On Wed, 19 Nov 2008 10:20:52 -0500
Utkarsh Ayachit <[EMAIL PROTECTED]> wrote:
Here's one way of doing it:
vtkSMProxyManager* pxm = vtkSMObject::GetProxyManager();
vtkSMProxy *tempProxy = pxm->NewProxy(
src->GetXMLGroup(),
src->GetXMLName());
tempProxy->Copy(src);
....
src->Copy(tempProxy);
Utkarsh
Nehme Bilal wrote:
tempProxy is just a proxy I created using:
vtkSMProxy tempProxy = vtkSMProxy::New();
I am trying to save/restore all the object properties displayed in
the object inspector.
On Wed, 19 Nov 2008 09:30:55 -0500
Utkarsh Ayachit <[EMAIL PROTECTED]> wrote:
Nehme,
What properties are you changing/trying to restore? Is "tempProxy"
of the same type as "src"?
Utkarsh
Nehme Bilal wrote:
Hello,
Sorry I missed a few commas in the last message. this is the
correct one:
I am looking for a way to save a proxy properties and restore it
later.
The only way I found is by saving and restoring the state using:
virtual vtkPVXMLElement* SaveState(vtkPVXMLElement* root);
virtual int LoadState(vtkPVXMLElement* element,
vtkSMStateLoaderBase* loader);
I don't want to use LoadState because this method create a new
proxy. I just want to restore all properties to the existing proxy.
There is also a method called Copy (void Copy(vtkSMProxy* src),
this method will copy all src properties to another proxy:
//copying properties to tempProxy
tempProxy->Copy(src,0,vtkSMProxy::COPY_PROXY_PROPERTY_VALUES_BY_CLONING);
I tried to change some display properties in Paraview and then
restore using:
src->Copy(tempProxy,0,vtkSMProxy::COPY_PROXY_PROPERTY_VALUES_BY_CLONING);
src->UpdateVTKObjects();
but nothing is restored ! why? Is there any other way to do that?
(suppose that I have only on source)
Thank you
_______________________________________________
ParaView mailing list
[email protected]
http://www.paraview.org/mailman/listinfo/paraview
_______________________________________________
ParaView mailing list
[email protected]
http://www.paraview.org/mailman/listinfo/paraview