[Paraview] Object Inspector Tabs

Panneton, Brian C USA CTR (US) brian.c.panneton.ctr at mail.mil
Fri Aug 12 09:55:54 EDT 2011


In addition, is it possible to have the panel determine which representation is up? The options I am adding really only affect the representation that is part of the plugin. Thus, I could disable them when a different representation is up.

________________________________
From: Brian Panneton [brian.panneton at gmail.com]
Sent: Monday, August 08, 2011 7:54 PM
To: Utkarsh Ayachit
Cc: Panneton, Brian C USA CTR (US); ParaView
Subject: Re: [Paraview] Object Inspector Tabs

My plugin would act like the display tab and affect the active view. For the case when the source is created I guess it could just be saved. In general, the representation options just affect how the data actually looks (size, color, and things like toggles for labels and bar scales).

However in this case would I not just be storing it in the vtkMultiBlockSet and reading it out when I load the Representation? In that case I can just have all the widgets on the panel be part of the reader. The reason I was trying to avoid this is that I am making a time based plugin which will be calling the readers Request Data very often, thus I was hoping to avoid copying the data as often.

An example would be great if there is another way.

Thanks,
Brian

On Mon, Aug 8, 2011 at 5:29 PM, Utkarsh Ayachit <utkarsh.ayachit at kitware.com<mailto:utkarsh.ayachit at kitware.com>> wrote:
Brian,

There are a few things to remember about ParaView:
* the source/filter and it's representation proxy are created
separately. The representation is generally not created until after
the first accept.
* a source can have multiple representation proxies (one for each
view). As view are split/closed/visibility changed, these
representation can get created/deleted dynamically. pqPipelineSource
fires signals (representationAdded / representationRemoved) when that
happens.
* there is at most one active view at one time. Sicne there's one
representation proxy per source per view, you'll see that the display
tab is refreshed as one changes the active view.

Now based on this, you need to decide how your panel is going to behave:
* Does it affect all representations in all views, or does it behave
like the display-tab and affect only the active view.
* When the source if first created, it's not going to have any
representations, how do you want the panel to behave in that case. One
possibility is that the checkbox-value is saved and then when
represenation is added, you change the property based on the value of
the checkbox.

If you don't mind elaborating on the use-case that you're trying to
solve, I can hack the plugin you sent me to behave accordingly.

Utkarsh





On Mon, Aug 8, 2011 at 1:20 PM, Utkarsh Ayachit
<utkarsh.ayachit at kitware.com<mailto:utkarsh.ayachit at kitware.com>> wrote:
> Can you package your code a plugin that you can share and I can try it
> out? It will be easier to figure out the problems when I look at the
> code.
>
> Utkarsh
>
> On Mon, Aug 8, 2011 at 12:57 PM, Panneton, Brian C USA CTR (US)
> <brian.c.panneton.ctr at mail.mil<mailto:brian.c.panneton.ctr at mail.mil>> wrote:
>> I'm still somewhat unsure on how to do this since I now have two ProxyGroups (sources and representations) within one Custom Panel. When I do, vtkSMIntVectorProperty* prop = dynamic_cast<vtkSMIntVectorProperty*>(this->proxy()->GetProperty("GlyphLegend"));, prop is null. When I do this for widgets that are within the ProxyGroup 'source' they work and can be updated as you would expect.
>>
>> My guess is because I should be using a different proxy. I tried to do this by using this->proxy()->GetProxyManager()->GetProxy("representations", "MyRepresentation") however this just segfaults.
>>
>> Any ideas?
>> ________________________________________
>> From: Utkarsh Ayachit [utkarsh.ayachit at kitware.com<mailto:utkarsh.ayachit at kitware.com>]
>> Sent: Friday, August 05, 2011 4:15 PM
>> To: Panneton, Brian C USA CTR (US)
>> Subject: Re: [Paraview] Object Inspector Tabs
>>
>> Is yours a custom panel? In that case you have to manually update the
>> property using the value from the widget (use can use
>> this->propertyManager() to help you with linking widgets to
>> properties).
>>
>> On Fri, Aug 5, 2011 at 12:03 PM, Panneton, Brian C USA CTR (US)
>> <brian.c.panneton.ctr at mail.mil<mailto:brian.c.panneton.ctr at mail.mil>> wrote:
>>> Ah, I had the functions in protected. Once I moved them to public it worked.
>>>
>>> However, it only called the Set on initial load. It does not call it after I modify it and press the accept button. In my panel I have created a QObject::connect for the widget and the signal stateChanged(int). I catch the signal and do this->SetModified(), allowing me to hit accept. Once I hit accept, the SetSomeBoolVar(int) never gets called.
>>>
>>> Do I have to manually update the Property throught the proxy? I had thought it would be taken care of for me.
>>>
>>> Thanks,
>>> Brian
>>>
>>> ________________________________________
>>> From: Utkarsh Ayachit [utkarsh.ayachit at kitware.com<mailto:utkarsh.ayachit at kitware.com>]
>>> Sent: Friday, August 05, 2011 11:07 AM
>>> To: Panneton, Brian C USA CTR (US)
>>> Cc: ParaView
>>> Subject: Re: [Paraview] Object Inspector Tabs
>>>
>>> The fact that "SetSomeBoolVar" is not in the *CLientServer.cxx file is
>>> the problem. It has nothing to do with the XML, but for some reason
>>> the parser that generates the CLientServer.cxx file decided that the
>>> method is not "wrappable". If you can attach the header file, I may be
>>> able to tell what the issue may be.
>>>
>>> Utkarsh
>>>
>>> On Fri, Aug 5, 2011 at 10:50 AM, Panneton, Brian C USA CTR (US)
>>> <brian.c.panneton.ctr at mail.mil<mailto:brian.c.panneton.ctr at mail.mil>> wrote:
>>>> The file was created, however it does not contain "SetSomeBoolVar". Does it matter that I have two ProxyGroups in my ServerManagerConfiguration: sources and representations?
>>>> ________________________________________
>>>> From: Utkarsh Ayachit [utkarsh.ayachit at kitware.com<mailto:utkarsh.ayachit at kitware.com>]
>>>> Sent: Friday, August 05, 2011 10:19 AM
>>>> To: Panneton, Brian C USA CTR (US)
>>>> Cc: ParaView
>>>> Subject: Re: [Paraview] Object Inspector Tabs
>>>>
>>>> Try to locate vtkMyRepresentationClientServer.cxx file in the binary
>>>> directory. Was that generated? Open and see if it include a condition
>>>> for "SetSomeBoolVar" in it.
>>>>
>>>> Utkarsh
>>>>
>>>> On Fri, Aug 5, 2011 at 10:07 AM, Panneton, Brian C USA CTR (US)
>>>> <brian.c.panneton.ctr at mail.mil<mailto:brian.c.panneton.ctr at mail.mil>> wrote:
>>>>> Yes, this is what I have for ADD_PARAVIEW_PLUGIN
>>>>>
>>>>> [code]
>>>>> ADD_PARAVIEW_PLUGIN(MyPlugin "1.0"
>>>>>    SERVER_MANAGER_XML plugin/MyPlugin.xml
>>>>>    SERVER_MANAGER_SOURCES
>>>>>        vtkReader/vtkMyReader.cxx
>>>>>        representations/vtkMyRepresentation.cxx
>>>>>    GUI_RESOURCE_FILES plugin/MyPluginGUI.xml
>>>>>    GUI_INTERFACES ${IFACES}
>>>>>    SOURCES panel/MyReaderPanel.cxx
>>>>>            ${MOC_SRCS} ${IFACE_SRCS}
>>>>>            ${RCS_SOURCES} ${UI_BUILT_SOURCES}
>>>>> )
>>>>> [/code]
>>>>>
>>>>> For my ProxyGroup representations XML I have this:
>>>>>
>>>>> [code]
>>>>> <ProxyGroup name="representations">
>>>>>        <RepresentationProxy name="MyRepresentation"
>>>>>            class="vtkMyRepresentation"
>>>>>            processes="client|renderserver|dataserver"
>>>>>            base_proxygroup="representations"
>>>>>            base_proxyname="SurfaceRepresentation">
>>>>>
>>>>>               <IntVectorProperty
>>>>>                  name="GlyphLegend"
>>>>>                  command="SetSomeBoolVar"
>>>>>                  number_of_elements="1"
>>>>>                  default_values="1">
>>>>>                 <BooleanDomain name="bool"/>
>>>>>              </IntVectorProperty>
>>>>>        </RepresentationProxy>
>>>>>
>>>>>        <Extension name="GeometryRepresentation">
>>>>>            <RepresentationType subproxy="MyRepresentation"
>>>>>                text="My Mapper" subtype="Surface" />
>>>>>
>>>>>            <SubProxy>
>>>>>                <Proxy name="MyRepresentation"
>>>>>                    proxygroup="representations"
>>>>>                    proxyname="MyRepresentation">
>>>>>                </Proxy>
>>>>>                <ShareProperties subproxy="SurfaceRepresentation">
>>>>>                    <Exception name="Input" />
>>>>>                    <Exception name="Visibility" />
>>>>>                    <Exception name="Representation" />
>>>>>                </ShareProperties>
>>>>>            </SubProxy>
>>>>>        </Extension>
>>>>>    </ProxyGroup>
>>>>> [/code]
>>>>>
>>>>>
>>>>> Then in vtkMyRepresentation I have a setter and getter for SetSomeBoolVar(int) and GetSomeBoolVar().
>>>>>
>>>>> I also have a ProxyGroup for sources but I didn't think that would conflict.
>>>>>
>>>>> Thanks,
>>>>> Brian
>>>>>
>>>>>
>>>>> ________________________________________
>>>>> From: Utkarsh Ayachit [utkarsh.ayachit at kitware.com<mailto:utkarsh.ayachit at kitware.com>]
>>>>> Sent: Friday, August 05, 2011 9:54 AM
>>>>> To: Panneton, Brian C USA CTR (US)
>>>>> Cc: ParaView
>>>>> Subject: Re: [Paraview] Object Inspector Tabs
>>>>>
>>>>> What's your CMakeLists. txt file? Was vtkMyRepresentation specified as
>>>>> SERVER_MANAGER_SOURCES in the ADD_PARAVIEW_PLUGIN call?
>>>>>
>>>>> Utkarsh
>>>>>
>>>>>
>>>>> On Thu, Aug 4, 2011 at 5:00 PM, Panneton, Brian C USA CTR (US)
>>>>> <brian.c.panneton.ctr at mail.mil<mailto:brian.c.panneton.ctr at mail.mil>> wrote:
>>>>>> Okay, so instead of adding tabs like Properties, Display and Information, I created a Qt TabWidget which possibly does what I want but I am not sure.
>>>>>>
>>>>>> Right now, on my custom panel, I have options that modify the input to my reader. I am looking to also add options to modify part of my custom representation. Am I able to do this from my current custom panel? How would the XML look?
>>>>>>
>>>>>> I tried setting up my SMC as such without luck:
>>>>>> [code]
>>>>>> <ServerManagerConfiguration>
>>>>>>  <ProxyGroup name="representations">
>>>>>>   <RepresentationProxy name ... class="vtkMyRepresentation" ..>
>>>>>>    ... < { properties defined here such as intvectorproperty} > ...
>>>>>>    </RepresentationProxy>
>>>>>>  </ProxyGroup>
>>>>>>  <ProxyGroup name="sources">
>>>>>>    <SourceProxy name ... class="vtkMyReader" ..>
>>>>>>    ... < { properties defined here } > ...
>>>>>>    </SourceProxy>
>>>>>>  </ProxyGroup>
>>>>>> </ServerManagerConfiguration>
>>>>>> [/code]
>>>>>>
>>>>>> But this will end up giving me the error even though I have a vtkMyRepresentation::SetMyProperty(int) in the source:
>>>>>> [code]
>>>>>> vtkPVSessionCore (0x16e71130): Object type: vtkMyRepresentation, could not find requested method: "SetMyProperty"
>>>>>> or the method was called with incorrect arguments.
>>>>>>
>>>>>> while processing
>>>>>> Message 0 = Invoke
>>>>>>  Argument 0 = vtk_object_pointer {vtkMyRepresentation (0x1829dfb0)}
>>>>>>  Argument 1 = string_value {SetMyProperty}
>>>>>>  Argument 2 = int32_value {1}
>>>>>> [/code]
>>>>>>
>>>>>> Any ideas?
>>>>>>
>>>>>> Thanks,
>>>>>> Brian
>>>>>> ________________________________________
>>>>>> From: Utkarsh Ayachit [utkarsh.ayachit at kitware.com<mailto:utkarsh.ayachit at kitware.com>]
>>>>>> Sent: Thursday, August 04, 2011 12:09 PM
>>>>>> To: Brian C. Panneton (CONTR)
>>>>>> Cc: paraview at paraview.org<mailto:paraview at paraview.org>
>>>>>> Subject: Re: [Paraview] Object Inspector Tabs
>>>>>>
>>>>>> Nope, this is not possible through plugins yet. You can add a
>>>>>> brand-new dock widget through plugins but not add a new tab to the
>>>>>> Object Inspector widget.
>>>>>>
>>>>>> Utkarsh
>>>>>>
>>>>>> On Thu, Aug 4, 2011 at 11:56 AM, Brian C. Panneton (CONTR)
>>>>>> <brian.c.panneton.ctr at us.army.mil<mailto:brian.c.panneton.ctr at us.army.mil>> wrote:
>>>>>>> I was wondering if there was an example of how to add a new tab to the
>>>>>>> Object Inspector for a plugin. I remember being told that it is possible,
>>>>>>> but I can't seem to find any examples.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Brian Panneton
>>>>>>> _______________________________________________
>>>>>>> Powered by www.kitware.com<http://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
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
_______________________________________________
Powered by www.kitware.com<http://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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20110812/3132b652/attachment-0001.htm>


More information about the ParaView mailing list