Thanks, I had a look at the code. I think it will make things a lot clearer for me. Thanks for making it available.

Cheers, Bryn





Michael Jackson wrote:
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                  [EMAIL PROTECTED]
            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" <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
**  ***  **  phone: (505) 844-8919
   ***      web:   http://www.cs.unm.edu/~kmorel

_________________________________________________________
Mike Jackson                  [EMAIL PROTECTED]
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
-------------------------------------------------


_______________________________________________
ParaView mailing list
[email protected]
http://www.paraview.org/mailman/listinfo/paraview



--
-------------------------------------------------
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
-------------------------------------------------
_______________________________________________
ParaView mailing list
[email protected]
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to