Hm, that is a lot of extra work, especially because the base class sphParticleProps has a similar role not only for a box source, but also for sphere, cone, cylinder, etc. But one has to live with the given limitations of the tool.
Anyway, thanks. Bertwim On 10/02/2014 05:33 PM, Utkarsh Ayachit wrote: > In other words, just don't use mutliple inheritance. Often you can > restruture your code to "has-a" instead of "is-a" style. Make > sphBoxSource subclass vtkCubeSource and have a member variable of > type SPHParticleProps. For which ever methods from SPHParticleProps > you want to expose, add those as methods on sphBoxSource and then > forward those calls explictly to the SPHParticleProps instance. > > Utkarsh > > On Thu, Oct 2, 2014 at 11:15 AM, B.W.H. van Beest <[email protected]> wrote: >> Hi Utkarsh, >> >> Not sure how to do that, really in Paraview. The relationshop and >> dynamics between what is in the xml file, source files I write and >> generated files by mysterious macros make me still a bit uncomfortable >> in finding my way in ParaView. >> Maybe you could a bit more verbose? >> >> Regards, >> Bertwim >> >> On 10/02/2014 03:24 PM, Utkarsh Ayachit wrote: >>> It will only warp the 1 base. I'd suggest using a proxy pattern rather >>> than multiple inheritance. >>> >>> On Thu, Oct 2, 2014 at 9:20 AM, B.W.H. van Beest <[email protected]> wrote: >>>> It seems to work. Inheritance of the vtkCubeSource methods just works. >>>> Also when I reverse the inheritance order, or when I have single >>>> inheritance (of vtkCubeSource), in the xml-file I can just refer to the >>>> methods of the base class vtkCubeSource (say SetLength()) and it works. >>>> But not so for the oher base class! >>>> >>>> So I *think* I am using the two baseclasses the same way, the effect >>>> however, is asymmetrial. >>>> >>>> I looked, as you suggested, into sphBoxSourceClientServer.h The >>>> methods of the baseclasses (vtkCubeSource), e.g. SetXLength(), do not >>>> show-up there either. But it works, so that might not be the place where >>>> to look. >>>> >>>> Any other ideas? >>>> >>>> Regards, >>>> Bertwim >>>> >>>> >>>> >>>> On 10/02/2014 02:23 PM, Utkarsh Ayachit wrote: >>>>> I can't remember if the wrapping code can handle multiple inheritance. >>>>> If you removed the second superclass, does that work? >>>>> >>>>> Also look the sphBoxSourceClientServer.h file generated in your build >>>>> directory. That will indicate which methods from this class are >>>>> getting wrapped and which ones aren't. >>>>> >>>>> Utkarsh >>>>> >>>>> On Thu, Oct 2, 2014 at 6:44 AM, B.W.H. van Beest <[email protected]> wrote: >>>>>> Hello, I'm struggling with getting the properties panel right for a new >>>>>> Source defined in plugin that I'm writing. >>>>>> >>>>>> In the class below, I'm extending the VTK class for a rectangular box, >>>>>> vtkCubeSource. The class also derives from another class, >>>>>> that has the well known method "foo". I have made corresponding >>>>>> changes to the server manager file (xml), given below. >>>>>> >>>>>> In the xml-file, I can specify the panel entries for the vtkCubeSource, >>>>>> referring to the methods of this vtk class which are available via >>>>>> inheritance, for instance "SetXLength(double)". However, when I do the >>>>>> same for the method "foo(int)" of the other base class, ParaView bombs, >>>>>> telling me that: >>>>>> >>>>>> $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>>>>> tkPVSessionCore (0x113a740): Object type: sphBoxSource, could not find >>>>>> requested method: "foo" >>>>>> or the method was called with incorrect arguments. >>>>>> >>>>>> while processing >>>>>> Message 0 = Invoke >>>>>> Argument 0 = vtk_object_pointer {sphBoxSource (0x30fbe00)} >>>>>> Argument 1 = string_value {foo} >>>>>> Argument 2 = int32_value {1024} >>>>>> $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>>>>> >>>>>> The problem is gone when I provide the derived class also with a method >>>>>> "foo", which calls the "foo" of the base class. >>>>>> In short, I can refer, in the panel, to the methods of vtkCubeSource (as >>>>>> expected due to inheritance), but not for the other base class. >>>>>> What am I overlooking here, and what do I need to do to have the >>>>>> expected inheritance? >>>>>> >>>>>> Your view >>>>>> Kind Regards, >>>>>> Bertwim >>>>>> --------------------- >>>>>> >>>>>> >>>>>> This is my class: >>>>>> ===================================== >>>>>> class sphBoxSource : public vtkCubeSource >>>>>> , public SPHParticleProps >>>>>> { >>>>>> public: >>>>>> static sphBoxSource* New(); >>>>>> vtkTypeMacro(sphBoxSource,vtkCubeSource); >>>>>> >>>>>> public: >>>>>> sphBoxSource( double, double, double ); >>>>>> ~sphBoxSource(); >>>>>> >>>>>> public: // testing purposes only >>>>>> void foo( int i ){ SPHParticleProps::foo(i);} // For the Properties >>>>>> pane,: Why can I can not just inherit the method "foo"? >>>>>> }; >>>>>> ======================================= >>>>>> >>>>>> The server manager configuration is taken from "sources.xml" that comes >>>>>> with ParaView (4.2), but extended with a property for "foo". >>>>>> >>>>>> ======================================= >>>>>> <ServerManagerConfiguration> >>>>>> <ProxyGroup name="sources"> >>>>>> <!-- >>>>>> ==================================================================== --> >>>>>> <SourceProxy class="sphBoxSource" >>>>>> label="SPHBox" >>>>>> name="SPHBoxSource"> >>>>>> ... >>>>>> <DoubleVectorProperty animateable="1" >>>>>> command="SetXLength" >>>>>> default_values="10.0" >>>>>> name="XLength" >>>>>> number_of_elements="1" >>>>>> panel_visibility="default"> >>>>>> <DoubleRangeDomain min="0" name="range" /> >>>>>> <Documentation>This property specifies the length of the box in >>>>>> the X direction.</Documentation> >>>>>> </DoubleVectorProperty> >>>>>> >>>>>> .... >>>>>> >>>>>> <!-- Add gui component for testing purposes --> >>>>>> <IntVectorProperty command="foo" >>>>>> default_values="1024" >>>>>> name="foobar" >>>>>> number_of_elements="1"> >>>>>> <IntRangeDomain min="0" name="range" /> >>>>>> <Documentation>Just for testing. Does nothing.</Documentation> >>>>>> </IntVectorProperty> >>>>>> >>>>>> <!-- End Box --> >>>>>> </SourceProxy> >>>>>> <!-- >>>>>> ==================================================================== --> >>>>>> </ProxyGroup> >>>>>> </ServerManagerConfiguration> >>>>>> >>>>>> _______________________________________________ >>>>>> 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://public.kitware.com/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://public.kitware.com/mailman/listinfo/paraview
