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
