Slicer:Developer Meetings:20090916
From Slicer Wiki
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
- Will Schroeder
- Steve Pieper
- Ron Kikinis
- Nicole Aucoin
- Alex Yarmarkovich (Wed only)
- Sebastien Barre
- JC Fillion
- Katie Hayes
- Andriy Fedorov
- 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