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%, 9/17/2009 - 9/16/2011
  • Stephen Aylward, Ph.D., 5%
  • Jean-Christophe FILLION-ROBIN, 50%
  • Julien Finet, 50%
  • Sebastien Barre, Ph.D., 5%

Meetings

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

Links

Progress

  • 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