Bingo! It now works precisely as expected. Thanks!
Bertwim On 10/01/2014 03:55 AM, Utkarsh Ayachit wrote: > Bert, > > The problem is the CMakeLists.txt. The sphBoxSource needs to be added > as SERVER_MANAGER_SOURCES, not SOURCES. A a rule of thumb, if it's a > vtkObject subclass and not a Qt class, you generally want to put that > under SERVER_MANAGER_SOURCES. This ensure that it will get wrapped so > that ParaView can instantiate classes through their names defined in > the XML. > > Utkarsh > > On Tue, Sep 30, 2014 at 2:09 PM, B.W.H. van Beest <[email protected]> wrote: >> Utkash, >> >> I followed-up on your suggestions, but apparently I am doing something >> wrong. I hope you or somebody else can point me to the solution. >> >> This is what I did. >> >> 1) new class: sphBoxSource. I extended class vtkCubeSource with one >> data member, with corresponding get/set method. (Code below) >> 2) I added an xml-file, with the source description taken from >> source.xml (CubeSource). (Below) >> 3) I modified the CMakeList.txt accordingly. (Below) >> >> Magically, the new source appeared in the menu. But when clicking it, >> the program crashed. >> The error message I get is: >> >> ERROR: In >> /usr/local/git/ParaView/ParaViewCore/ServerImplementation/Core/vtkSIProxy.cxx, >> line 307 >> vtkSISourceProxy (0x30289e0): Failed to create sphBoxSource. Aborting >> for debugging purposes. >> >> >> I noticed that several people running into similar problems, but so far >> I haven't been able to find the clue to the solution. >> >> >> Before showing the code, I give the result of the compilation. >> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ >> >> chopin Plugins/SPHToolbar# make clean >> chopin Plugins/SPHToolbar# make >> [ 0%] Generating Documentation HTMLs from xmls >> Processing wiki sources >> Processing wiki filters >> Processing wiki writers >> Processing wiki readers >> [ 10%] Generating qrc_sph_icons.cxx >> [ 10%] Compiling Qt help project SPHToolbar.qhp >> Building up file structure... >> Insert custom filters... >> Insert help data for filter section (1 of 1)... >> Insert files... >> Warning: The file >> /usr/local/git/ParaView/build/Examples/All/Plugins/SPHToolbar/doc/*.css >> does not exist! Skipping it. >> Warning: The file >> /usr/local/git/ParaView/build/Examples/All/Plugins/SPHToolbar/doc/*.png >> does not exist! Skipping it. >> Warning: The file >> /usr/local/git/ParaView/build/Examples/All/Plugins/SPHToolbar/doc/*.jpg >> does not exist! Skipping it. >> Insert contents... >> Insert indices... >> Documentation successfully generated. >> [ 10%] Generating SPHToolbar_doc.h >> -- Generate module: SPHToolbar >> [ 10%] Generating vtkSMXML_SPHToolbar.h >> -- Generate module: sph_sources >> [ 20%] Generating moc_SPHToolbarActions.cpp >> [ 20%] Generating moc_sphBActionCreateSource.cpp >> [ 30%] Generating moc_sphBAction.cpp >> [ 30%] Generating moc_SPHToolbarActionsImplementation.cpp >> [ 40%] Generating moc_SPHToolbar_Plugin.cpp >> Scanning dependencies of target SPHToolbar >> [ 50%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/qrc_sph_icons.o >> [ 50%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/moc_SPHToolbarActions.o >> [ 60%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/moc_sphBActionCreateSource.o >> [ 60%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/moc_sphBAction.o >> [ 60%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/SPHToolbarActionsImplementation.o >> [ 70%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/moc_SPHToolbarActionsImplementation.o >> [ 70%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/SPHToolbarActions.o >> [ 80%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/sphBActionCreateSource.o >> [ 80%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/sphBActionRegionInventory.o >> [ 90%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/sphBoxSource.o >> [ 90%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/sphUndoStack.o >> [ 90%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/sphObjectTracer.o >> [100%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/SPHToolbar_Plugin.o >> [100%] Building CXX object >> Plugins/SPHToolbar/CMakeFiles/SPHToolbar.dir/moc_SPHToolbar_Plugin.o >> Linking CXX shared library >> /usr/local/git/ParaView/build/lib/libSPHToolbar.so >> [100%] Built target SPHToolbar >> chopin Plugins/SPHToolbar# >> >> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ >> >> >> >> >> >> >> >> >> >> >> ====================================================== >> Here is the new class: >> >> #include "vtkCubeSource.h" >> class sphBoxSource : public vtkCubeSource >> { >> private: >> int _type; >> >> public: >> static sphBoxSource *New(); // Monkey >> see, monkey do ?????????????? >> vtkTypeMacro(sphBoxSource,vtkCubeSource); // Monkey see, monkey >> do ?????????????? >> >> public: >> sphBoxSource( double=1.0, double=1.0, double=1.0 ); >> ~sphBoxSource(); >> >> public: >> void setType( int ); >> int getType() const; >> }; >> ============================================================ >> >> XML-file "sph_sources.xml": (adapted from sources.xml) >> ============================================================ >> <ServerManagerConfiguration> >> <ProxyGroup name="sources"> >> <SourceProxy class="sphBoxSource" >> label="SPHBox" >> name="SPHBoxSource"> >> <Documentation long_help="Create a box with specified X, Y, and Z >> lengths." >> short_help="3D box with specified X, Y, and Z >> lengths">The >> Box source can be used to add a box to the 3D >> scene. The >> output of the Box source is polygonal data >> containing both >> normals and texture coordinates.</Documentation> >> <DoubleVectorProperty animateable="1" >> command="SetXLength" >> default_values="1.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> >> <DoubleVectorProperty animateable="1" >> command="SetYLength" >> default_values="1.0" >> name="YLength" >> number_of_elements="1" >> panel_visibility="default"> >> <DoubleRangeDomain min="0" >> name="range" /> >> <Documentation>This property specifies the length of the box in >> the Y >> direction.</Documentation> >> </DoubleVectorProperty> >> <DoubleVectorProperty animateable="1" >> command="SetZLength" >> default_values="1.0" >> name="ZLength" >> number_of_elements="1" >> panel_visibility="default"> >> <DoubleRangeDomain min="0" >> name="range" /> >> <Documentation>This property specifies the length of the box in >> the Z >> direction.</Documentation> >> </DoubleVectorProperty> >> <DoubleVectorProperty animateable="1" >> command="SetCenter" >> default_values="0.0 0.0 0.0" >> name="Center" >> number_of_elements="3" >> panel_visibility="default"> >> <DoubleRangeDomain name="range" /> >> <Documentation>This property specifies the center of the >> box.</Documentation> >> </DoubleVectorProperty> >> <!-- End Box --> >> </SourceProxy> >> </ProxyGroup> >> </ServerManagerConfiguration> >> ====================================================================== >> >> Finally, the CMakeList.txt reads: >> ====================================================================== >> >> CMAKE_MINIMUM_REQUIRED(VERSION 2.4) >> >> IF(NOT ParaView_BINARY_DIR) >> FIND_PACKAGE(ParaView REQUIRED) >> INCLUDE(${PARAVIEW_USE_FILE}) >> ENDIF(NOT ParaView_BINARY_DIR) >> >> IF(PARAVIEW_BUILD_QT_GUI) >> # We need to wrap for Qt stuff such as signals/slots etc. to work >> correctly. >> IF (PARAVIEW_QT_VERSION VERSION_GREATER "4") >> QT5_WRAP_CPP(MOC_SRCS SPHToolbarActions.h sphBActionCreateSource.h >> sphBAction.h ) >> ELSE () >> QT4_WRAP_CPP(MOC_SRCS SPHToolbarActions.h sphBActionCreateSource.h >> sphBAction.h ) >> ENDIF () >> >> # This is a macro for adding QActionGroup subclasses automatically as >> toolbars. >> ADD_PARAVIEW_ACTION_GROUP(IFACES IFACE_SRCS >> CLASS_NAME SPHToolbarActions >> GROUP_NAME "ToolBar/SPHToolbar") >> >> # Now create a plugin for the toolbar. Here we pass IFACES and IFACE_SRCS >> # which are filled up by the above macro with relevant entries >> ADD_PARAVIEW_PLUGIN(SPHToolbar "1.0" >> GUI_INTERFACES ${IFACES} >> GUI_RESOURCES sph_icons.qrc >> SERVER_MANAGER_XML sph_sources.xml >> SOURCES ${MOC_SRCS} ${IFACE_SRCS} >> SPHToolbarActions.cpp >> sphBActionCreateSource.cpp sphBActionRegionInventory.cpp >> sphBoxSource.cpp >> sphUndoStack.cpp sphObjectTracer.cpp ) >> ENDIF(PARAVIEW_BUILD_QT_GUI) >> >> ====================================================================== >> >> On 09/29/2014 02:46 PM, Utkarsh Ayachit wrote: >>>> a) How to create a new source ("MyNewSource") >>> You define the 'proxy' under the "sources" group, rather than filters. >>> It will automatically show up in the Menu. Look at sources.xml under >>> [1] to see other source proxy definitions. >>> >>>> b) How can I extend an existing source (box, sphere, etc.) with new >>>> properties and methods ("MyBox, "MySphere"). >>> Similar to the filters, you basically need to write a new VTK >>> algorithm with these new methods. You can subclass the existing VTK >>> source. Looking at sources.xml, you can find out which proxy using >>> which VTK algorithm, e.g. "SphereSource" (labelled as "Sphere") uses >>> "vtkSphereSource". After adding the methods on the VTK algorithm, next >>> part is exposing those methods as properties using the XML. >>> >>> [1] >>> https://github.com/Kitware/ParaView/tree/master/ParaViewCore/ServerManager/SMApplication/Resources >>> >>>> Any help or suggestions are greatly appreciated. >>>> >>>> Kind Regards, >>>> Bertwim >>>> _______________________________________________ >>>> 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
