Difference between revisions of "Slicer4:Extensions"

From Slicer Wiki
Jump to: navigation, search
(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:Extensions

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 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/

This work was sponsored in part by the collaboration between NA-MIC and NITRC.

Module Types

Slicer3 Integration options

The following types of modules are available:

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.

Versions

Version 4.0