110 likes | 186 Views
3D Slicer. Qt Port & qCTKWidgets Steve Pieper, Ph.D. Background. 3D Slicer version 3.x use KWWidgets VTK-style interface to Tk 3D Slicer 1.x, 2.x used Tk directly Qt rejected for license reasons This has changed NIH Supplement to help with port 9/17/2009 - 9/16/2011
E N D
3D Slicer Qt Port & qCTKWidgets Steve Pieper, Ph.D.
Background 3D Slicer version 3.x use KWWidgets VTK-style interface to Tk 3D Slicer 1.x, 2.x used Tk directly Qt rejected for license reasons This has changed NIH Supplement to help with port 9/17/2009 - 9/16/2011 http://www.na-mic.org/Wiki/index.php/Projects:ARRA:SlicerUI William Schroeder, Ph.D., 8% Stephen Aylward, Ph.D., 5% Jean-Christophe Fillion-Robin, 50% Julien Finet, 50% Sebastien Barre, Ph.D., 5% + the rest of the slicer development team
Overall Plans Create Qt/KWW co-existence layer (done!) Prototype a few modules (done!) Create an architecture for Qt based modules (in process) Train developers (first session at January 2010 Project Week) Port modules (ongoing through 2010…) Turn off KWW (by end of 2010?) Continual Improvement (through end of supplement and beyond…)
CTK Opportunity Serendipity: CommonTK appears at just the right time Agreed at CTK Oxford meeting: Non-slicer-specific subset of new Qt-based GUI the first pass at CTK’s widget set qCTKWidgets Only depends on Qt (not slicer code) Currently residing in Slicer3 svn for convenience (will migrate to commontk.org) Open for contributions from other CTK members
Initial Widgets qCTKAbstractFactory qCTKAbstractLibraryFactory qCTKAbstractObjectFactory qCTKAbstractPluginFactory qCTKAbstractQObjectFactory qCTKAddRemoveComboBox qCTKCollapsibleGroupBox qCTKCollapsibleWidget qCTKCollapsibleWidget2 qCTKColorPickerButton qCTKCoordinatesWidget qCTKFittedTextBrowser qCTKFlowLayout qCTKMatrixWidget qCTKNumericInput qCTKSlider qCTKSliderSpinBoxLabel qCTKTitleComboBox qCTKTreeComboBox
Other Qt code in Slicer qMRMLWidgets GUI for interacting with slicer’s data model Depends on MRML, VTK, ITK Base/QTGUI Implements blocks of slicer application Base/QTCLI Wrappers for Command Line Interface modules (xml-based slicer execution model programs) QTModule Slicer modules implemented in Qt using QTGUI, qMRMLWidgets, qCTKWidgets Applications/QTGUI (to do) Main programs built with Qt
Next Steps / Wishlist / Issues Eventually want all the widgets listed here: http://www.commontk.org/cgi-bin/trac.cgi/wiki/WidgetPlans Slicer Qt Port will not generate all of these May subdivide qCTKWidgets by dependencies: Qt only; Qt+VTK, Qt+dcmtk, Qt+VTK+dcmtk Want to leverage Qt community (for example, Qxt) qCTKWidgets may need to be LGPL Python Scripting (cannot be commercial or GPL) PythonQT until PySide is available? Conventions Coding, naming, debugging, capitalization… Additional funding