From NAMIC Wiki
Jump to: navigation, search
Home < QtAugust2010
Back to events


  • What: Review of the status of the Qt port, schedule and allocation of the upcoming work (current todo list)
  • When: August 12-13
  • Where: Kitware office in North Carolina (see below)
  • Who: those involved in the Qt port
Slicer4 Team
Slicer4 Plans


  • start: Thursday August 12 2010 at 9am
  • end: Friday August 13 2010 at 3pm
  • Thursday
    • 9am->12pm: Review of SlicerQt
      • Presentation/Introduction
      • Demo of SlicerQt
      • Slicer3 and SlicerQt, what is missing?
    • 12pm->1:30pm: Ergonomic Lecture at Kitware
    • 1:30pm->3pm
    • 3pm -> 3:45: MIDAS integration
    • 4pm -> 5:30: Open issues / future of Slicer
  • Friday
    • 9am->12am: Coding/Naming conventions, programmer guidelines...
    • 12pm->1:30pm: Lunch
    • 1:30pm->3pm
      • Final definition of the content of the alpha release
      • Final priority list
      • wiki updates

Visiting Kitware in North Carolina


  • Local Airport: RDU (Raleigh-Durham International Airport)
  • Chapel Hill is about 35 minutes from the airport (50 minutes with "traffic")

Trains, Buses, and Automobiles

  • There are trains and buses from DC and other cities, but they are extremely slow and unreliable.
  • It is a 4.5 hour drive from DC to Chapel hill / Carrboro, NC (Map)

Transportation from Airport


  1. The Franklin Hotel (walking distance to KRS - 0.5 mi)
    1. Walking distance to KRS and UNC (1 mile to each)
    2. Ask for the Kitware Corporate rate: $150-ish (varies)
  2. Carolina Inn
    1. Adjacent to UNC and about 2 miles from Kitware
    2. $170-ish
  3. Days Inn
  4. Sheraton
  5. Holiday Inn
  6. The Siena Hotel

Local Transportation

Directions to KRS ("Kitware Really South")

  • Weaver St Market Building, 101 East Weaver St, Suite G4, Carrboro, NC 27510
  • Google Map
  • Directions for "locals": Park in the lot next to Weaver St Market. Access to the lot is from Main St., and the lot is located across the street from Armadillo Grill. Enter the east end of the Weaver St Market building (glass door nearest the parking lot). Kitware offices (Suite G4) are on the third floor, at the far end of the building (follow the hall).


Draft Timeline & To-Do list


  • File Menu
  • CPack: test of nightly build (Dave P)
  • Application Setting Interface
  • Python interactor
  • Manipulate Slice Views (Steve P. / Julien F.) (see notes below for decision on how to modify)
  • Manipulate 3D View(s) -- (J?) (if more than one supported, then use plural "Views")
  • Slice Views (Steve P.)
  • 3D Views (J?)
  • Command-line modules: executable (Notwithstanding workaround for few places in which tcl is used to invoke a script to send a string back from a processing thread).
  • ROI module (in 3D view)
    • disable handles in the widgets when no node is selected
  • Transforms module (double-check to see if Global/Local coordinate reference is working)
  • Volumes module (window/level & histogram widget) (JF)


(BETA = traditionally feature-complete for release, but in this case, feature-complete for developers at the AHM December)

  • File Menu->Download Sample Data (BETA/GAMMA) (Cache & Remote IO GUI)
  • DICOM support (partI ) (in Add Volume dialog)
  • Extension Manager (GUI)
  • Python Scripts
  • CompareView Layout and Functionality -- include Jim Miller (NA-MIC/NAC) (BETA/GAMMA)
  • Tabbed 3D Layout (and multiple view/camera functionality)
  • 3D Display of Volume Rendering
  • Command-line module: shared
    • remove memcpy in ITK
  • Hide everything that's not working in GUI
  • Editor module GUI
  • Bare-bones fiducials GUI functionality : Create a new Fiducial List, Change the glyph scale, change the glyph type.
  • Some version of Models Module (Model display)
  • Color label picker
  • Annotation Module PriorityList


  • File Menu->Download Sample Data (BETA OR GAMMA) (Cache & RemoteIO GUI)
  • DICOM support (partII )
  • Extension Manager (Logic)
  • Custom Layout for screen resolution
  • CompareView Layout and functionality (include Jim Miller -- NA-MIC/NAC) (hopefully BETA)
  • Tabbed 3D Layout (and multiple view/camera functionality)
  • Volume Rendering GUI
  • Color Module (Nicole will strategize)
  • Editor Module Logic (tcl)
  • Fiducial Module rework
  • Some version of Models Module (Model hierarchy GUI)
  • Diffusion (DTI/DTI)
  • Fiber Bundles


  • Extension Manager (Server)
  • CLI: shared use Qthread
  • Material Properties Widget


Application Interface notes from 8/12-13/2010 tracking comments/requests

  • Color module: Get rid of Editor panel maybe -- reorganize/ redesign.
  • Color module: remove scalar color bar -- this should go into annotations module.
  • Color picker widget: display menu and palette for each LUT, select a color swatch. custom color selection not required at first.
  • ROI module: when there's no node, disable widget handles and grey-out text when no ROI node is selected.
  • File browser: Need option to add and remove favorites
  • Missing Layouts: tabbed 3D CompareView, SidebySideCompare...
  • Question: do we need custom file browsers for consistent cross platform appearance & functionality, or is native look/feel OK?
  • Need a QT error log to capture error output
  • Cosmetics: In Slice Control GUI for example, icons and node selectors should have same height.
  • FG, BG, LB layer icons used to have drop down menus for options. Good way to package optional functionality? Right-click on icon or node selector could do the same.
  • Load interface modifications could consolidate { choose source, data browser|source, load-list, dicom browser|dataset }
  • Make good defaults for load data interface that reflect what most users want to do (load file rather than dir, load volume)
  • Workflow GUI?
  • Roadmap: Enumerate core modules and prioritize them for IGT, Algorithm Developers, Other key user groups.
  • Add Volume interface: in the "options" row at bottom, include a label "VolumeName" before the entry widget.
  • Look at a method called "PropagateVolumeSelection" for Application behavior after loading a volume.
  • Think about ways to remap Slice Controller Slider: ways to calibrate slider sensitivity for best performance (more slider notes below)
  • Remapping controls for window/level (same thing)
  • Look at how slicer behaves when the size of the screen changes. Does it start up with good appearance (this is slicer3 bug not to be repeated).Load a scene or restore a scene snapshot that was saved in a session run on display with different resolution.
  • Modify File Menu options: Edit->AddFiducialList ?? doesn't need to be there (kww holdover)
  • Create good default application GUI size, font, etc. based on system parameters at startup: When do we want Slicer to guess, and when do we want Slicer to let user drive?
  • Come up with official lower-bound screen res we support -- upper-bound font sze we support. Then make sure GUIs test with these conditions to make sure all interfaces are reachable.
  • Ron note: extensions are first step on becoming a new module in new slicer, so Extension Manager Wizard a priority.
  • Extension Manager is for users (not developers) who DL latest release binary and want compatible extensions, or who DL latest nightly and want compatible extensions.
  • CLI: python scriptables? December? Designer UI files for python scripted modules good, but low prioirty
  • Cache Remote IO Mgr: download sample data functionality will use this. Download status could be animated or big dialog saying "Downloading..." so users know what's happening
  • Application Settings interface --> need to implement?
  • Option to load dll's or not on startup -- save startup time?
  • Toolbar: Icons for load & save: change to be generalized load with optinos for WHAT to load (volumes, models etc.), generalzed save. This saves traversing with mouse to MAC file menu for such options under file menu.
  • Toolbar: add a "close-scene" icon.
  • Toolbar: don't need history if we embed history in previous and next.
  • Toolbar: Change prev/next icons to acrobat-style icon + menubutton for previous or history -- eliminate long click.
  • Toolbar: Change module search behavior somehow to save toolbar space???
  • Slider: remove up and down arrows for single click.
  • Slider:What happens when you move the mouse past the end of a range
    • expand past end to auto-extend range
    • maybe hold there and options menu pops up
    • maybe right click to get options menu?
    • type in numbers numerically
  • Slider: gear fineness of control to speed of mouse movement?
    • Try adding gear icon to bring up menu to configure range, increment, or set coarse, medium and fine control
    • Color the min and max handles slightly differently so when they are co-located, we know there are two
    • Range widget controls: options to have symmetric versus asymmetric control of max/min
    • For slider behavior, best to experiment in Volumes module -- Ron says window/level control much be supercool
  • Undo/Redo: take this out of the toolbar to NOT advertise its global availability. Instead, put icons in spot locations where the functionality works.
  • In editor module, change "checkpoints" to be named undo/redo for conceptual consistency
  • Splashscreen: hmmm, dynamic loading text doesn't show up (on Stevee's version)
  • Welcome Module: let's display this at the usual default giu panel size.
    • Welcome: all images and text in html?
  • Make vocabulary changes throughout application/module interfaces:
    • MRML "Tree" -> Scene
    • Add Node --> Add { Transform, Model, Volume … }
    • "View" in mrml tree should be named "Default View" or "My View" by default.
  • Data Module: Remove Node inspector
    • Implement Delete with multiple inspection on nodes in the tree
  • (little bug) CLI module guy panel doesn't always expand to fill available GUI space.
  • For Developers at AHM: Module Templates for Stacked, tabbed, wizard module GUI (wjp->JF&JC)
  • Support for internationalization throughout (including template)
  • Volumes Module: Window/Level should be ontop
    • put threshold on bottom
    • Histogram widget should show full range of data with distribution.
    • Look at the Slicer3 widgets to understand good bits of histogram widget.
    • Voluems module presets: individual buttons should be packaged in a pulldown or a "gallery"
  • Slice Viewer Controllers: Under label map icon in slice viewers: need option for converting greyscale to label map…. options specific to label layer, like putting opacity slider there, label outlines on/off...
    • Linking viewers behavior:
    • When slice viewers are linked, all functions that ARE linked should have some visual indication of what's linked (little link icon on them?)
    • Need good pattern for what's linked, and what's not effected by linked state.
    • Links only in SlicesControlGUI -- slice viewers are always independent control?
    • link-once and link-persistence
    • click link and get cursor change -- cursor with little link!!!
    • Steve decides the following: Same set of functionality available in "Manpulate Slice Views" panel and in each SliceGUIController. The ManipulateSliceViews options will apply to all Slice Viewers (linked). And the Individual Slice Viewer controlls will only operate on the associated Slice Viewer. No need for the linked icon!

Packaging notes from 8/13/2010 tracking comments/requests


  • list of target platforms:
  • can we set up multiple build farms to do a number of things (build installers, test installers, etc) in robust, scalable way?
  • currently we're doing the two-step: dashboard machines are doing builds. separately making nightlies available for download -- that's separate.
  • ITK/VTK: build does scp of the executable to a dir on server running webpage --> downloadable.
  • nightlies are behind our firewall. Could we have repository at kitware for nightlies instead? might have a mirror at BWH.
  • ftpserver at Kitware or somewhere else? -- we just pull nightlies from Kitware location and xfer to BWH mirror.
  • win32, win64, linux32, linux64, macox intel (32/64) leopard, snowleopard
  • setting up virtual machines -- one multicore mac, RAID array...

Code Naming conventions notes

Probably need to tighten up our naming conventions.... (scratch)

  • VTK
  • ITK
  • CTK
  • Qt
  • Slicer