[Paraview] vtkSMProxy saving/restoring

Utkarsh Ayachit utkarsh.ayachit at kitware.com
Wed Nov 19 14:01:55 EST 2008


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 <utkarsh.ayachit at kitware.com> 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 <utkarsh.ayachit at kitware.com> 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 <utkarsh.ayachit at kitware.com> 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
>>>>>>> ParaView at paraview.org
>>>>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>>>>
>>>>>
>>>>>
>>>
>>>
> 
> 


More information about the ParaView mailing list