Slicer:Developer Meetings:20090916

From Slicer Wiki
Jump to: navigation, search
Home < Slicer:Developer Meetings:20090916

Goal

Discuss feasibility of migrating Slicer3 to use Qt widgets. Joint meeting with Kitware, agenda here: Sept 2009 Slicer Widgets Brainstorm

Attendees

  1. Will Schroeder
  2. Steve Pieper
  3. Ron Kikinis
  4. Nicole Aucoin
  5. Alex Yarmarkovich (Wed only)
  6. Sebastien Barre
  7. JC Fillion
  8. Katie Hayes
  9. Andriy Fedorov
  10. Junichi Tokuda (Thu only)

Rough Notes

Wed Sept 16/09
- Qt meeting with Kitware
General
   - need to demonstrate better usability
   - cmtk is qt based widget ste, general gui widgets, but separate library to compile. Should focus on Slicer stuff.
   - medInria is being re-written (includes a software self updater)
   - paraview some widgets are autogenerated
   - automated testing: squish works with Qt, used at Kitware
Qt:
   - slot: does things (proc, method)
   - signal: something changed
   - connect signal that x changed to slot to do something with that info
   - cmake provides a QObject wrapper, Qt meta object compiler (MOC) to wrap Qt to C++
   - vtk can call Qt slot, uses the Connect method on vtkEventQtSlotConnect class
   - Qt can connect signal and slot that can interact with vtk objects
   - Qt global window keeps track of all signals (Qt connect) via the Qt event loop
Qt Designer and Qt creator:
   - writes xml file to disk, translated to ui_MyWidget.h (which is not a qObject)
   - the meta object compiler can compile ui files to .h files
   - can drop in custom qt widgets (Promoted Class) or Qt designer plugin (see Maverick qt qwidgets that have been contributed as open souce at http://www.vtk.org/wiki/Maverick)
   - can overload paint event to change the icons at pixel level (changed the range slider trough appearance in the example)
   - Qt can apply a style and keep it the same across all platforms; debate if we wan to do this
   - Canvas to draw UI with lines, rectangles, textures
- can block a signal to do the equivalent of swallowing a vtk event
- Qt can be compiled multithreaded
- remove gui events and move to Qt
- kwsys versus Qt sys
- on the Mac: vtk carbon render window, can't coexist with TK, cocoa looks bad
- there will be a tutorial on Qt development at the winter project week
- looking at Slicer
   - recurring bug, the checkerboard filter node sel cuts off to the last letter of the node name
- get signal if user moves slider, not if set the value of a slider programatically
   - if want other qt widgets to respond, need to observe what triggered the set value call (verify this) aka change to a mrml node
- if we could just listen for signals (wrap vtk with Qt), easier
- memory management: make sure to use vtk smart pointers, don't need to delete Qt objects
- start at 8am tomorrow

Thur Sept 17/09
Kitware meeting about Qt
- JC did a proof of concept architecture for using Qt
- separate out nodes (each qt module will have a vtkmrmlnode as a superclass pointer, safe down cast to it's specific one): widget passes editing to module which edits the node
- tcl modules
   - translate them to python?
   - what about scripted modules?
   - python goes through tcl
   - tcl access to vtk obj -> vtk wrap tcl
   - tcl access to qt -> python
- current work
   - Seb making new cameras and windows, merging code, lowest time estimate to be done, 10 days
       - try to wait for him to get the mrml level stuff done before chaning the3d window UI on him
   - Wendy's customisable layout is paused while the Qt storm rages
- conversion of specific things to Qt
   - toolbar:
       - layout options that we want first? conventional, four up, red only, compare view... pretty much all of them
       - most of the buttons just jump to modules
   - Qt colours
       - can add custom colours, how about sets of them?
       - drop down box to selet colour from a list
   - log: KWQtLogDialog
   - multi column list: QtPropertyBrowser, can view as List, Tree, Table
       - can have table and tree combined in one view
   - Qt has undo/redo
   - icons -> resouce editor in Qt creator
   - naming conventions
       - qSlicer
       - onEventChanged
- Qt training?
   - trolltech docs for getting started
- Qt module skeleton generator will be important, write out an xml file and cxx
- for January, ahve something for developers to work on, by summer, transition to Qt
- examples checked in to Base/GUI2?
- Jim Miller to rewrite CLI generator?
   - Steve thinks anyone could do it
- benefits list on wiki somewhere so can add to it
- undo in slicer, add a string with the node on the call to the mrml scene
- Qt web plug in demo
   - any qt slot is a java script method
   - see Base/GUI/Qt/vtkview.cxx
   - so can write html with calls to vtk and mrml (via KW applicatin and Script call)
   - write live tutorials - overlay on buttons to show which to press
   - allow writing CLI in javascript but don't encourage/support it
   - simple ui for work in developing countries
- Steve to go to Chapel Hill for more work with JC
- action items for Slicer core devs: do Qt tutorial, get slicer building with Qt