Difference between revisions of "Documentation/Labs/ViewInfrastructureImprovements"

From Slicer Wiki
Jump to: navigation, search
(Access 3D View)
Line 10: Line 10:
  
 
= InteractorStyle management =
 
= InteractorStyle management =
== Current workaround ==
+
== Workaround ==
TODO
+
=== Access 3D View ===
== Issues ==
+
* Created a new Action menu in qSlicerMouseModeToolBar following [https://github.com/Slicer/Slicer/blob/a331fb0/Base/QTGUI/qSlicerMouseModeToolBar.cxx#L59-L103| this method.]
 +
* Accessed all qMRMLThreeDView through the layoutManager
 +
<pre>
 +
void qSlicerMouseModeToolBar::switchToTrackBallInteractorStyle()
 +
{
 +
  qMRMLLayoutManager *layoutManager = qSlicerApplication::application()->layoutManager();
 +
 
 +
  // loop through all existing threeDViews
 +
  vtkNew<vtkThreeDViewInteractorStyle> interactorStyle;
 +
  for (int i=0; i < layoutManager->threeDViewCount(); ++i)
 +
    {
 +
    qMRMLThreeDView* view = layoutManager->threeDWidget(i)->threeDView();
 +
    // Update Interactor style
 +
    this->SetInteractorStyle(view, interactorStyle.GetPointer());
 +
    // Reset focal point
 +
    view->resetFocalPoint();
 +
    }
 +
 
 +
  // Update icon
 +
  Q_D(qSlicerMouseModeToolBar);
 +
  d->InteractorStyleToolButton->setIcon(QIcon(":/Icons/TrackBall.png"));
 +
}
 +
</pre>
 +
 
 +
* Issue : not setting the interactor per view but for all views
 +
* Solution : adding the switch in each 3D View Qt controller
 +
 
 +
=== Update InteractorStyle ===
 
TODO
 
TODO
 +
 
== Design & implementation ==
 
== Design & implementation ==
 
TODO
 
TODO

Revision as of 19:20, 1 December 2015

Home < Documentation < Labs < ViewInfrastructureImprovements

Goals

  • Update Slicer code base to listen to interactor instead of interactor style
  • Add support for interactor style switch per view
  • Allow access to vtkRenderWindow from vtkMRMLViewNode

Motivation

  • We would like to conveniently be able to change the interactor style without having to reset all observer for the displayable managers.
  • Accessing the vtkRenderWindow would allow us to do (for example) screenshots given a specific viewNode.

InteractorStyle management

Workaround

Access 3D View

  • Created a new Action menu in qSlicerMouseModeToolBar following this method.
  • Accessed all qMRMLThreeDView through the layoutManager
void qSlicerMouseModeToolBar::switchToTrackBallInteractorStyle()
{
  qMRMLLayoutManager *layoutManager = qSlicerApplication::application()->layoutManager();

  // loop through all existing threeDViews
  vtkNew<vtkThreeDViewInteractorStyle> interactorStyle;
  for (int i=0; i < layoutManager->threeDViewCount(); ++i)
    {
    qMRMLThreeDView* view = layoutManager->threeDWidget(i)->threeDView();
    // Update Interactor style
    this->SetInteractorStyle(view, interactorStyle.GetPointer());
    // Reset focal point
    view->resetFocalPoint();
    }

  // Update icon
  Q_D(qSlicerMouseModeToolBar);
  d->InteractorStyleToolButton->setIcon(QIcon(":/Icons/TrackBall.png"));
}
  • Issue : not setting the interactor per view but for all views
  • Solution : adding the switch in each 3D View Qt controller

Update InteractorStyle

TODO

Design & implementation

TODO

vtkRenderWindow mapping

Current workaround

TODO

Issues

TODO

Design & implementation

TODO