Brian, We were currently working on a "Summary Panel" mechanism that looks very close to what you're trying to do. You might want to take a look: http://paraview.org/ParaView3/index.php/Summary_Panels
Utkarsh On Fri, Aug 12, 2011 at 9:55 AM, Panneton, Brian C USA CTR (US) <[email protected]> wrote: > 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 [[email protected]] > 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 > <[email protected]> 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 >> <[email protected]> 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) >> > <[email protected]> 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 [[email protected]] >> >> 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) >> >> <[email protected]> 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 [[email protected]] >> >>> 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) >> >>> <[email protected]> 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 [[email protected]] >> >>>> 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) >> >>>> <[email protected]> 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 [[email protected]] >> >>>>> 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) >> >>>>> <[email protected]> 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 [[email protected]] >> >>>>>> Sent: Thursday, August 04, 2011 12:09 PM >> >>>>>> To: Brian C. Panneton (CONTR) >> >>>>>> Cc: [email protected] >> >>>>>> 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) >> >>>>>> <[email protected]> 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 >> >>>>>>> >> >>>>>>> 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 >> >> 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 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
