Loadable Modules

Post on 23-Feb-2016

35 views 0 download

Tags:

description

Loadable Modules. Julien Finet 2012 NA-MIC All Hands Meeting. Loadable modules. Slicer Modules Core CLI Loadable Colors CropVolume Data Models Tractography Transforms Volumes VolumeRendering Scripted. Application. MRML. Module. Module Plugin qSlicerMyModule : public QPlugin. - PowerPoint PPT Presentation

Transcript of Loadable Modules

Loadable Modules

Julien Finet2012 NA-MIC All Hands Meeting

Loadable modules

• Slicer– Modules

• Core• CLI• Loadable

– Colors– CropVolume– Data– Models– Tractography– Transforms– Volumes– VolumeRendering

• Scripted

Application

GUI

MRML

Module

Module PluginqSlicerMyModule

: public QPlugin

Module GUIqSlicerMyModuleWidget

: public QWidget

Module LogicvtkSlicerMyModuleLogic

: public vtkSlicerLogic

• Slicer/Modules/Loadable– MyModule

• Documentation• Logic• MRMLDisplayableManager• MRML• Resources• Testing• Widgets

Module LogicvtkSlicerMyModuleLogic

create() create()

Module Widget qSlicerMyModuleWidget

Module PluginqSlicerMyModule

vtkMRMLScenevtkMRMLNodes

Module Designer UIqSlicerMyModuleWidget.ui

Module plugin qSlicerMyModule

TitleIcon

CategoryHiddenIndex

IO

Dependencies

HelpAcknowledg

mentsContributors

Name

Module LogicvtkSlicerModuleLogic

vtkMRMLMyNode

vtkMRMLMyDisplayable

Manager

vtkSlicerLogicHelper

Module widgetqSlicerMyModuleWidget

IconsResources

Custom widgets

UI

IO Options widget

Life of a module…1. Slicer start-up2. Slicer discovers MyModule

a. Resolve dependenciesb. Add module title in menuc. Create module logic

• Optionally register new nodesd. Setup module

• Optionally registerIO, displayableManager

3. Slicer loads a file (Add Data)a. Check that registered IO can readb. Display IO options within Add Data dialogc. Load file using IO

4. Create module widget on first show

Show me some code…

• RegisterIO (Volumes)• Custom widgets (Volumes)• Module node, displayable manager

(VolumeRendering)• Logics can depend on other logics (Crop

Volume)

button

checkbox

Module Widget

MRML Node

synchronize

Connect

QObject::connect( slider,SIGNAL(valueChanged(double)), widget, SLOT(onValueChanged(double)));

Connect

qvtkConnect(node,vtkCommand::ModifiedEvent, widget,SLOT(onNodeModified()));

button

checkbox

Module Widget

MRML Node

5205

SIGNAL

Connect

void qSlicerModuleWidget::onValueChanged(double newValue){ node->SetValue(newValue);}

SLOT

20

Connect

Invoke Event

SLOT

void qSlicerModuleWidget::onMRMLNodeModified( vtkMRMLNode* node){ slider->setValue(node->GetValue());}

Set value

Set v

alue

button

checkbox

Module Widget

MRML Node

5205

SIGNAL

Connect

SLOT

20

Connect

Invoke Event

SLOT

Set value

Set v

alue

Design a module

• cd Slicer-Superbuild/Slicer-build

• ./Slicer --designer• make