Source code for dipy.viz.horizon.tab.surface
from pathlib import Path
from dipy.viz.horizon.tab import HorizonTab, build_checkbox, build_label, build_slider
[docs]
class SurfaceTab(HorizonTab):
def __init__(self, visualizer, tab_name, file_name):
"""Surface Tab.
Parameters
----------
visualizer : SurfaceVisualizer
id : int
"""
super().__init__()
self._visualizer = visualizer
self._tab_id = 0
self._name = tab_name
self._file_name = Path(file_name or tab_name).name
self._actor_toggle = build_checkbox(
labels=[""], checked_labels=[""], on_change=self._toggle_actors
)
self._surface_opacity_label, self._surface_opacity = build_slider(
initial_value=1.0,
max_value=1.0,
text_template="{ratio:.0%}",
on_change=self._change_opacity,
label="Opacity",
)
self._file_label = build_label(
text="Filename",
)
self._file_name_label = build_label(text=self._file_name)
self._register_elements(
self._actor_toggle,
self._surface_opacity_label,
self._surface_opacity,
self._file_label,
self._file_name_label,
)
def _change_opacity(self, slider):
"""Change opacity value according to slider changed.
Parameters
----------
slider : LineSlider2D
"""
self._surface_opacity.selected_value = slider.value
self._update_opacities()
def _update_opacities(self):
"""Update opacities of visible actors based on selected values."""
for actor in self.actors:
actor.GetProperty().SetOpacity(self._surface_opacity.selected_value)
[docs]
def build(self, tab_id):
"""Build all the elements under the tab.
Parameters
----------
tab_id : int
Id of the tab.
"""
self._tab_id = tab_id
y_pos = 0.85
self._actor_toggle.position = (0.02, y_pos)
self._surface_opacity_label.position = (0.05, y_pos)
self._surface_opacity.position = (0.10, y_pos)
y_pos = 0.65
self._file_label.position = (0.05, y_pos)
self._file_name_label.position = (0.13, y_pos)
@property
def name(self):
"""Name of the tab.
Returns
-------
str
"""
return self._name
@property
def actors(self):
"""Actors controlled by this tab."""
return self._visualizer.actors