|
|
(12 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
− | From [[Slicer3:Loadable_Modules]]:
| + | <big>'''Note:''' We are migrating this content to the slicer.org domain - <font color="orange">The newer page is [https://www.slicer.org/wiki/Slicer3:Loadable_Modules:Phase1 here]</font></big> |
− | * 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* LoadableModuleGUI
| |
− | void* LoadableModuleLogic
| |
− | char* LoadableModuleDescription
| |
− | | |
− | 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]]
| |