1 / 21

NA-MIC, 2008 June Workshop, IHK Akademie Westerham KWWidgets

NA-MIC, 2008 June Workshop, IHK Akademie Westerham KWWidgets. Sebastien BARRE, Ph.D. - Kitware, Inc. What is KWWidgets?. A GUI toolkit Cross-platform Open-license Free. 2. What is KWWidgets? (cont.).

Download Presentation

NA-MIC, 2008 June Workshop, IHK Akademie Westerham KWWidgets

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NA-MIC, 2008 June Workshop, IHK Akademie WesterhamKWWidgets Sebastien BARRE, Ph.D. - Kitware, Inc.

  2. What is KWWidgets? • A GUI toolkit • Cross-platform • Open-license • Free NA-MIC, 2008 June Workshop, IHK Akademie Westerham 2

  3. What is KWWidgets? (cont.) • A GUI toolkit that provides low-level and high-level visualization-oriented widgets compatible with the VTK framework. vs. NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  4. What is KWWidgets? (cont.) • Over 150 C++ classes, • Around 190,000 lines of code, 49 person years, roughly $5M at 100k per person (source: ohloh.org) • Used extensively by Kitware to develop open-source and commercial end-user applications for more than 9 years • Used extensively in Slicer3 NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  5. What is KWWidgets? (cont.) Cardiac segmentation and CT Volume Rendering in Slicer3, using data and segmentations from the collaboration with Boston Children's Hospital Pediatric Cardiology. NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  6. What is KWWidgets? (cont.) VolView 3.0 (Work in Progress) NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  7. Features • Object-oriented C++ layer on top of Tcl/Tk • Inherit from the VTK coding framework checkbutton .cb1 .cb1 config -text "A checkbutton" .cb1 deselect pack .cb1 vtkKWCheckButton *cb1 = vtkKWCheckButton::New(); cb1->SetParent(parent); cb1->Create(); cb1->SetText("A checkbutton"); cb1->DeSelect(); app->Script("pack %s", cb1->GetWidgetName()); NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  8. Features (cont.) • Can interact and co-exist with Tcl/Tk directly from Tcl/Tk or Slicer3 • Wrapped into a Tcl package just like VTK • Fast-prototyping NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  9. Features (cont.) • C++ vs. Tcl vtkKWCheckButton *cb1 = vtkKWCheckButton::New(); cb1->SetParent(parent); cb1->Create(); cb1->SetText("A checkbutton"); cb1->DeSelect(); app->Script("pack %s", cb1->GetWidgetName()); package require kwwidgets vtkKWCheckButton cb1 cb1 SetParent $parent cb1 Create cb1 SetText "A checkbutton" cb1 DeSelect pack [cb1 GetWidgetName] … button .b -text "My Button" pack .b NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  10. Widgets overview • Core widgets • Composite widgets • VTK widgets • Helper classes NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  11. Widgets overview (cont.) • Core widgets vtkKWCanvas vtkKWCheckButton vtkKWEntry vtkKWFrame vtkKWLabel vtkKWListBox vtkKWMenu vtkKWOptionMenu vtkKWPushButton vtkKWRadioButton vtkKWScale vtkKWScrollbar vtkKWText vtkKWThumbWheel vtkKWTopLevel vtkKWTree … NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  12. Widgets overview (cont.) • Composite widgets vtkKWChangeColorButton vtkKWDialog vtkKWExtent vtkKWListBoxToListBoxSelectionEditor vtkKWHSVColorSelector vtkKWNotebook vtkKWProgressGauge vtkKWRange vtkKWSelectionFrame vtkKWSelectionFrameLayoutManager vtkKWSplashScreen vtkKWSplitFrame vtkKWTclInteractor vtkKWToolbar vtkKWToolbarSet vtkKWUserInterfaceManager vtkKWUserInterfacePanel vtkKWWidgetSet vtkKWWidgetWithScrollbars vtkKWWindow … NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  13. Widgets overview (cont.) • … more composite widgets: divide and conquer NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  14. Widgets overview (cont.) • VTK widgets vtkKWColorPresetSelector vtkKWColorTransferFunctionEditor vtkKWCornerAnnotationEditor vtkKWHeaderAnnotationEditor vtkKWPiecewiseFunctionEditor vtkKWRenderWidget vtkKWScalarBarAnnotation vtkKWScalarComponentSelectionWidget vtkKWTextPropertyEditor vtkKWVolumeMaterialPropertyWidget vtkKWVolumePropertyWidget … NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  15. Examples • A simple image viewer using KWWidgets and VTK NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  16. Examples (cont.) package require kwwidgets vtkKWApplication app vtkKWWindowBase win app AddWindow win win Create vtkKWRenderWidget rw rw SetParent [win GetViewFrame] rw Create rw CornerAnnotationVisibilityOn pack [rw GetWidgetName] -side top -expand y -fill both \ -padx 0 -pady 0 vtkXMLImageDataReader reader reader SetFileName "head100x100x47.vti" vtkImageViewer2 viewer viewer SetRenderWindow [rw GetRenderWindow] viewer SetRenderer [rw GetRenderer] viewer SetInput [reader GetOutput] vtkRenderWindowInteractor iren viewer SetupInteractor iren rw ResetCamera set ca [rw GetCornerAnnotation] $ca SetImageActor [viewer GetImageActor] $ca SetWindowLevel [viewer GetWindowLevel] $ca SetText 2 "<slice>" $ca SetText 3 "<window>\n<level>" vtkKWScale slice_scale slice_scale SetParent [win GetViewFrame] slice_scale Create slice_scale SetRange \ [viewer GetWholeZMin] [viewer GetWholeZMax] slice_scale SetValue [viewer GetZSlice] slice_scale SetCommand "" \ {viewer SetZSlice [slice_scale GetValue] ; rw Render} pack [slice_scale GetWidgetName] -side top -expand n \ -fill x -padx 2 -pady 2 app Start rw Delete reader Delete viewer Delete iren Delete slice_scale Delete win Delete app Delete NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  17. Examples (cont.) • KWWidgetsTour • Show all widgets • Provide Tcl vs. C++ vs. Python code comparison NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  18. KWWidgets in Slicer3 • in Base/GUI(Load/Save, App Settings, Color, Data, Fiducials, Models, ROI, Slices, Transforms) NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  19. KWWidgets in Slicer3 (cont.) in C++ or Tcl modulesslicerWiki: How to implement an Interactive Module GUI NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  20. KWWidgets in Slicer3 (cont.) in Command Line Plugins slicerWiki: Execution Model DocumentationUI and command-line generated from self-describing XML <?xml version="1.0" encoding="utf-8"?> <executable> <category> Filtering.Denoising </category> <title> Median Filter </title> <description> The MedianImageFilter is commonly used as a robust approach for noise reduction. This filter is particularly efficient against "salt-and-pepper" noise. In other words, it is robust to the presence of gray-level outliers. MedianImageFilter computes the value of each output pixel as the statistical median of the neighborhood of values around the corresponding input pixel. </description> <version>0.1.0.$Revision: 2085 $(alpha)</version> <contributor>Bill Lorensen</contributor> <parameters> <label>Median Filter Parameters</label> <description>Parameters for the median filter</description> <integer-vector> <name>neighborhood</name> <longflag>--neighborhood</longflag> <description>The size of the neighborhood in each dimension</description> <label>Neighborhood Size</label> <default>1,1,1</default> </integer-vector> </parameters> <parameters> <label>IO</label> <description>Input/output parameters</description> <image> <name>inputVolume</name> <label>Input Volume</label> <channel>input</channel> <index>0</index> <description>Input volume to be filtered</description> </image> <image> <name>outputVolume</name> <label>Output Volume</label> <channel>output</channel> <index>1</index> <description>Output filtered</description> </image> </parameters> </executable> NA-MIC, 2008 June Workshop, IHK Akademie Westerham

  21. Find more about KWWidgets… • Web & Wiki: http://kwwidgets.org • API: http://public.kitware.com/KWWidgets/doc/nightly/html • Tutorial and examples available in the source: cvs –d :pserver:anonymous@public.kitware.com:/cvsroot/KWWidgets co KWWidgets • Dashboard: http://www.cdash.org/CDash/index.php?project=KWWidgets NA-MIC, 2008 June Workshop, IHK Akademie Westerham

More Related