Skip to content

Commit d687036

Browse files
Merge pull request #27 from Jo-Byr/add-existence-check-to-display-nodes-in-segmentation
enh: add validity checks to display node getters in segmentation
2 parents d15e1f0 + d286ed5 commit d687036

2 files changed

Lines changed: 19 additions & 7 deletions

File tree

tests/test_slice_view.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ def test_slice_views_can_activate_slab(
168168
if render_interactive:
169169
a_slice_view.start_interactor()
170170

171+
171172
def test_slice_views_can_set_foregrond_opacity(
172173
a_slice_view,
173174
a_background_volume_node,

trame_slicer/segmentation/segmentation.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -490,14 +490,17 @@ def set_segment_visibility(self, segment_id, visibility: bool) -> None:
490490
return
491491

492492
display_node = self._segmentation_node.GetDisplayNode()
493-
display_node.SetSegmentVisibility(segment_id, visibility)
493+
if display_node:
494+
display_node.SetSegmentVisibility(segment_id, visibility)
494495

495496
def get_segment_visibility(self, segment_id) -> bool | None:
496497
if segment_id not in self.get_segment_ids():
497498
return None
498499

499500
display_node = self._segmentation_node.GetDisplayNode()
500-
return display_node.GetSegmentVisibility(segment_id)
501+
if display_node:
502+
return display_node.GetSegmentVisibility(segment_id)
503+
return None
501504

502505
def set_opacity_mode(self, opacity_mode: SegmentationOpacityEnum) -> None:
503506
if not self._segmentation_node:
@@ -510,6 +513,8 @@ def get_opacity_mode(self) -> SegmentationOpacityEnum | None:
510513
if not self._segmentation_node:
511514
return None
512515
display_node = self._segmentation_node.GetDisplayNode()
516+
if display_node is None:
517+
return None
513518
fill_visibility = display_node.GetVisibility2DFill()
514519
outline_visibility = display_node.GetVisibility2DOutline()
515520
if outline_visibility and not fill_visibility:
@@ -522,23 +527,29 @@ def get_2d_opacity(self) -> float | None:
522527
if not self._segmentation_node:
523528
return None
524529
display_node = self._segmentation_node.GetDisplayNode()
525-
return display_node.GetOpacity2DFill()
530+
if display_node:
531+
return display_node.GetOpacity2DFill()
532+
return None
526533

527534
def set_2d_opacity(self, opacity: float) -> None:
528535
if not self._segmentation_node:
529536
return
530537
display_node = self._segmentation_node.GetDisplayNode()
531-
display_node.SetOpacity2DFill(opacity)
532-
display_node.SetOpacity2DOutline(opacity)
538+
if display_node:
539+
display_node.SetOpacity2DFill(opacity)
540+
display_node.SetOpacity2DOutline(opacity)
533541

534542
def get_3d_opacity(self) -> float | None:
535543
if not self._segmentation_node:
536544
return None
537545
display_node = self._segmentation_node.GetDisplayNode()
538-
return display_node.GetOpacity3D()
546+
if display_node:
547+
return display_node.GetOpacity3D()
548+
return None
539549

540550
def set_3d_opacity(self, opacity: float) -> None:
541551
if not self._segmentation_node:
542552
return
543553
display_node = self._segmentation_node.GetDisplayNode()
544-
display_node.SetOpacity3D(opacity)
554+
if display_node:
555+
display_node.SetOpacity3D(opacity)

0 commit comments

Comments
 (0)