Hi Utkarsh,

The addPropertyLink works exactly as desired and triggers the necessary update 
mechanism. For a few places I still have direct connect() to catch the signal 
and do something additional with it, but that was expected. I don't know why I 
still need an SetImmediateUpdate to get the changes propagated properly, but 
that can wait. The most important thing is that I can now load my reader module 
in paraview 5.2 and move forward.

Thank you,
/mark

________________________________________
From: Utkarsh Ayachit <utkarsh.ayac...@kitware.com>
Sent: Thursday, January 5, 2017 4:52:32 AM
To: Mark Olesen
Cc: paraview@paraview.org
Subject: Re: [Paraview] upgrading reader module/plugin

Mark,

As you can expect, connecting Qt widgets to vtkSMProperty's on proxies
in a two-way-link is common in ParaView panels and hence ParaView
provides quite a few ways for doing that. For your use-case, where
you're connecting a QCheckBox to an IntVectorProperty on the proxy,
your pqPropertyWidget subclass can do something like the following:

Assuming your XML for the group is as follows:

QCheckBox *checkbox = ...
vtkSMProperty* smProperty = smgroup->GetProperty("InterpolateFields");
this->addPropertyLink(checkbox, "checked", SIGNAL(toggled(bool), smProperty);

That should do it.

Utkarsh

On Wed, Jan 4, 2017 at 9:48 AM, Mark Olesen <mark.ole...@esi-group.com> wrote:
> I'm currently upgrading a reader module from using a 
> pqAutoGeneratedObjectPanel to a using a property group widget (as per 
> http://www.paraview.org/Wiki/Plugin_HowTo#Adding_Customizations_for_Properties_Panel).
>
> I have my bunch of properties in a PropertyGroup and have a panel_widget 
> associated with them. Everything loads up, and using printf() I can verify 
> that the property values are all being updated.
> However, not only does it seems rather clunky, I cannot get the "Apply" 
> button on the property panel to notice when the property values have been 
> updated.
>
> Here's a basic sketch of what I have:
>
> // Get the property from the group (with down-cast):
>     interpolateFields_ = group->GetProperty("interpolate");
>
> // Provide a checkbox as widget for it - two-column layout.
>   QCheckBox* b = new QCheckBox(prop->GetXMLLabel(), this);
>   form->addWidget(b, row, col, Qt::AlignLeft);
>
> // Connect to slot:
>     connect(b, SIGNAL(toggled(bool)), this, SLOT(interpolateFields(bool)));
>
> // This is ugly, but seems to be needed???
>     interpolateFields_->SetImmediateUpdate(true);
>
> // And the slot itself
> void interpolateFields(bool checked)
> {
>     interpolateFields_->SetElement(0, checked);
>     // this->setModified();
>     //^^^ used to work with pqAutoGeneratedObjectPanel
> }
>
> I used to rely on the setModified() method from the 
> pqAutoGeneratedObjectPanel, but now can't seem to get from the SMproxy to the 
> pqProxy or whatever.
>
> Or am I going about this entirely the wrong way?
> FWIW, here are the relevant sub-entries from the XML, in case there is 
> something missing there:
>
>     <IntVectorProperty
>       name="InterpolateFields"
>       command="SetInterpolateVolFields"
>       number_of_elements="1"
>       default_values="1"
>       animateable="0">
>       <BooleanDomain name="bool"/>
>       <Documentation></Documentation>
>     </IntVectorProperty>
>
>   <PropertyGroup
>     label="General Controls"
>     panel_widget="my_reader_controls">
>     <Property name="InterpolateFields"/>
>     ...
>   </PropertyGroup>
>
> Unfortunately, the  Examples/Plugins/PropertyWidgets is a bit scanty here.
>
> Thanks for any advice,
>
> /mark
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at: 
> http://paraview.org/Wiki/ParaView
>
> Search the list archives at: http://markmail.org/search/?q=ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Search the list archives at: http://markmail.org/search/?q=ParaView

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/paraview

Reply via email to