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." 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 #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 new MultipleInputs paramWindowHide connect paramWindowHide.Out paramWindow.WinHide connect paramWindowCloseButton.BoxChange paramWindowHide.In1 connect paramButton.BoxChange paramWindow.BoxExecute #QUIT set quitButton.Label "Quit" connect quitButton.BoxChange mainWindow.WinHide connect quitButton.BoxChange paramWindowHide.In2 set quitButton.In "reset" # 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