Difference between revisions of "Slicer3:Loadable Modules:Phase1"

From NAMIC Wiki
Jump to: navigation, search
Line 26: Line 26:
 
==== loadable modules entry points ====
 
==== loadable modules entry points ====
  
  void* LoadableModuleGUI
+
  void* GetLoadableModuleGUI
  void* LoadableModuleLogic
+
  void* GetLoadableModuleLogic
  char* LoadableModuleDescription
+
  char* GetLoadableModuleDescription
  
 
That might be it, it'd be nice to have the module describe the necessary methods to call on the GUI and Logic pointer, but that might be Phase I-A.  Within Slicer3_main, there doesn't seem to be much variation.
 
That might be it, it'd be nice to have the module describe the necessary methods to call on the GUI and Logic pointer, but that might be Phase I-A.  Within Slicer3_main, there doesn't seem to be much variation.

Revision as of 04:39, 3 January 2008

Home < Slicer3:Loadable Modules:Phase1

From Slicer3:Loadable_Modules:

   * runtime module discovery
   * module template
   * like CommandLineModuleFactory 


Starting at ~900 in Applications/GUI/Slicer3.cxx, static modules load occurs.

Using vtkSys tools to list shared libraries present. Use itk::DyanmicLoader to open libraries and call our specified entry points.

The actions taken for each module to be added could be queried from the found shared library using a LoadableModuleInfo class. Some of the information a library should provide:

  • vtkSlicerLogic pointer (maybe this is one of the defined entry points for a loadable module)
  • methods to call on the Logic pointer
  • vtkSlicerModulesGUI pointer (ditto)
  • methods to call on the GUI pointer
  • module name

LoadableModuleFactory (dervie from? Libs/ModuleDescriptionParser/ModuleFactory.cxx) handles this. Looks like ModuleFactory::ScanForSharedObjectModules does something very similar.


Create shared libraries for each of the static modules listed in Slicer3.cxx

loadable modules entry points

void* GetLoadableModuleGUI
void* GetLoadableModuleLogic
char* GetLoadableModuleDescription

That might be it, it'd be nice to have the module describe the necessary methods to call on the GUI and Logic pointer, but that might be Phase I-A. Within Slicer3_main, there doesn't seem to be much variation.

References

Slicer3:Execution_Model_Documentation

Slicer3:How_to_implement_an_Interactive_Module_GUI