“In contrast with many engineers who make houses, cars, medicines, and clothing for human need and enjoyment, we make things that do not themselves directly satisfy human needs, but which others use in making things that enrich human living. In a word, the computer scientist is a toolsmith—no more, but no less.It is an honorable calling.

If we perceive our role aright, we then see more clearly the proper criterion for success: a toolmaker succeeds as, and only as, the users of his tool succeed with his aid. However shining the blade, however jeweled the hilt, however perfect the heft, a sword is tested only by cutting. That swordsmith is successful whose clients die of old age.”

** Actually a large part of the panel will be blocked by the ParaView Splash image. The Splash Image can be disabled using the ParaView Setting panel. Just start the standard ParaView application (with the built-in server) and disable the Splash image before starting the server and client separately. http://www.paraview.org/Wiki/ParaView/Users_Guide/Settings

Use the ADD_PARAVIEW_DOCK_WINDOW macro defined in ParaView/CMake/ParaViewPlugins.cmake

Result of the CMake macro: a file called ${ARG_CLASS_NAME}Implementation.h (which implements the pqDockWindowInterface) is created and compiled into the Qt project via the Qt Meta Object Compiler *

pqPluginDockWidgetsBehavior calls each pqDockWindowInterface::dockWidget to create an instance of the plugin-specific class that extends QDockWidget

Problem: pqVRConfigPanel, which extends QDockWidget, is not aware of VR Plugin instance, and VR Plugin instance is not aware of pqVRConfigPanel class. The QDockWidget signals cannot be connected VR Plugin slots.

Solution attempt 1:

Make pqVRStarter implement pqDockWindowInterface.

Create dockWidget in the pqVRStarter::onStartup() slot. I.e. invoke pqVRStarter::dockWidget() with pqCoreUtilities::mainWidget() as parent parameter (pqCoreUtilities::mainWidget() returns the QMainWindow of the application)

Result:

Runtime error because pqVRStarter::onStartup() is called before ParaViewMainWindow (which extends QMainWindow) is finalized. The dockWidget could not be properly embedded in the UI.

Solution attempt 2 (to do):

Edit VR Plugin’s CMakeLists.txt to register the CMake-generated pqVRStarterImplementation as a pqDockWindowInterface. This may create the VR Plugin’s QDockWidget at the same time as the other QDockWidget’s creation in pqPluginDockWidgetsBehavior

Note: STL here refers to SGI STL , not to be confused with the C++ Standard Library , which only recently include hash maps/sets in C++11 . For pre-C++11 users, hash maps/sets are included under the name unordered_map/unordered_set in std::tr1 as explained in the article: