include wxvtk/boxes/bbDoubleSlicer
load wx
load std
load itk
load itkvtk
load vtk
define BasicImageApplication
##
description "Interface of a 'standard' image application. Displays two images : before/after processing; Offers buttons : open/parameters/run/save/quit. See DemoBasicImageApplication.bbs. Screenshot :
."
author "laurent.guigues@creatis.insa-lyon.fr"
category "widget"
##
# WINDOWS CREATION
new LayoutSplit mainWindow
set mainWindow.Proportion 90
new DoubleSlicer viewer
new LayoutLine buttonsBar
new CommandButton openButton
new CommandButton paramButton
new CommandButton runButton
new CommandButton saveButton
new CommandButton quitButton
connect viewer.Widget mainWindow.Widget1
connect buttonsBar.Widget mainWindow.Widget2
connect openButton.Widget buttonsBar.Widget1
connect paramButton.Widget buttonsBar.Widget2
connect runButton.Widget buttonsBar.Widget3
connect saveButton.Widget buttonsBar.Widget4
connect quitButton.Widget buttonsBar.Widget5
set viewer.Orientation 0
set buttonsBar.Orientation 0
#OPEN
set openButton.Label "Open"
set paramButton.Label "Parameters"
set saveButton.Label "Save"
new FileSelector openFileDialog
connect openButton.BoxChange openFileDialog.BoxExecute
connect openButton.BoxChange viewer.RefreshSlicer1
set openFileDialog.Message "Select input image"
set openFileDialog.OpenSave "Open"
#READER
new MetaImageReader reader
# set reader.Filename "/home/guigues/coding/Sofa/bbtk/data/thorax.hdr"
connect openFileDialog.Out reader.In
connect reader.Out viewer.In1
# RUN
set runButton.Label "Run"
new MultipleInputs refreshViewerOut
connect refreshViewerOut.Out viewer.RefreshSlicer2
connect runButton.BoxChange refreshViewerOut.In1
#QUIT
set quitButton.Label "Quit"
set quitButton.In "quit"
#SAVE
new ImageWriter writer
new FileSelector saveFileDialog
set saveFileDialog.BoxProcessMode Always
set saveFileDialog.DefaultFile "out.hdr"
set saveFileDialog.Message "Select output image"
set saveFileDialog.OpenSave "Save"
connect saveFileDialog.Out writer.Filename
connect saveButton.BoxChange refreshViewerOut.In2
connect saveButton.BoxChange writer.BoxExecute
#PARAMETERS
new LayoutSplit paramWindow
set paramWindow.Proportion 80
set paramWindow.WinTitle "Parameters"
# new LayoutLine userParamWindow
# connect userParamWindow.Widget paramWindow.Widget1
new CommandButton paramWindowCloseButton
set paramWindowCloseButton.Label "Close"
connect paramWindowCloseButton.Widget paramWindow.Widget2
connect paramWindowCloseButton.BoxChange paramWindow.WinHide
connect paramButton.BoxChange paramWindow.BoxExecute
# INPUTS / OUTPUTS
new anyItkImagePointerRelay imageOut
connect imageOut.Out viewer.In2
connect imageOut.Out writer.In
input AlgorithmOutput imageOut.In "Plug here the output of your algorithm"
output AlgorithmInput reader.Out "Plug this output to the input of your algorithm"
input ParametersWidget paramWindow.Widget1 "Connect here your parameter tuning widget"
input ParametersWindowWidth paramWindow.WinWidth "The width of the parameters window"
input ParametersWindowHeight paramWindow.WinHeight "The height of the parameters window"
input WinTitle mainWindow.WinTitle "Title of the main window"
input Refresh viewer.BoxProcessModeSlicer2 "Set to 'Reactive' to have automatic refresh when image or parameters change"
exec mainWindow
endefine