Burlen, Sorry for the delay in responding. I guess your solution is fine. Ideally, I'd have liked tuples of group-names and proxy-names, but that'd break backwards compatibility and really isn't such a common use-case :), so not worth the to trouble.
Feel free to commit your patch -- just makes sure it works with existing plugins :). Utkarsh On Mon, Jan 4, 2010 at 11:33 AM, burlen <[email protected]> wrote: > Happy New Year Utkarsh, > >> What is the user wants the panel >> for (readers, MyReader) and (filters, MyFilter) but not (readers, >> MyFilter)? > > To be honest I hadn't anticipated the situation but, as far as I can tell > this scenario is OK under the proposed change because the group is tested > first and if it doesn't match the search is terminated. So bottom line, > panels for objects with the same name but a different group can be distinct > and PV won't get confused. > > Here is an example of how the proposed changes lets one associate the same > panel with both a source and a filter that is implemented with a single vtk > class. For example if the class is vtkSQHemisphereSource and the panel is > pqSQHemisphereSource, here is what the cmake lists look like: > > # beginning of cmake lists > > QT4_WRAP_CPP(MOC_SRCS pqSQHemisphereSource.h) > QT4_WRAP_UI(UI_SRCS pqSQHemisphereSourceForm.ui) > ADD_PARAVIEW_OBJECT_PANEL( > IFACES IFACE_SRCS > CLASS_NAME pqSQHemisphereSource > XML_NAME vtkSQHemisphereSource > XML_GROUP sources filters) # <----------------------THE PROPOSED CHANGE > GIVES YOU THIS > > # end of cmake lists > > Here is what the server manager XML looks like: > > <!-- beginning of xml --> > > <ServerManagerConfiguration> > > <!-- > ******************************************************************************* > * > * > * Sources > * > * > * > ******************************************************************************* > --> > <ProxyGroup name="sources"> > > <!-- ==================================================================== > --> > <Proxy name="SQHemisphereUI"> > <!-- Out --> > <OutputPort name="Northern Hemisphere" index="0" /> > <OutputPort name="Southern Hemisphere" index="1" /> > > <DoubleVectorProperty > name="GetCenter" > command="GetCenter" > information_only="1"> > <SimpleDoubleInformationHelper/> > </DoubleVectorProperty> > <DoubleVectorProperty > name="Center" > command="SetCenter" > number_of_elements="3" > animateable="1" > default_values="0.0 0.0 0.0" > information_property="GetCenter"> > <DoubleRangeDomain name="range"/> > <Documentation> > This property specifies the 3D coordinates for the center of the sphere. > </Documentation> > </DoubleVectorProperty> > > <DoubleVectorProperty > name="GetRadius" > command="GetRadius" > information_only="1"> > <SimpleDoubleInformationHelper/> > </DoubleVectorProperty> > <DoubleVectorProperty > name="Radius" > command="SetRadius" > number_of_elements="1" > animateable="1" > default_values="0.5" > information_property="GetRadius"> > <DoubleRangeDomain name="range" min="1E-15"/> > <Documentation> > This property specifies the radius of the sphere. > </Documentation> > </DoubleVectorProperty> > > <IntVectorProperty > name="GetResolution" > command="GetResolution" > information_only="1"> > <SimpleIntInformationHelper/> > </IntVectorProperty> > <IntVectorProperty > name="Resolution" > command="SetResolution" > number_of_elements="1" > default_values="8" > information_property="GetResolution"> > <IntRangeDomain name="range" min="3" max="1024" /> > <Documentation> > The value of this property controls the number of lat-lon lines in the > output. > </Documentation> > </IntVectorProperty> > > <!-- End Hemisphere UI --> > </Proxy> > > <!-- ==================================================================== > --> > <SourceProxy > name="vtkSQHemisphereSource" > class="vtkSQHemisphereSource" > label="SQ Hemisphere" > base_proxyname="SQHemisphereUI" > base_proxygroup="sources"> > <Documentation > long_help="Create a 3D sphere given a center and radius." > short_help="Create a 3D sphere"> > The Hemisphere source can be used to add a polygonal sphere to the 3D > scene. The output of the Hemisphere source is polygonal data with point > normals defined. > </Documentation> > <!-- End Hemisphere Source --> > </SourceProxy> > > </ProxyGroup> > > <!-- > ******************************************************************************* > * > * > * Filters > * > * > * > ******************************************************************************* > --> > <ProxyGroup name="filters"> > > <!-- ==================================================================== > --> > <SourceProxy > name="vtkSQHemisphereSource" > class="vtkSQHemisphereSource" > label="SQ Hemisphere" > base_proxyname="SQHemisphereUI" > base_proxygroup="sources"> > <Documentation > long_help="Create a 3D sphere given a center and radius." > short_help="Create a 3D sphere"> > The Hemisphere source can be used to add a polygonal sphere to the 3D > scene. The output of the Hemisphere source is polygonal data with point > normals defined. > </Documentation> > <InputProperty > name="Input" > command="SetInputConnection"> > <ProxyGroupDomain name="groups"> > <Group name="sources"/> > <Group name="filters"/> > </ProxyGroupDomain> > <DataTypeDomain name="input_type"> > <DataType value="vtkDataSet"/> > </DataTypeDomain> > </InputProperty> > <!-- End Hemisphere Source --> > </SourceProxy> > </ProxyGroup> > > </ServerManagerConfiguration> > > <!-- end xml --> > > >> Not sure if it's even worth the trouble -- but just in case >> you can think of a cleaner solution. > > Taking a quick look at how it all works in pqObjectInspectorWidget it > doesn't look like there is a cleaner solution to be had easily. But you know > you are the expert here, so if there is a better way you probably spot it > better than I. I can say this though, this solution may not be elegant but > in most cases the change adds very little over head because in the nested > m*n loop, the outer m loop is the number of groups, will almost always be 1 > and when it's not m will most likely be 2, in the worst case (I don't think > it will ever come up) it could be 3 or 4 (sources,filters,readers, what > else?). And, n the number of custom panels, currently I will guess is at > worst on the order of 100. So we're not talking about adding a lot of work > here. > > Let me know if you have something better in mind > Burlen > > > Utkarsh Ayachit wrote: >> >> That sounds reasonable, but specification of multiple group names and >> xml names and the m*n matching between them seems funny. Any ideas on >> how we can make that more explicit? What is the user wants the panel >> for (readers, MyReader) and (filters, MyFilter) but not (readers, >> MyFilter)? Not sure if it's even worth the trouble -- but just in case >> you can think of a cleaner solution. >> >> Utkarsh >> >> On Fri, Dec 18, 2009 at 6:36 PM, burlen <[email protected]> wrote: >>> >>> Hi folks, >>> >>> I'd like to have a PV data source that can be used either as a >>> source(without an input dataset) or as a filter(with an input dataset). >>> Based on what I have observed, to accomplish it the source has to show up >>> both in the sources menu and the filters menu, which is easy to do with >>> the >>> XML by adding an entry in both the sources and filters groups that points >>> back to the same class and base proxy. It all works except for sharing a >>> custom qt panel between them, specifically sharing the panel across proxy >>> groups isn't currently allowed. >>> >>> The attached patch enables a custom panel to be shared across the >>> sources/filters proxy groups. Assuming that this is the right way to >>> accomplish this can this patch be committed? >>> >>> Why would you want to do this? For one example: >>> a source with an optional input used like a filter can then extract >>> spatial >>> bounds from the input dataset and then position itself automatically in >>> the >>> scene. This makes the source faster/easier to use than if you have to >>> type >>> in the coordinates to position it. There are plenty of other examples, >>> with >>> one thing in common, the potential to make the source easier/faster to >>> use. >>> >>> Burlen >>> >>> >>> >>> >>> >>> >>> >>> >>> _______________________________________________ >>> 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
