Difference between revisions of "Documentation/Labs/VTKWidgets"

From Slicer Wiki
Jump to: navigation, search
(Replaced content with "Content of this page was merged into Documentation/Labs/Improving_Markups")
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Content of this page was merged into [[Documentation/Labs/Improving_Markups]]
This page has the following purposes:
* It documents the user and developer features we wish to support in Slicer's version of the VTK Widgets
* It documents the changes we would like to ultimately see implemented in the official VTK Widgets.
* It presents Slicer specific implementation acting as a "experimental ground" to better understand how VTK widgets could be updated.
=Features Missing in 4.4=
==For Users==
* Control L to make a new fiducial list
* Control I for persistent place toggle
* Control M to make a ruler between last two placed fiducials
* back tick and control/shift back tick to jump slices to fiducials
* delete or backspace (or 'd') to delete fiducial under mouse
* 'p' to place fiducial without  having to click in window to grab focus
* Right click context menu (allow all operations currently supported in the table widget in the Markups GUI)
* modifier key to move fiducials between slices in 2D
* scaling issues (2D widget is scaled down by 300x compared to 3D)
* restrict to surface (found issues with the point placer wrt how it would be used in Slicer)
* rubber band placement for rulers
==For Developers==
* A start/end and moving event with seed number
* A start/end and hover event
* near widget vs near handle events
* A 2D version of the oriented handle widget
* consistent widget interfaces for click to place as well as programatic placement (vs them being added with zero size and having to be manipulated)
* consistent distribution of settings from the widget to all handles (process events on/off, visibility, display properties).
* expanded WidgetState settings that can be queried and maybe set
=Design and Implementation=
For the fiducials, we are currently using a vtkSeedWidget in both 2D and 3D. With the oriented polygonal handle representation being the only option to show a glyph and text together, and it being a 3D widget, it introduces some quirks in the 2D viewers. The Markups displayable managers have already been split into 2D and 3D versions to deal with this.
Some approaches:
* subclass the seed widget and representation and handles and create Slicer specific implementations
** Cons:
***not easy to feed back into VTK
** Pros:
***full control
***did something similar already with the ROI widget
* modify the Slicer specific VTK github fork to implement the features we need in C++, then migrate them back via gerrit
** Cons:
*** Still constrained by the VTK implementation as a starting point
** Pros:
*** more freedom to experiment/customise
*** easy to feed back into VTK
* Port the Slicer3 Tcl implmentation of the 2D fiducials to Python for Slicer4
** Cons:
*** issues with the reloadability of the scripted displayable managers
*** not easy to feed back into VTK
** Pros:
*** full control
*** nominally easier as that version supported many of our missing use cases
* [http://slicer-devel.65872.n3.nabble.com/interactive-contour-editing-td4032633i20.html#a4033779 Interactive Contour Editing thread on slicer-dev (2015)]
* [http://www.na-mic.org/Wiki/index.php/Projects:ARRA:SlicerAM:vtkWidgets ARRA grant widget notes (2010)]
* [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/SlicerApplication/MouseandKeyboardShortcuts Mouse and Keyboard Shortcuts (nightly)]
* [http://viewvc.slicer.org/viewvc.cgi/Slicer3/trunk/Base/GUI/Tcl/ Slicer3 Tcl SWidget, SeedSWidget, FiducialsSWidget]

Latest revision as of 19:40, 4 March 2019

Home < Documentation < Labs < VTKWidgets

Content of this page was merged into Documentation/Labs/Improving_Markups