Difference between revisions of "Slicer4:Extensions"
(Created page with 'This page is a place holder right now and will be populated eventually.') |
|||
Line 1: | Line 1: | ||
This page is a place holder right now and will be populated eventually. | This page is a place holder right now and will be populated eventually. | ||
+ | |||
+ | =Introduction= | ||
+ | *3D Slicer now supports plug-ins which we call extensions. Extensions are available from an extension server. This allows end-users to select the extensions useful to them, without having to download the entire extension archive. | ||
+ | *The process of creating an extension is as follows: | ||
+ | **create a module (command line, scripted or loadable) | ||
+ | **make sure that it compiles on all supported platforms | ||
+ | **create an s3ext file pointing to the source code | ||
+ | **talk to the slicer team to integrate it into the nightly build process. | ||
+ | |||
+ | |||
+ | *We are using [http://www.nitrc.org NITRC] as the primary repository for contributed extensions, however any subversion or cvs repository can be used. As a general rule, the slicer team does not test the extensions. Use them at your own risk. | ||
+ | *Look at the Associations section of [http://www.nitrc.org/projects/slicer the slicer project page on NITRC] for other software that can be used to extend slicer. [http://www.nitrc.org/search/?type_of_search=soft&words=slicer3&Search.x=0&Search.y=0&Search=Search here] to see a listing of Slicer 3 extensions on NITRC. | ||
+ | *<big>Extensions are compiled as part of the nightly build. In order to have your extension compiled nightly and made available to end users, please contact the Slicer team (provide a .s3ext file as described below).</big> | ||
+ | *In order to start your own extension, you can look at the sources for these examples and copy one that looks similar: | ||
+ | http://viewvc.slicer.org/viewcvs.cgi/trunk/Extensions/ | ||
+ | *Several [http://www.nitrc.org/projects/slicer3examples/ example modules] are hosted on the nitrc.org site and can be used as a template. These include the major types of loadable and scripted modules. | ||
+ | *Here is a link to [[Documentation-3.6#Slicer_Extensions| user documentation on extensions]]. | ||
+ | |||
+ | This work was sponsored in part by the [http://www.na-mic.org/Wiki/index.php/NA-MIC_and_NITRC collaboration between NA-MIC and NITRC]. | ||
+ | |||
+ | =Module Types= | ||
+ | [[image:Slicer3-Integration-Options.png|500px|right| Slicer3 Integration options]]The following types of modules are available: | ||
+ | *command line modules - executables that follow the [[Slicer3:Execution_Model_Documentation|Slicer Execution Model]] | ||
+ | *scripted modules - Tcl or [[Slicer3:Python|Python]] scripts that implement the callbacks of [[Building_a_Slicer_3_Module_GUI|the Module GUI API]] or the [[Slicer3:Execution_Model_Documentation|Slicer Execution Model]] | ||
+ | *loadable modules - shared libraries that implement [[Building_a_Slicer_3_Module_GUI|the Module GUI API]] and can call/extend the C++ API directly (can provide subclasses of vtk/itk/kwwidgets/MRML/slicer code and other libraries). | ||
+ | |||
+ | All three module types are dynamically discovered by slicer at run time. | ||
+ | |||
+ | See [http://www.na-mic.org/Wiki/images/1/12/AHM2010-Plug-ins.ppt Jim Miller's presentation] from the [http://www.na-mic.org/Wiki/index.php/AHM_2010 NA-MIC 2010 All Hands Meeting] and [http://www.na-mic.org/Wiki/images/5/51/2010_Project_Week_Slicer.ppt Steve Pieper's presentation] from the [http://www.na-mic.org/Wiki/index.php/2010_Summer_Project_Week 2010 Summer Project Week]. | ||
+ | |||
+ | For generic module templates, see [http://www.nitrc.org/projects/slicer3examples/ the examples on nitrc.org]. For a fully fleshed out working example, see [http://www.nitrc.org/projects/slicervmtklvlst/ the Vascular Modeling Toolkit (vtmk) project] which includes a loadable module of vtk/itk code along with several python scripted modules that implement the kwwidgets-based user interface. | ||
+ | |||
+ | =Versions= | ||
+ | |||
+ | == Version 4.0 == |
Revision as of 15:15, 30 May 2011
Home < Slicer4:ExtensionsThis page is a place holder right now and will be populated eventually.
Introduction
- 3D Slicer now supports plug-ins which we call extensions. Extensions are available from an extension server. This allows end-users to select the extensions useful to them, without having to download the entire extension archive.
- The process of creating an extension is as follows:
- create a module (command line, scripted or loadable)
- make sure that it compiles on all supported platforms
- create an s3ext file pointing to the source code
- talk to the slicer team to integrate it into the nightly build process.
- We are using NITRC as the primary repository for contributed extensions, however any subversion or cvs repository can be used. As a general rule, the slicer team does not test the extensions. Use them at your own risk.
- Look at the Associations section of the slicer project page on NITRC for other software that can be used to extend slicer. here to see a listing of Slicer 3 extensions on NITRC.
- Extensions are compiled as part of the nightly build. In order to have your extension compiled nightly and made available to end users, please contact the Slicer team (provide a .s3ext file as described below).
- In order to start your own extension, you can look at the sources for these examples and copy one that looks similar:
http://viewvc.slicer.org/viewcvs.cgi/trunk/Extensions/
- Several example modules are hosted on the nitrc.org site and can be used as a template. These include the major types of loadable and scripted modules.
- Here is a link to user documentation on extensions.
This work was sponsored in part by the collaboration between NA-MIC and NITRC.
Module Types
The following types of modules are available:
- command line modules - executables that follow the Slicer Execution Model
- scripted modules - Tcl or Python scripts that implement the callbacks of the Module GUI API or the Slicer Execution Model
- loadable modules - shared libraries that implement the Module GUI API and can call/extend the C++ API directly (can provide subclasses of vtk/itk/kwwidgets/MRML/slicer code and other libraries).
All three module types are dynamically discovered by slicer at run time.
See Jim Miller's presentation from the NA-MIC 2010 All Hands Meeting and Steve Pieper's presentation from the 2010 Summer Project Week.
For generic module templates, see the examples on nitrc.org. For a fully fleshed out working example, see the Vascular Modeling Toolkit (vtmk) project which includes a loadable module of vtk/itk code along with several python scripted modules that implement the kwwidgets-based user interface.