[Paraview] Property Panel and Inheritance?
B.W.H. van Beest
bwvb at xs4all.nl
Thu Oct 2 09:20:10 EDT 2014
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 <bwvb at xs4all.nl> 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
More information about the ParaView
mailing list