views

class trame_slicer.views.AbstractView(scheduled_render_strategy: ScheduledRenderStrategy | None = None, *args, **kwargs)

Bases: object

Simple container class for a VTK Render Window, Renderers and VTK MRML Displayable Manager Group

add_renderer(renderer: vtkRenderer) None
finalize()
first_renderer() vtkRenderer
fit_view_to_content()
get_displayable_manager_by_class(dm_class: str | type[vtkMRMLAbstractDisplayableManager]) vtkMRMLAbstractDisplayableManager | None
get_singleton_tag() str
get_view_group() int
get_view_node() vtkMRMLViewNode | None
get_view_node_id() str
interactor() vtkRenderWindowInteractor
interactor_style() vtkInteractorObserver | None
property is_render_blocked: bool
modified

Signal implementation. Can be connected to one or more callables. When called, will call associated callables with the provided args and kwargs.

Provides utility methods and contextmanager to control signal execution. Can be used both as class property and instance.

Parameters:

type_info – Types of arguments expected by the signal.

render() None
render_blocked() Generator[None, None, None]

Context manager API for blocked rendering in the scope of the call.

render_window() vtkRenderWindow
renderer() vtkRenderer
renderers() list[vtkRenderer]
reset_camera()
reset_view()
schedule_render(*_) None
set_background_color(rgb_int_color: list[int]) None
set_background_color_from_string(color: str | tuple[str, str])
set_background_gradient_color(color1_rgb_int: list[int], color2_rgb_int: list[int]) None
set_layout_color(color: list[int])
set_layout_color_from_string(color: str)
set_mapped_in_layout(is_mapped_in_layout: bool)
set_orientation_marker(orientation_marker: int | None = None, orientation_marker_size: int | None = None)

Sets the orientation marker and size. Orientation Enums are defined in the vtkMRMLAbstractViewNode class.

set_render_blocked(is_blocked: bool) bool

Enable / Disable blocking rendering of the view. This method doesn’t prevent direct calls to the render_window.Render API.

Parameters:

is_blocked – If True, will prevent all schedule_render calls to render strategy. If False, will schedule a new rendering.

Returns:

Previous blocked state

set_ruler(ruler_type: int | None = None, ruler_color: int | None = None)

Sets the ruler type and color. Ruler Enums are defined in the vtkMRMLAbstractViewNode class.

set_scene(scene: vtkMRMLScene) None
set_scheduled_render(scheduled_render_strategy: ScheduledRenderStrategy) None
set_view_node(node: vtkMRMLViewNode) None
set_view_properties(view_properties: ViewProps)
start_interactor() None
trigger_modified_once()
update_size(width, height)
class trame_slicer.views.AsyncIORendering(schedule_render_fps: float = 30.0)

Bases: ScheduledRenderStrategy

cleanup_render_task(*_)
did_render()
schedule_render()
class trame_slicer.views.CursorId(*values)

Bases: Enum

Helper ENUM to map between trame and VTK cursor Ids

classmethod from_vtk_cursor_id(vtk_cursor: int) CursorId

VTK cursor int to cursor enum.

AUTO = 'auto'
DEFAULT = 'default'
NONE = 'none'
CONTEXT_MENU = 'context-menu'
HELP = 'help'
POINTER = 'pointer'
PROGRESS = 'progress'
WAIT = 'wait'
CELL = 'cell'
CROSSHAIR = 'crosshair'
TEXT = 'text'
VERTICAL_TEXT = 'vertical-text'
ALIAS = 'alias'
COPY = 'copy'
MOVE = 'move'
NO_DROP = 'no-drop'
NOT_ALLOWED = 'not-allowed'
GRAB = 'grab'
GRABBING = 'grabbing'
E_RESIZE = 'e-resize'
N_RESIZE = 'n-resize'
NE_RESIZE = 'ne-resize'
NW_RESIZE = 'nw-resize'
S_RESIZE = 's-resize'
SE_RESIZE = 'se-resize'
SW_RESIZE = 'sw-resize'
W_RESIZE = 'w-resize'
EW_RESIZE = 'ew-resize'
NS_RESIZE = 'ns-resize'
NESW_RESIZE = 'nesw-resize'
NWSE_RESIZE = 'nwse-resize'
COL_RESIZE = 'col-resize'
ROW_RESIZE = 'row-resize'
ALL_SCROLL = 'all-scroll'
ZOOM_IN = 'zoom-in'
ZOOM_OUT = 'zoom-out'
class trame_slicer.views.DirectRendering

Bases: ScheduledRenderStrategy

schedule_render()
class trame_slicer.views.DirectViewFactory(do_render_offscreen: bool = False)

Bases: IViewFactory

Creates views in serverless mode with a DirectRendering render scheduler.

can_create_view(view: ViewLayoutDefinition) bool
class trame_slicer.views.IViewFactory

Bases: ABC

Interface for view factories.

abstractmethod can_create_view(view: ViewLayoutDefinition) bool
create_view(view: ViewLayoutDefinition, scene: vtkMRMLScene, app_logic: vtkMRMLApplicationLogic) AbstractView
get_factory_view(view_id) V | None
get_view(view_id: str) AbstractViewChild | None
get_views() list[AbstractViewChild]
Returns:

all slicer AbstractView created by the view factory.

has_view(view_id: str) bool
remove_view(view_id: str) bool
class trame_slicer.views.Layout(direction: 'LayoutDirection', items: 'list[Layout | View]', flex_sizes: 'list[str] | None' = None)

Bases: object

classmethod empty_layout()
flex_sizes: list[str] | None = None
get_views(is_recursive: bool) list[View]

Returns every views contained in Layout as a flat list. :param is_recursive: If true, returns sub layout views as well. Otherwise, returns only direct views.

direction: LayoutDirection
items: list[Layout | View]
class trame_slicer.views.LayoutDirection(*values)

Bases: Enum

Vertical = 1
Horizontal = 2
class trame_slicer.views.LayoutGrid(layout_items: list[Layout | View], layout_direction: LayoutDirection, layout_flex_sizes: list[str] | None = None)

Bases: Div

Component responsible for displaying view grids.

classmethod create_root_grid_ui(layout: Layout)
class trame_slicer.views.NoScheduleRendering

Bases: ScheduledRenderStrategy

class trame_slicer.views.ScheduledRenderStrategy

Bases: object

Abstract class for handling scheduled rendering. Rendering update is triggered by Slicer’s display managers. In asyncio context, the update can be managed using asyncio Tasks. In specific event loops, such as Qt, the rendering can be done using QTimer.

did_render()
schedule_render()
set_abstract_view(abstract_view: AbstractView)
class trame_slicer.views.SliceLayer(*values)

Bases: IntEnum

Int enum to manage Slice Layers.

classmethod as_int(layer: int | SliceLayer) int
Background = 1
Foreground = 2
class trame_slicer.views.SliceView(scene: vtkMRMLScene, app_logic: vtkMRMLApplicationLogic, name: str, *args, **kwargs)

Bases: AbstractView

fit_view_to_content() None
get_background_volume_id() str | None
get_foreground_opacity() float
get_foreground_volume_id() str | None
get_layer_volume_id(layer: int | SliceLayer) str | None
get_orientation() str
get_slab_thickness() float
get_slab_type() Literal[3, 1, 0, 2]
get_slice_range() tuple[float, float]
get_slice_step() float
get_slice_value() float
get_volume_layer_logic(volume_node: vtkMRMLVolumeNode | None = None) vtkMRMLSliceLayerLogic
is_slab_enabled() bool
is_visible_in_3d() bool
set_background_volume_id(volume_id: str | None) None
set_foreground_opacity(opacity: float)
set_foreground_volume_id(volume_id: str | None) None
set_layer_volume_id(layer: int | SliceLayer, volume_id: str | None) None
set_orientation(orientation: Literal['Coronal', 'Sagittal', 'Axial']) None
set_scene(scene: vtkMRMLScene) None
set_slab_enabled(is_enabled: bool)
set_slab_thickness(thickness: float)
set_slab_type(slab_type: Literal[3, 1, 0, 2])
set_slice_value(value: float) None
set_visible_in_3d(is_visible: bool)
toggle_visible_in_3d()
zoom(factor: float)

Changes the current view field of view by multiplying by input factor. :param factor: Values between -inf and 1. Values greater than 0 will zoom in, below 0 will zoom out

zoom_in()
zoom_out()
class trame_slicer.views.ThreeDView(scene: vtkMRMLScene, app_logic: vtkMRMLApplicationLogic, name: str, *args, **kwargs)

Bases: RenderView

Copied and adapted from qMRMLThreeDView

fit_view_to_content()
get_camera_node() vtkMRMLCameraNode | None
is_render_mode_perspective() bool
reset_focal_point()
rotate_to_view_direction(view_direction: ViewDirection) None
set_background_gradient_color(color1_rgb_int, color2_rgb_int)
set_box_visible(is_visible)
set_render_mode_to_orthographic()
set_render_mode_to_perspective()
set_ruler(ruler_type: int | None = None, ruler_color: int | None = None)

Sets the ruler type and color. Ruler Enums are defined in the vtkMRMLAbstractViewNode class.

set_scene(scene: vtkMRMLScene) None
zoom(factor)

Move the camera node closer / further from the focal point by a given factor.

Parameters:

factor – Values between -inf and 1. Values greater than 0 will zoom in, below 0 will zoom out

zoom_in()
zoom_out()
class trame_slicer.views.ViewDirection(*values)

Bases: Enum

LEFT = 1
RIGHT = 0
POSTERIOR = 3
ANTERIOR = 2
INFERIOR = 5
SUPERIOR = 4
class trame_slicer.views.ViewLayout(server: Server, template_name: str)

Bases: AbstractLayout

class trame_slicer.views.ViewLayoutDefinition(singleton_tag: 'str', view_type: 'Enum', properties: 'ViewProps')

Bases: object

classmethod axial_view(label: str | None = None) ViewLayoutDefinition
classmethod coronal_view(label: str | None = None) ViewLayoutDefinition
classmethod from_xml(xml_str: str, view_type_cls: type[Enum] | None = None) ViewLayoutDefinition
classmethod sagittal_view(label: str | None = None) ViewLayoutDefinition
classmethod slice_view(orientation: Literal['Axial', 'Coronal', 'Sagittal'], *, label: str | None = None, color: str | None = None) ViewLayoutDefinition
classmethod threed_view(*, name: str = 'ThreeD', label: str = '1', background_color: str | tuple[str, str] = ('#1f2020', '#3c3c3c'), box_visible: bool = False)
to_xml()
singleton_tag: str
view_type: Enum
properties: ViewProps
class trame_slicer.views.ViewProps(label: 'str | None' = None, orientation: 'ViewOrientation | None' = None, color: 'str | None' = None, group: 'int | None' = None, background_color: 'str | tuple[str, str] | None' = None, box_visible: 'bool | None' = None)

Bases: object

background_color: str | tuple[str, str] | None = None
box_visible: bool | None = None
color: str | None = None
classmethod from_xml_dict(xml_prop_dict: dict)
group: int | None = None
label: str | None = None
orientation: Literal['Axial', 'Coronal', 'Sagittal'] | None = None
to_xml() str
classmethod xml_name_map()
class trame_slicer.views.ViewType(*values)

Bases: Enum

SLICE_VIEW = 'vtkMRMLSliceNode'
THREE_D_VIEW = 'vtkMRMLViewNode'
trame_slicer.views.pretty_xml(xml_str: str) str
trame_slicer.views.slicer_layout_to_vue(xml_str: str) Layout
trame_slicer.views.vue_layout_to_slicer(layout: Layout)

trame_slicer.views.abstract_view module

class trame_slicer.views.abstract_view.ViewProps(label: 'str | None' = None, orientation: 'ViewOrientation | None' = None, color: 'str | None' = None, group: 'int | None' = None, background_color: 'str | tuple[str, str] | None' = None, box_visible: 'bool | None' = None)

Bases: object

label: str | None = None
orientation: Literal['Axial', 'Coronal', 'Sagittal'] | None = None
color: str | None = None
group: int | None = None
background_color: str | tuple[str, str] | None = None
box_visible: bool | None = None
to_xml() str
classmethod xml_name_map()
classmethod from_xml_dict(xml_prop_dict: dict)
class trame_slicer.views.abstract_view.AbstractView(scheduled_render_strategy: ScheduledRenderStrategy | None = None, *args, **kwargs)

Bases: object

Simple container class for a VTK Render Window, Renderers and VTK MRML Displayable Manager Group

modified

Signal implementation. Can be connected to one or more callables. When called, will call associated callables with the provided args and kwargs.

Provides utility methods and contextmanager to control signal execution. Can be used both as class property and instance.

Parameters:

type_info – Types of arguments expected by the signal.

set_scheduled_render(scheduled_render_strategy: ScheduledRenderStrategy) None
finalize()
add_renderer(renderer: vtkRenderer) None
renderers() list[vtkRenderer]
first_renderer() vtkRenderer
renderer() vtkRenderer
schedule_render(*_) None
render() None
render_window() vtkRenderWindow
interactor() vtkRenderWindowInteractor
interactor_style() vtkInteractorObserver | None
set_view_node(node: vtkMRMLViewNode) None
set_view_properties(view_properties: ViewProps)
get_view_group() int
get_singleton_tag() str
set_scene(scene: vtkMRMLScene) None
reset_camera()
get_view_node_id() str
fit_view_to_content()
reset_view()
set_background_color(rgb_int_color: list[int]) None
set_background_gradient_color(color1_rgb_int: list[int], color2_rgb_int: list[int]) None
set_background_color_from_string(color: str | tuple[str, str])
trigger_modified_once()
set_orientation_marker(orientation_marker: int | None = None, orientation_marker_size: int | None = None)

Sets the orientation marker and size. Orientation Enums are defined in the vtkMRMLAbstractViewNode class.

set_ruler(ruler_type: int | None = None, ruler_color: int | None = None)

Sets the ruler type and color. Ruler Enums are defined in the vtkMRMLAbstractViewNode class.

start_interactor() None
property is_render_blocked: bool
set_render_blocked(is_blocked: bool) bool

Enable / Disable blocking rendering of the view. This method doesn’t prevent direct calls to the render_window.Render API.

Parameters:

is_blocked – If True, will prevent all schedule_render calls to render strategy. If False, will schedule a new rendering.

Returns:

Previous blocked state

render_blocked() Generator[None, None, None]

Context manager API for blocked rendering in the scope of the call.

set_layout_color_from_string(color: str)
set_layout_color(color: list[int])
set_mapped_in_layout(is_mapped_in_layout: bool)
get_view_node() vtkMRMLViewNode | None
get_displayable_manager_by_class(dm_class: str | type[vtkMRMLAbstractDisplayableManager]) vtkMRMLAbstractDisplayableManager | None
update_size(width, height)

trame_slicer.views.cursor_id module

class trame_slicer.views.cursor_id.CursorId(*values)

Bases: Enum

Helper ENUM to map between trame and VTK cursor Ids

AUTO = 'auto'
DEFAULT = 'default'
NONE = 'none'
CONTEXT_MENU = 'context-menu'
HELP = 'help'
POINTER = 'pointer'
PROGRESS = 'progress'
WAIT = 'wait'
CELL = 'cell'
CROSSHAIR = 'crosshair'
TEXT = 'text'
VERTICAL_TEXT = 'vertical-text'
ALIAS = 'alias'
COPY = 'copy'
MOVE = 'move'
NO_DROP = 'no-drop'
NOT_ALLOWED = 'not-allowed'
GRAB = 'grab'
GRABBING = 'grabbing'
E_RESIZE = 'e-resize'
N_RESIZE = 'n-resize'
NE_RESIZE = 'ne-resize'
NW_RESIZE = 'nw-resize'
S_RESIZE = 's-resize'
SE_RESIZE = 'se-resize'
SW_RESIZE = 'sw-resize'
W_RESIZE = 'w-resize'
EW_RESIZE = 'ew-resize'
NS_RESIZE = 'ns-resize'
NESW_RESIZE = 'nesw-resize'
NWSE_RESIZE = 'nwse-resize'
COL_RESIZE = 'col-resize'
ROW_RESIZE = 'row-resize'
ALL_SCROLL = 'all-scroll'
ZOOM_IN = 'zoom-in'
ZOOM_OUT = 'zoom-out'
classmethod from_vtk_cursor_id(vtk_cursor: int) CursorId

VTK cursor int to cursor enum.

trame_slicer.views.direct_view_factory module

class trame_slicer.views.direct_view_factory.DirectViewFactory(do_render_offscreen: bool = False)

Bases: IViewFactory

Creates views in serverless mode with a DirectRendering render scheduler.

can_create_view(view: ViewLayoutDefinition) bool

trame_slicer.views.layout_grid module

class trame_slicer.views.layout_grid.LayoutDirection(*values)

Bases: Enum

Vertical = 1
Horizontal = 2
class trame_slicer.views.layout_grid.View(*args, **kwargs)

Bases: Protocol

singleton_tag: str
class trame_slicer.views.layout_grid.Layout(direction: 'LayoutDirection', items: 'list[Layout | View]', flex_sizes: 'list[str] | None' = None)

Bases: object

direction: LayoutDirection
items: list[Layout | View]
flex_sizes: list[str] | None = None
get_views(is_recursive: bool) list[View]

Returns every views contained in Layout as a flat list. :param is_recursive: If true, returns sub layout views as well. Otherwise, returns only direct views.

classmethod empty_layout()
class trame_slicer.views.layout_grid.LayoutGrid(layout_items: list[Layout | View], layout_direction: LayoutDirection, layout_flex_sizes: list[str] | None = None)

Bases: Div

Component responsible for displaying view grids.

classmethod create_root_grid_ui(layout: Layout)
trame_slicer.views.layout_grid.pretty_xml(xml_str: str) str
trame_slicer.views.layout_grid.vue_layout_to_slicer(layout: Layout)
trame_slicer.views.layout_grid.slicer_layout_to_vue(xml_str: str) Layout

trame_slicer.views.render_scheduler module

class trame_slicer.views.render_scheduler.ScheduledRenderStrategy

Bases: object

Abstract class for handling scheduled rendering. Rendering update is triggered by Slicer’s display managers. In asyncio context, the update can be managed using asyncio Tasks. In specific event loops, such as Qt, the rendering can be done using QTimer.

schedule_render()
did_render()
set_abstract_view(abstract_view: AbstractView)
class trame_slicer.views.render_scheduler.NoScheduleRendering

Bases: ScheduledRenderStrategy

class trame_slicer.views.render_scheduler.DirectRendering

Bases: ScheduledRenderStrategy

schedule_render()
class trame_slicer.views.render_scheduler.AsyncIORendering(schedule_render_fps: float = 30.0)

Bases: ScheduledRenderStrategy

schedule_render()
did_render()
cleanup_render_task(*_)

trame_slicer.views.slice_view module

class trame_slicer.views.slice_view.SliceRendererManager(view: SliceView)

Bases: object

In 3D Slicer the image actor is handled by CTK vtkLightBoxRendererManager currently not wrapped in SlicerLib This render manager implements a one image actor / mapper for the rendering. vtkMRMLLightBoxRendererManagerProxy was removed from Slicer 5.10. This class implements only the vtkLightBoxRendererManager feature for displaying the Slice image actor on update.

See:

https://github.com/commontk/CTK/blob/master/Libs/Visualization/VTK/Core/vtkLightBoxRendererManager.cpp

See:

qMRMLSliceControllerWidget.cxx

SetImageDataConnection(imageDataConnection)
class trame_slicer.views.slice_view.SliceLayer(*values)

Bases: IntEnum

Int enum to manage Slice Layers.

Background = 1
Foreground = 2
classmethod as_int(layer: int | SliceLayer) int
class trame_slicer.views.slice_view.SliceView(scene: vtkMRMLScene, app_logic: vtkMRMLApplicationLogic, name: str, *args, **kwargs)

Bases: AbstractView

set_scene(scene: vtkMRMLScene) None
set_orientation(orientation: Literal['Coronal', 'Sagittal', 'Axial']) None
get_orientation() str
fit_view_to_content() None
set_background_volume_id(volume_id: str | None) None
get_background_volume_id() str | None
set_foreground_volume_id(volume_id: str | None) None
get_foreground_volume_id() str | None
get_slice_range() tuple[float, float]
get_slice_step() float
get_slice_value() float
set_slice_value(value: float) None
set_visible_in_3d(is_visible: bool)
is_visible_in_3d() bool
toggle_visible_in_3d()
zoom(factor: float)

Changes the current view field of view by multiplying by input factor. :param factor: Values between -inf and 1. Values greater than 0 will zoom in, below 0 will zoom out

zoom_in()
zoom_out()
set_slab_enabled(is_enabled: bool)
is_slab_enabled() bool
set_slab_thickness(thickness: float)
get_slab_thickness() float
set_slab_type(slab_type: Literal[3, 1, 0, 2])
get_slab_type() Literal[3, 1, 0, 2]
set_foreground_opacity(opacity: float)
get_foreground_opacity() float
set_layer_volume_id(layer: int | SliceLayer, volume_id: str | None) None
get_layer_volume_id(layer: int | SliceLayer) str | None
get_volume_layer_logic(volume_node: vtkMRMLVolumeNode | None = None) vtkMRMLSliceLayerLogic

trame_slicer.views.threed_view module

class trame_slicer.views.threed_view.RenderView(scheduled_render_strategy: ScheduledRenderStrategy | None = None, *args, **kwargs)

Bases: AbstractView

Copied and adapted from ctkVTKRenderView

reset_focal_point()
set_focal_point(x, y, z)
class trame_slicer.views.threed_view.ViewDirection(*values)

Bases: Enum

LEFT = 1
RIGHT = 0
POSTERIOR = 3
ANTERIOR = 2
INFERIOR = 5
SUPERIOR = 4
class trame_slicer.views.threed_view.ThreeDView(scene: vtkMRMLScene, app_logic: vtkMRMLApplicationLogic, name: str, *args, **kwargs)

Bases: RenderView

Copied and adapted from qMRMLThreeDView

set_scene(scene: vtkMRMLScene) None
reset_focal_point()
set_background_gradient_color(color1_rgb_int, color2_rgb_int)
set_box_visible(is_visible)
rotate_to_view_direction(view_direction: ViewDirection) None
get_camera_node() vtkMRMLCameraNode | None
fit_view_to_content()
set_ruler(ruler_type: int | None = None, ruler_color: int | None = None)

Sets the ruler type and color. Ruler Enums are defined in the vtkMRMLAbstractViewNode class.

set_render_mode_to_orthographic()
set_render_mode_to_perspective()
is_render_mode_perspective() bool
zoom(factor)

Move the camera node closer / further from the focal point by a given factor.

Parameters:

factor – Values between -inf and 1. Values greater than 0 will zoom in, below 0 will zoom out

zoom_in()
zoom_out()

trame_slicer.views.view_factory module

class trame_slicer.views.view_factory.IViewFactory

Bases: ABC

Interface for view factories.

abstractmethod can_create_view(view: ViewLayoutDefinition) bool
create_view(view: ViewLayoutDefinition, scene: vtkMRMLScene, app_logic: vtkMRMLApplicationLogic) AbstractView
remove_view(view_id: str) bool
get_view(view_id: str) AbstractViewChild | None
get_factory_view(view_id) V | None
get_views() list[AbstractViewChild]
Returns:

all slicer AbstractView created by the view factory.

has_view(view_id: str) bool

trame_slicer.views.view_layout module

class trame_slicer.views.view_layout.ViewLayout(server: Server, template_name: str)

Bases: AbstractLayout

trame_slicer.views.view_layout_definition module

class trame_slicer.views.view_layout_definition.ViewType(*values)

Bases: Enum

SLICE_VIEW = 'vtkMRMLSliceNode'
THREE_D_VIEW = 'vtkMRMLViewNode'
class trame_slicer.views.view_layout_definition.ViewLayoutDefinition(singleton_tag: 'str', view_type: 'Enum', properties: 'ViewProps')

Bases: object

singleton_tag: str
view_type: Enum
properties: ViewProps
to_xml()
classmethod from_xml(xml_str: str, view_type_cls: type[Enum] | None = None) ViewLayoutDefinition
classmethod slice_view(orientation: Literal['Axial', 'Coronal', 'Sagittal'], *, label: str | None = None, color: str | None = None) ViewLayoutDefinition
classmethod axial_view(label: str | None = None) ViewLayoutDefinition
classmethod coronal_view(label: str | None = None) ViewLayoutDefinition
classmethod sagittal_view(label: str | None = None) ViewLayoutDefinition
classmethod threed_view(*, name: str = 'ThreeD', label: str = '1', background_color: str | tuple[str, str] = ('#1f2020', '#3c3c3c'), box_visible: bool = False)