Slicer3:Loadable Modules:HOWTO

From Slicer Wiki
Jump to: navigation, search
Home < Slicer3:Loadable Modules:HOWTO

In order to allow a module to be detected and loaded at runtime (without explicitly being called from the main() routine in Applications/GUI/Slicer3.cxx), do the following:

vtkModuleNameGUI

For your vtkSlicerModuleGUI-derived class, declare and implement:

 virtual void SetModuleLogic(vtkSlicerLogic*)

This is necessary so that the Loadable module code does not need to cast the Logic pointer returned from the defined entry point.

To add module-specific MRML events to observe, declare and implement:

 virtual vtkIntArray* NewObservableEvents();

To add module-specific initialization code, declare and implement:

 virtual void Init();

This is useful to have your module register callbacks for Picking (See QdecModule or VolumeRendering).

ModuleName.txt

Create ModuleName.txt in the module's directory. ModuleName should follow the naming convention for the *GUI and *Logic classes.

For these two clases:

vtkOpenIGTLinkLogic
vtkOpenIGTLinkGUI

Create:

OpenIGTLink.txt

This file contains naming directives, as well as lists dependencies. At a minimum, the module name must be specified:


 Name: Open IGT Link

Additionally:


 GUIName: OpenIGT
 Dependency: Module One
 Dependency: Module Two

CMakeLists.txt

Now, edit the module's CMakeLists.txt file to call the Loadable Module Generator. NOTE: The macro should be placed after TCL wrapping is done, as it adds to the source variable. For more details, check the GAD module CMakeLists.txt file, as it provides a good starting point.

For example:

 generatelm(OpenIGTLink_SRCS OpenIGTLink.txt)