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

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(6 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* 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.
 
−
 
 
−
Slicer3.cxx also defines [modulename]_Init(Tcl_Interp* interp) functions and calls them for each module.  Should this also be conditional for loadable modules?  Does it require an additional entry point?
 
−
 
 
−
==== loadable module support ====
 
−
 
 
−
 
 
−
Is there a header/source file that should be added to every module?  Can we follow the CLP methodology and use an XML source and CMake driven tool to generate the necessary files?
 
−
 
 
−
===== result of tele-conference 28jan2008 =====
 
−
 
 
−
Things that the module's XML description should be able to tell:
 
−
- Name
 
−
- Group
 
−
- Description
 
−
- Home Page
 
−
- Dependencies (on other Groups or Modules and what versions)
 
−
- Version #
 
−
[and maybe:]
 
−
- icon
 
−
- Author(s)
 
−
- Acknowledgment(s)
 
−
 
 
−
Module Groups for Slicer3:
 
−
- Base
 
−
- Segmentation
 
−
- Registration
 
−
- Filtering
 
−
- Diffusion Imaging/Tractography
 
−
- Modeling
 
−
- Meshing
 
−
- Image Guided Therapy
 
−
- Rendering
 
−
- Radiation Treatment
 
−
- Microscopy
 
−
- Astronomy
 
−
- Utilities
 
−
- Databases (XCEDE?)
 
−
- Other
 
−
 
 
−
Options users might want to specify when building:
 
−
- src install vs. binary download
 
−
- version #'s of libs (e.g. cvs tags or branches to use)
 
−
- release build vs debug build
 
−
- clean rebuild
 
−
- update/refresh libraries
 
−
- run tests and submit to dashboard
 
−
- make an installation package
 
−
- upload to web site
 
−
 
 
−
==== SVN branch ====
 
−
 
 
−
http://www.na-mic.org/svn/Slicer3/branches/tgl_loadable_modules/
 
−
 
 
−
==== References ====
 
−
 
 
−
[[Slicer3:Execution_Model_Documentation]]
 
−
 
 
−
[[Slicer3:How_to_implement_an_Interactive_Module_GUI]]
 

Latest revision as of 17:50, 10 July 2017

Home < Slicer3:Loadable Modules:Phase1

Note: We are migrating this content to the slicer.org domain - The newer page is here