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
