2006 Project Week MIT SlicerUI

From NAMIC Wiki
Jump to: navigation, search
Home < 2006 Project Week MIT SlicerUI


Design and implement the UI for Slicer3; develop infrastructure for adding Module GUIs.


Slicer3's Data and Logic layers are independent of the GUI layer, so that Slicer's base and modules are scriptable and easy to test. Infrastructure for developing module GUIs is in place and we'll describe that this week.

We'll also give an overview of Slicer3's new GUI design: the main GUI is coarsely blocked out at present and we'll go over the next steps in the design process. Further implementation and design will benefit from this week's feature request and usability discussion.


File:2006 Summer Project Week Slicer3UI.ppt

Project Page

Please see:

Slicer3 Interface Design,

Slicer3 Feature Requests and

Proposed Mouse and Keyboard Behavior.

Specific Programming Topics

  • Getting access to Interactor events
    • Cross-platform behavior (linux vs windows)
      FIXED: (probably) the vtkKWGenericRenderWinderInteractor was not Tcl wrapped. Give it a shot (fix vtkSlicerSliceViewer::GetRenderWindowInteractor first)
    • how to get the alt key as a mouse event modifier
      In VTK CVS for Win32 now, Unix version to come (This page mentions only ShiftMask and ControlMask. After googling, Mod1Mask seems to do the trick...)
    • ConfigureEvents not going to all slice viewer RenderWidgets
      FIXED: update KWWidgets, there was a de-sync between an interactor ivar, or the fact that the interactor could be reset on the vtkRenderWindow directly. And also, a vtkRenderWindowInteractor was created and assigned implicitly by Slicer, instead of a vtkGenericRenderWindowInteractor... Update: still broken, weird stuff happening.
  • Event Loop Management
    • How to set up event driven control of command line modules so the application doesn't freeze when they run --> make a Tcl_Channel from the stdin/out/errs from the kwsys calls

Solution for command line modules running as processes is to generate file events for them, but now that they can be loaded as dll's that won't work. We need to figure out a way to keep the application from freezing

  • Can launcher have a splash screen (so user knows something is happening while libraries load). Ties into question of whether a launcher is needed for releases.
  • Avoiding Extra Renders
    • Avoid 'jerky' display behavior
    • need to handle widgets and render windows
    • involves both window system events and vtk internal events
  • VTK 3D Widgets
    • Providing additional visible feedback for when handle are 'hot' during mouseover
    • Tying together 2D and 3D Widgets
    • Catalog and Prioritize which of the 3D Widgets will be used in Slicer3
  • KWWidget Creation/Usage
    • how to make vtkSlicerSliceControllerWidget expand when it's frame expands?
      FIXED: grid does not expand by default, you need to use grid columnconfigure 0 -weight 1
    • for easier debugging, make the autogenerated widget names include the class (e.g. .vtkKWToplevel706.vtkSlicerSliceControllerWidget707 instead of .706.707)
      FIXED: use new vtkKWWidget::SetUseClassNameInWidgetName method
    • Any way to set a maximum screen size (font size) for corner annotations?
      FIXED: use new vtkCornerAnnotation::SetMaximumFontSize method
    • Use new tkcon with extra binding
      Steve to send Sebastien the binding to include in KWWidgets's TkCon


  • Wendy Plesniak - Core 2
  • Sebastien Barre - Core 2
  • Steve Pieper - Core 2
  • Mathieu Malaterre - Core 2
  • Randy Gollub - Core 5
  • Michael Halle - Core 2
  • Will Schroeder - Core 2

Back to Project week