Projects:ARRA:SlicerUI

From NAMIC Wiki
Jump to: navigation, search
Home < Projects:ARRA:SlicerUI

Back to Slicer ARRA home page

Aim

The effective visualization, data processing, analysis and interaction of medical images and ancillary data is a complex process requiring sophisticated and efficient software tools. Further, the development of new tools requires a productive and widely supported software environment. In such an environment, the human-computer interface plays a critical role in the overall effectiveness of the software tools. To this end, the Slicer graphical user interface (GUI) is to be significantly enhanced by the adoption of the standard and widely used Qt GUI toolkit. Qt has recently changed its licensing terms, meaning that it is now compatible with Slicer's commitment to open systems. Further, Qt is now recognized as the defacto standard, cross-platform GUI toolkit, offering superior performance, capability and productivity.

Research Plan

Slicer currently has an extensive GUI that consists of three major, logical parts: 1) the core, 2) command-line modules, and 3) modules. The research plan recognizes this organization, and will address the GUI development accordingly.

  • The first step is to replace the core GUI with Qt. This will demand some initial design and planning, including integration of various Qt tools such as Qt Designer.
  • Second, the command-line modules automatically generate their GUI from an XML description of the module. This will require modification so that Qt GUIs are generated (instead of the current KWWidgets).
  • Finally, select, critical modules such as EM Segmenter will be reworked to use Qt widgets.
  • Most of this work will occur in the first year, with completion of the critical modules expected early in the first quarter of the second year.
  • After this, the research plan switches to training and dissemination of Qt-related technology so that the broader Slicer community can participate in the transition of modules to the Qt GUI.
  • The key to this plan is to switch the core and command-line modules as fast as possible since we want to minimize disruption to the Slicer community, and to support continued Slicer development.

Key Personnel

  • William Schroeder, Ph.D., 8%
  • Stephen Aylward, Ph.D., 5%
  • Jean-Christophe FILLION-ROBIN, 50%
  • Julien Finet, 50%

Meetings

  • Regular meeting TCons every other Tuesday at 2:00pm

Links

Progress

  • November 2nd, 2011
    • Look&Feel improvements
      • Improve rendering update frame rate
    • Under the hood
      • Cleanup volume rendering code
  • October 26th, 2011
    • Look&Feel improvements
      • Add option to synchronize volume rendering transfer functions with Volumes module
    • Under the hood
      • Redesign API for logics and diplayable managers
    • Extensions
      • Support BrainsTools as loadable modules.
  • October 19th, 2011
    • Look&Feel improvements
      • Add threshold sliders in volume rendering module
    • Under the hood
      • Scene models don't require instantaneous synchronization of mrml scene.
    • Extensions
      • Support EMSegment as loadable modules.
  • October 12th, 2011
    • Look&Feel improvements
      • Better support for level of detail(LOD) with volume rendering
      • More user-friendly transfer function editor
  • October 5th, 2011
    • Look&Feel improvements
    • Under the hood
      • Automatic loading of python libraries (part 2)
      • Volume Rendering face-lift
    • Extensions
      • Integrate new ChangeTracker module
  • September 28th, 2011
    • Look&Feel improvements
      • Add expand button to show/hide more buttons
      • Improve color transfer function editor
      • Support for color gradients in 3D view
    • Under the hood
      • Automatic loading of python libraries (part 2)
    • Extensions
      • Add access of Slicer environment to CLIs
  • September 21th, 2011
    • Look&Feel improvements
      • Improve the screenshot dialogs (no blinking, dynamic preview...)
      • Add favorites in file dialogs
      • Cleanup menu (File/Edit/Views/Help)
    • Under the hood
      • Support gcc 4.6
      • Read .vp files
  • September 14th, 2011
    • Look&Feel improvement
      • Facelift for the central views layout
      • Transfer function editors usability (add borders to select points)
    • Under the hood
      • Fasten annotation rendering
      • Stabilize demand driven filter pipeline
  • September 7th, 2011
    • Under the hood
      • Fix demand driven pipeline when combining polydata filters with image data filters
    • Look&Feel improvement
      • Reorganize icons in the slice view controller
      • Work on the transfer function editor
    • Extensions
      • Support EMSegment extension
  • August 31st, 2011
    • Look&Feel improvement:
      • Ability to select multiple files in the "Add Volume" dialog
      • Improve module search in the module search bar
  • August 24th, 2011
    • Under the hood:
      • Use a true VTK demand driven pipeline architecture. It makes the code more stable and robust
    • Look&Feel improvement:
    • Modules
      • Added Volume Rendering settings page
  • August 17th, 2011
    • Look&Feel improvement:
      • Blue title bar for 3D views
      • Searchable module selector
  • August 10th, 2011
    • Look&Feel improvement:
      • Color and Opacity column in Models module
    • Under the hood:
      • Reorganize Qt Scene models
      • Various bug fixes
  • August 3rd, 2011
    • Look&Feel improvement:
    • Fixing mac build of DCMTK and tweaking GUI
  • July 27th, 2011
    • Support extensions with Superbuild
    • Look&Feek improvement:
      • Slice/3D view popup
    • Debugging DCMTK and numerous reports from users
  • July 20th, 2011
  • July 13th, 2011
    • Build system
      • Fix BFD dependency issues
    • Look&Feel improvement:
      • Work on prototype for Slice view controller toolbar.
  • July 6th, 2011
    • Speed improvement for slice sliders in Windows
    • Look&Feel improvement:
      • Transfer function editors
      • Popup menu in the Window/Level widget
      • Color dialog
  • June 29th, 2011
    • Widgets
    • Model visibility can now be controlled from the tree view (Models module).
  • June 22th, 2011
  • June 15th, 2011
  • June 8th, 2011
    • Work on Module Extension retrieval from CDash
    • Add Volume Rendering module.
    • Preparation for Slicer 4.0 gamma RC1
  • June 1st, 2011
  • May 26th, 2011
    • Reviewing 64bit Windows and Mac packaging code (WIP)
    • Participated in release of MIDAS Desktop which has hooks for Slicer (WIP)
  • May 19th, 2011
    • Updated CTK-based launcher for Macs
  • May 11th, 2011
    • Updated CDash for managing disk usage (purging old packages) and for providing easy access to uploaded packages
  • May 4th, 2011
    • Enable 64bit packages on Mac (WIP)
    • Export Slicer libraries information for external module configuration
    • Widgets:
    • Work on Transfer Function editor
  • April 27, 2011
    • Find_Package(Slicer) is now available
    • Finalize work on Magnify view
    • Work on the Qt wrapper around the VTK transfer function editor
  • April 20, 2011
    • Work on external modules build system (FIND_PACKAGE(Slicer))
    • Work on Magnify view of area under mouse cursor for 2D slice views
    • Work on Transfer Function editor
  • April 13, 2011
    • Improvement of slicer automatic build submission system:
      • Installers can be generated on a daily basis and be available for download without tedious system administration work ..
    • "Cleaning and simplification" of slicer build system so that Slicer extension could be built and tested.
    • Add Diffusion Weighted Volume display properties panel
  • April 06, 2011
    • Add dynamic property support to layout mechanism
    • Tune and redesign the logics behaviors and displayable managers
    • Fixup documentation and packages
  • March 30, 2011
    • Integration of the errors & logs dialog
    • Add progress when loading files
    • Bug fixes and preparation of a new release
  • March 23, 2011
  • March 17, 2011
    • Work on the DTI display properties in the Volumes module
  • March 10, 2011
    • Assisting on Slicer 3.6.3 release
    • Support multiple 3D views in the layouts
  • March 3, 2011
    • Assisting on Slicer 3.6.3 release
    • Add new layouts
  • February 23, 2011
    • Support Command line executables
    • Work on an Error Log dialog to redirect all the outputs generated by Slicer or CLIs
  • February 16, 2011
    • Redesign the layout mechanism in Slicer (XML based).
  • February 9, 2011
    • CTK hackfest: DICOM Query/Retrieve widgets, application hosting, event bus...
  • February 2, 2011
    • Preparing for CTK hackfest: tcons, presentations, and packaging for CTK
    • Upgrading Slicer4 dashboards with Dave P in support of testing modules
    • Investigating automated binary upload
  • January 28, 2011
    • Extending support for modules and workflows based on Python
    • Assisting in the integration of the Annotation module into Slicer4
  • January 19, 2011
  • January 12, 2011
  • January 5, 2011
    • Tweaking and bug fixing based on feedbacks from Slicer 4.0 beta
    • Preparation for Slicer 4.0 beta-2 and All Hands Meeting 2011
    • New settings: Select "Home" module, show text under toolbar icons
    • Widgets: Rename nodes from node selector, delete nodes from Data module, corner annotations.
  • December 29, 2010
    • Holiday break
  • December 22, 2010
    • Holiday break
  • December 15, 2010
    • Bug fixing and packaging for Slicer 4.0 beta release
  • December 8, 2010
  • December 1, 2010
  • November 24, 2010
  • November 17, 2010
  • November 10, 2010
  • November 3, 2010
  • October 27, 2010
  • October 20, 2010
    • Dashboard cleaning (fixed and added more tests)
    • Redesign of internal structures (layout manager, scene model...)
  • October 13, 2010
    • Launcher application: Add support for Macs
    • Slicer module description parser ported to Qt (CTK)
  • October 6, 2010
    • Updating and integrating launcher application
    • Revising dashboards to use launcher application
    • Continuing to establish tasks and assign priorities for this and related NA-MIC funding
    • Collecting bug reports, etc from user community regarding Alpha Release
    • Planning vtkWidget and other organizational meetings
  • September 29, 2010
    • Revising dashboards to use new Slicer4 repository
    • Establishing priorities for year 2
  • September 22, 2010
    • Planned: Re-evaluate priorities for editor module. Perhaps it should go in an earlier release.
    • Planned: Host design discussion for vtkWidgets, Editor Module, and CUDA in Slicer Qt for interactive segmentation
    • Planned: Consider interactions that can provide intuitive and precise manipulation of and direct the processing of data that spans a wide range of scales in time and space.
  • September 15, 2010
    • Attending CTK Hackfest in Spain
    • Assisting in the integration of Qt Widgets developed for Slicer into the main CTK trunk
    • Providing tutorials on software engineering practices used in Slicer Qt development
  • September 8, 2010
    • Alpha release of Slicer Qt 4 is being packaged
    • Final tests being added to improve coverage
    • Backporting final set of changes to ITK and VTK releases
  • September 1, 2010
  • August 25, 2010
  • August 18, 2010
    • Event: Review of the state of Slicer port to Qt: QtAugust2010
  • August 11, 2010
    • Integration: Full support of PythonQt (wrapping of custom classes)
    • Widgets: Dynamically support sets of different icon size
  • August 4, 2010
  • July 28, 2010
  • July 21, 2010
  • July 14, 2010
    • Work on improving the design of the interaction between MRML and vtk rendering
    • Widgets: Preliminary work on qMRMLColorTableNodeComboBox
    • Widgets: Added colors to the slider handles of the ROI module widgets
  • July 7, 2010
    • Work on improving the design of the interaction between MRML and vtk rendering
    • Modules: Data module (new)
    • Widgets: ctkFileDialog to customize QFileDialog
    • Dialogs: Added support for selecting files for volumes, models, scalar overlay, color table, fiducial lists and fiber bundles
  • June 30, 2010
    • Work on improving the design of the interaction between MRML and vtk rendering
    • Modules: ROI module (new) (Data module: WIP)
    • Widgets: ROI widget (new)
  • June 23, 2010
  • June 16, 2010
  • June 9, 2010
  • June 2, 2010
  • May 26, 2010
    • Work on Slicer superbuild
    • New widgets
  • May 19, 2010
  • May 12, 2010
    • Slicer4 branch has been merged into the trunk (after Slicer3.6 has been created)
    • Integration: Superbuild is now working on Windows/Linux for Slicer Qt
    • Widgets
      • Layout Manager (WIP)
      • 3D Render View (WIP)
      • Slicer View (WIP)
    • Dialogs
      • Settings Manager (WIP)
  • May 05, 2010
    • Integration: Slicer with Qt now supports CMake 2.9 (patch had to be send to the CMake community)
    • Widgets
      • 3D Render View (WIP)
      • Minor bug fixes (qMRMLNodeComboBox, ctkSliderSpinboxWidget, ...)
  • Apr 28, 2010
    • Integration: PythonQt functionality has been ported into CTK (moved out of Slicer)
    • Modules
      • WIP: Command Line Modules
    • File Dialogs
    • Widgets
      • NEW: ctkDirectoryButton a button tied to a directory path selector dialog
      • WIP: Render widget
  • Apr 21, 2010
    • Integration: 100% of CTK widgets have been moved out of Slicer.
    • Widgets
  • Apr 14, 2010
    • Integration: CTK is now linked by Slicer Superbuild (CTK widgets are still in Slicer though).
    • File Dialogs
      • qSlicerDataDialog has been updated to support specific type options and checkable headers
    • Widgets
  • Apr 7, 2010
    • File Dialogs
    • File Readers: more work done in the direction of a flexible IO plugin mechanism
  • Apr 1, 2010
    • Integration: More work done to move CTK widgets into the CTK repository
    • File Dialogs: Preliminary work to port the KWWidgets dialogs to Qt. New dialog: qSlicerStandardFileDialog.
    • File Readers: New architecture to register readers/writers from loadable modules
      • Supported files: *.mrml, *.xml, volumes, models...
  • Mar 24, 2010
  • Mar 17, 2010
    • Integration: Work on CTK for a smooth integration with Slicer
    • Modules: a new module has been ported to Qt: Volumes module (WIP)
    • Widgets
  • Mar 10, 2010
    • Integration: CTK now has its own repository, CTK widgets will be moved from Slicer to git CTK
    • Widgets:
  • Mar 03, 2010
  • Feb 24, 2010
    • Integration: PythonQt (WIP)
    • Widgets:
      • Redesign qMRMLNodeSelector to use qMRMLSceneModel (WIP)
      • Move the Add/Remove/Edit push buttons of qMRMLNodeSelector under the popup list of nodes (WIP)
    • Bug fixes, code cleanup
  • Feb 17, 2010
    • Integration: Preliminary work for integrating PythonQt
    • Widgets:
      • new features: qCTKSliderSpinBoxWidget has a tracking property (valueIsChanging), qCTKMenuButton now directly uses the QMenu from QPushButton
      • new tools: qCTKGroupButton (exclusive button group allowing no button to be selected), qCTKDynamicSpacer (sizePolicy controlled by a slot)
    • Bug fixes, code cleanup
  • Feb 10, 2010
    • Integration of Qt designer into Slicer: the qt application to design module UIs (designer) can now be launch through Slicer: "Slicer3 --launch designer"
    • Arguments/Settings: qCTKSettings can store application settings, added classes to parse the application command line arguments: qVTKCommandOptions, qSlicerCoreCommandOptions, qSlicerCommandOptions
    • Some module logics have been separated from the KWWidgets modules to be reused by Qt modules: ModelMirror, AtlasCreator, MRAblation, FetchMI...
    • Widgets:
      • ported more features from the KWWidgets : qMRMLNodeSelector (support multi node types, attributes, ...),
      • tuned behavior of some widgets, i.e. qCTKSliderSpinBoxWidget:size synchronization of the spinboxes, text right aligned ...
    • Testing: qCTKAddRemoveComboBox, qCTKTestApplication, qVTKObject...
  • Feb 03, 2010
    • Style: QCleanLooksStyle has been choosen to be the default Slicer style
    • The module logics in KWWidgets modules can now be reused in Qt modules
    • New widgets: qCTKMenuButton, qMRMLSceneFactoryWidget (for testing MRML widgets in Designer)
    • New module ported to Qt: Tractography
  • Jan 27, 2010
    • Command line modules: finalizing the integration with Slicer.
    • Render Widget: Preliminary work has been started (qVTKRenderView)
    • New widgets: qMRMLEventLoggerWidget logs all the events generated by a vtkMRMLScene (for debugging only).
    • Design improvement: Using feedbacks from slicer developers, we applied changes to correct heavy/unfriendly designs.
    • Testing: Added qCTKModelTester, a QT object that can test the correctness of any class deriving from QAbstractItemModel.
  • Jan 20, 2010
    • New widget: a generic framework for handling MRML objects in list/table/tree widgets has been developped( drag/drop supported, reparenting, scene observers...)
    • Quality: compilation warnings have been removed.
    • Testing: a skeleton for unit test has been written for each classes
  • Jan 13, 2010
  • Jan 07, 2010
    • Setup dashboards in Qt (Nightly, Continuous and Experimental builds)
    • More unary tests added
    • NAMIC All Hands meeting
      • Presentation of Port of Slicer to Qt to the Slicer community
      • Workshop provided to help slicer developers to setup a Slicer environment running with Qt.
      • First modules developed by the community
  • Dec 30, 2009
    • Added support for modules with no corresponding KWWidgets modules: New modules in QT only can now be created.
    • Bug fixes on Windows.
  • Dec 22, 2009
    • Added tests
    • Tree widgets: WIP
    • Command Line modules: WIP
  • Dec 16, 2009
  • Dec 9, 2009
  • Dec 2, 2009
    • Command Line modules integration: First results (UI only)
    • Interface between MRML Scene and the Qt (tree, list, table...) widgets: WIP
  • Nov 25, 2009
  • Nov 18, 2009
  • Nov 13, 2009
    • rework on the Transforms Module
    • started to work on the Command Line modules integration.
  • Nov 6, 2009
  • Oct 30, 2009
    • The entire Qt-Slicer code architecture has been reviewed, factorized and simplified. Coding rules have been chosen (not documented yet).
    • Documentation: Added a tutorial to write custom widgets
  • Oct 23, 2009
  • Oct 16, 2009
  • Oct 9, 2009
    • TCon with Julien Finet (J2), Jean-Christophe (JC), Steve, Will, Seb, Stephen, Wendy, Nicole to discuss progress
    • Demonstrated new software architecture that simplifies building new modules
    • Addressed issues of background color, etc previously raised by Dr. Kikinis QtTransformModule-v2.png
    • New widgets: Matrix Widget, Transform Sliders
  • Oct 2, 2009
  • Sept 25, 2009
  • Sept 22, 20009
  • September 16-17, 2009