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