[Paraview] How to pass array from Server to Client with as 'Information Helper"
Michael Jackson
mike.jackson at bluequartz.net
Fri Mar 26 17:12:49 EDT 2010
THANKS! that worked great. One last item - where would I look for an
example of have a custom widget (QListWidget) that is NOT getting
registered with the proxy mananger, so that when something changes,
like the selection, the "Accept" button gets "lighted up". I am trying
to work through the pqContourWidget but not sure if that is the best
place to start.
___________________________________________________________
Mike Jackson www.bluequartz.net
Principal Software Engineer mike.jackson at bluequartz.net
BlueQuartz Software Dayton, Ohio
On Mar 26, 2010, at 4:40 PM, Utkarsh Ayachit wrote:
> Try returning a vtkIntArray from your reader instead and use
> <IntArrayInformationHelper /> as the information helper. (Look at it's
> use in readers.xml).
>
> Utkarsh
>
> On Fri, Mar 26, 2010 at 4:36 PM, Michael Jackson
> <mike.jackson at bluequartz.net> wrote:
>> The problem is down in a generated file on the server side.
>>
>> if (!strcmp("GetNeighborList",method) &&
>> msg.GetNumberOfArguments(0) == 3)
>> {
>> vtkClientServerStreamDataArg<int > temp0(msg, 0, 2);
>> if(temp0)
>> {
>> op->GetNeighborList(temp0);
>> return 1;
>> }
>> }
>>
>> The problem is that msg.GetNumberOfArguments(0) returns 2 and NOT
>> 3. I have
>> no idea of the internals of the msg object to try and figure out
>> what is
>> trying to be passed. Is the client sending in a index also? 2
>> pointers? no
>> idea.
>>
>> I'll just assume from this that it is basically impossible to pass
>> an array
>> from the server to the Client in an "Information Only" fashion. I
>> guess I
>> can encode the values to a string and send that. Seems odd to have
>> to encode
>> the data into a string...
>>
>> If anyone else has a better Idea I would much appreciate it.
>> ___________________________________________________________
>> Mike Jackson www.bluequartz.net
>> Principal Software Engineer mike.jackson at bluequartz.net
>> BlueQuartz Software Dayton, Ohio
>>
>>
>> On Mar 26, 2010, at 3:23 PM, Michael Jackson wrote:
>>
>>> I have a custom reader. Part of the reader is getting a
>>> "NeighborList"
>>> which is an vtkIntArray object although I have declared the
>>> following
>>> methods in my "reader" class:
>>>
>>> int* GetNeighborList();
>>> void GetNeighborList(int* list);
>>> vtkIdType GetNumberOfNeighbors();
>>>
>>> And in my ServerManagerXML file I have the following:
>>> <IntVectorProperty name="NeighborList"
>>> command="GetNeighborList"
>>> argument_is_array="1"
>>> number_of_elements="0"
>>> repeat_command="0"
>>> number_of_elements_per_command="1"
>>> use_index="0" >
>>> <SimpleIntInformationHelper />
>>> <Documentation>
>>> This property lists the neighbors of the grain
>>> </Documentation>
>>> </IntVectorProperty>
>>>
>>> On the Client side I have the following bit of code to populate a
>>> QListWidget:
>>>
>>> void pqH5TiDataReaderPanel::updateNeighborList(QListWidget*
>>> qListWidget,
>>> QString property)
>>> {
>>> 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() );
>>> return;
>>> }
>>> vtkSMIntVectorProperty* intProperty
>>> =
>>> vtkSMIntVectorProperty::SafeDownCast(smProperty);
>>> if (NULL == intProperty)
>>> {
>>> std::string msg = "Could not SafeDownCase to
>>> vtkSMIntVectorProperty for
>>> property ";
>>> msg.append(property.toAscii() );
>>> DebugTrace(<< msg.c_str() );
>>> return;
>>> }
>>> //intProperty->GetArgumentIsArray();
>>> int* elements = intProperty->GetElements();
>>> int nElements = intProperty->GetNumberOfElements(); //<== ALWAYS 0
>>> qListWidget->clear(); // Remove all the content
>>>
>>> for (int i = 0; i < nElements; ++i)
>>> {
>>> qListWidget->addItem(QString::number(elements[i])); //<====
>>> NEVER GETS
>>> HERE
>>> }
>>> }
>>>
>>> So, what am I doing wrong? I have tried reading through the relevant
>>> sections of the "ParaView Guide" but nothing is really jumping
>>> out. Also
>>> went looking for examples somewhere in the ParaView source code
>>> but came up
>>> empty. The ContourWidget is close but it "sends" its array, it never
>>> receives one from the server.
>>>
>>> Any pointers would be great and much appreciated.
>>> ___________________________________________________________
>>> Mike Jackson www.bluequartz.net
>>> Principal Software Engineer mike.jackson at bluequartz.net
>>> BlueQuartz Software Dayton, Ohio
>>>
>>>
>>
>> _______________________________________________
>> 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
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.paraview.org/mailman/listinfo/paraview
>>
More information about the ParaView
mailing list