[Paraview] Example of displaying information
Michael Jackson
mike.jackson at bluequartz.net
Tue Nov 25 09:20:32 EST 2008
The code can be viewed from the following web address:
http://www.bluequartz.net/viewvc/CTMD/PVRoboMet
(It is a slow CVS server so give it some time..)
I'll try to summarize what you will need to do.
SERVER SIDE:
Within your filter/reader that you want to get information about
you will need to implement all the Get* methods of the values that you
want information about. For example in the file src/Readers/
vtkH5RoboMetReader.h you will see methods such as
vtkTypeInt32 GetCurrentMosaicWidth();
vtkTypeInt32 GetCurrentMosaicHeight();
Once you have those implemented you will next need to add some XML to
the Server Manager XML file (pv3_xml/PVRoboMet_PVSM.xml in my code base)
To expose those 2 properties from above we need to add the following
xml (Assuming you already have a complete Server Manager XML file
working..)
<IntVectorProperty name="CurrentMosaicWidth"
command="GetCurrentMosaicWidth"
number_of_elements="1"
default_values="0"
information_only="1" >
<SimpleIntInformationHelper />
</IntVectorProperty>
<IntVectorProperty name="CurrentMosaicHeight"
command="GetCurrentMosaicHeight"
number_of_elements="1"
default_values="0"
information_only="1" >
<SimpleIntInformationHelper />
</IntVectorProperty>
That is all for the SERVER SIDE of things. Now for the Client Side of
things.
Take a look in the src/PV3ClientPlugin folder for the source.
In the pqH5RoboMetReaderPanel class you will see that I inherit from
pqLoadedFormObjectPanel. There may be other ways to do this but I used
this class. I then created my GUI QtPanel inside of QtDesigner placing
my QLabels into my design. Name all the QLabels appropriately for your
case.
Some of the details of the class can be seen in the .cpp file. In
the constructor of the class I get pointers to all the QLabels that I
want to set the value for.
MosaicWidth = qFindChild<QLabel*>(this, "MosaicWidth");
MosaicHeight = qFindChild<QLabel*>(this, "MosaicHeight");
Note the value in the double quotes in the arguments is the "Object
Name" that you gave to your label in QtDesigner.
You need to implement the updateInformationAndDomains() methods from
the super class to actually get the information from the server side:
void pqH5RoboMetReaderPanel::updateInformationAndDomains()
{
pqLoadedFormObjectPanel::updateInformationAndDomains();
updateIntValue(this->MosaicWidth, "CurrentMosaicWidth", 0);
updateIntValue(this->MosaicHeight, "CurrentMosaicHeight", 0);
}
and I implemented this method:
void pqH5RoboMetReaderPanel::updateIntValue(QLabel* qLabel,
QString property,
qint32 index)
{
vtkSMProperty* smProperty = this->proxy()-
>GetProperty(property.toAscii());
if (NULL == smProperty)
{
std::string msg = "SMProperty [int] was NULL for ";
msg.append(property.toAscii() );
DebugTrace(<< msg.c_str() );
}
vtkSMIntVectorProperty* dvp =
vtkSMIntVectorProperty::SafeDownCast(smProperty);
int value = dvp->GetElement(index);
qLabel->setText(QString::number(value));
}
That should get you going enough. Let me know if you have any
questions. I guess this might be a good one to put on the Wiki as a
tutorial.
_________________________________________________________
Mike Jackson mike.jackson at bluequartz.net
www.bluequartz.net
On Nov 25, 2008, at 2:44 AM, Bryn Lloyd wrote:
> Hi Micheal,
>
> Yes, I would be interested. Thanks!
>
> -Bryn
>
>
>
> Michael Jackson wrote:
>> I have some example code that might help if you are interested..
>> On Nov 24, 2008, at 5:43 PM, Moreland, Kenneth wrote:
>>> A straightforward way of implementing this would be to add a
>>> custom view via a plugin. The Plugin HowTo Wiki page describes
>>> how to make a plugin with a custom view in it. The implementation
>>> to get the data you need to display in the view is up to you.
>>>
>>> http://www.paraview.org/Wiki/Plugin_HowTo
>>>
>>> -Ken
>>>
>>>
>>> On 11/24/08 10:24 AM, "Bryn Lloyd" <blloyd at vision.ee.ethz.ch> wrote:
>>>
>>> Hi
>>>
>>> I have been looking for an example, which would help me understand
>>> how
>>> I can get some information about a dataset and display it in a GUI
>>> element (e.g. in a QLabel).
>>>
>>> E.g. as an example, I would like to have a panel or some other gui
>>> element, which displays certain values which it gets from a data set
>>> (e.g. number of lines in a polydata, or total volume of a
>>> unstructured
>>> grid, or ...)
>>>
>>> Can you please suggest how I could achieve this?
>>>
>>> Thanks,
>>> Bryn
>>>
>>> **** Kenneth Moreland
>>> *** Sandia National Laboratories
>>> ***********
>>> *** *** *** email: kmorel at sandia.gov
>>> ** *** ** phone: (505) 844-8919
>>> *** web: http://www.cs.unm.edu/~kmorel
>>>
>> _________________________________________________________
>> Mike Jackson mike.jackson at bluequartz.net
>> BlueQuartz Software www.bluequartz.net
>> Principal Software Engineer Dayton, Ohio
>
>
> --
> -------------------------------------------------
> Bryn Lloyd
> Computer Vision Laboratory
> ETH Zürich, Sternwartstrasse 7
> CH - 8092 Zürich, Switzerland
> Tel: +41 44 63 27690
> Fax: +41 44 63 21199
> -------------------------------------------------
More information about the ParaView
mailing list