Skip to content

Commit 737a721

Browse files
feat(abstract_view): add access to displayable manager
- Add access to DM from abstract_view using either dm class name or class type closes #67
1 parent cdf8f80 commit 737a721

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

tests/test_threed_view.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from itertools import product
22

33
import pytest
4-
from slicer import vtkMRMLAbstractViewNode
4+
from slicer import vtkMRMLAbstractViewNode, vtkMRMLModelDisplayableManager
55

66

77
def test_threed_view_can_render_mrml_models(a_threed_view, render_interactive):
@@ -122,3 +122,9 @@ def test_threed_view_can_set_layout_color(a_threed_view):
122122
a_threed_view.set_layout_color([60, 60, 60])
123123
a_threed_view.set_layout_color_from_string("red")
124124
assert a_threed_view._view_node.GetLayoutColor() == (1.0, 0.0, 0.0)
125+
126+
127+
@pytest.mark.parametrize("dm_class", ["vtkMRMLModelDisplayableManager", vtkMRMLModelDisplayableManager])
128+
def test_view_provide_access_to_their_displayable_manager(a_threed_view, dm_class):
129+
displayable_manager = a_threed_view.get_displayable_manager_by_class(dm_class)
130+
assert isinstance(displayable_manager, vtkMRMLModelDisplayableManager)

trame_slicer/views/abstract_view.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,3 +365,10 @@ def _on_object_event(self, _obj: vtkObject, _event_id: int, _call_data: Any | No
365365

366366
def get_view_node(self) -> vtkMRMLViewNode | None:
367367
return self._view_node
368+
369+
def get_displayable_manager_by_class(
370+
self, dm_class: str | type[vtkMRMLAbstractDisplayableManager]
371+
) -> vtkMRMLAbstractDisplayableManager | None:
372+
if isinstance(dm_class, type):
373+
dm_class = dm_class.__name__
374+
return self._displayable_manager_group.GetDisplayableManagerByClassName(dm_class)

0 commit comments

Comments
 (0)