From 6b5eb748d9d12f61ffe3f7007b3bac3d6675333a Mon Sep 17 00:00:00 2001 From: Thiago Franco de Moraes Date: Fri, 19 Mar 2021 15:45:27 -0300 Subject: [PATCH] Changing mask being previewd on volume when changing mask --- invesalius/control.py | 4 +++- invesalius/data/mask.py | 3 +++ invesalius/data/slice_.py | 6 ++++++ invesalius/session.py | 3 ++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/invesalius/control.py b/invesalius/control.py index 93a97eb..666f3f7 100644 --- a/invesalius/control.py +++ b/invesalius/control.py @@ -1115,7 +1115,7 @@ class Controller(): pass if err_msg: - dialog.MessageBox(None, "It was not possible to launch new instance of InVesalius3 dsfa dfdsfa sdfas fdsaf asdfasf dsaa", err_msg) + dialog.MessageBox(None, "It was not possible to launch new instance of InVesalius3", err_msg) def show_mask_preview(self, index, flag=True): proj = prj.Project() @@ -1126,6 +1126,7 @@ class Controller(): Publisher.sendMessage("Reload actual slice") def enable_mask_preview(self): + ses.Session().mask_3d_preview = True mask = self.Slice.current_mask if mask is not None: self.Slice.do_threshold_to_all_slices(mask) @@ -1134,6 +1135,7 @@ class Controller(): Publisher.sendMessage("Render volume viewer") def disable_mask_preview(self): + ses.Session().mask_3d_preview = False mask = self.Slice.current_mask if mask is not None: Publisher.sendMessage("Remove mask preview", mask_3d_actor=mask.volume._actor) diff --git a/invesalius/data/mask.py b/invesalius/data/mask.py index b98c850..78ab657 100644 --- a/invesalius/data/mask.py +++ b/invesalius/data/mask.py @@ -248,6 +248,9 @@ class Mask(): def on_show(self): self.history._config_undo_redo(self.is_shown) + if ses.Session().mask_3d_preview: + Publisher.sendMessage('Show mask preview', index=self.index, flag=bool(self.is_shown)) + Publisher.sendMessage("Render volume viewer") def create_3d_preview(self): if self.volume is None: diff --git a/invesalius/data/slice_.py b/invesalius/data/slice_.py index 3461d32..c9b2988 100644 --- a/invesalius/data/slice_.py +++ b/invesalius/data/slice_.py @@ -1178,6 +1178,10 @@ class Slice(metaclass=utils.Singleton): def SelectCurrentMask(self, index): "Insert mask data, based on given index, into pipeline." + if self.current_mask: + self.current_mask.is_shown = False + self.current_mask.on_show() + proj = Project() future_mask = proj.GetMask(index) future_mask.is_shown = True @@ -1394,6 +1398,8 @@ class Slice(metaclass=utils.Singleton): Publisher.sendMessage("Add mask", mask=mask) if show: + if self.current_mask: + self.current_mask.is_shown = False self.current_mask = mask Publisher.sendMessage("Show mask", index=mask.index, value=True) Publisher.sendMessage("Change mask selected", index=mask.index) diff --git a/invesalius/session.py b/invesalius/session.py index e78b37e..713334d 100644 --- a/invesalius/session.py +++ b/invesalius/session.py @@ -54,6 +54,7 @@ class Session(metaclass=Singleton): def __init__(self): self.project_path = () self.temp_item = False + self.mask_3d_preview = False self._values = collections.defaultdict(dict, { 'session': { @@ -128,7 +129,7 @@ class Session(metaclass=Singleton): return object.__getattribute__(self, '_values')[session][key] def __setattr__(self, name, value): - if name in ("temp_item", "_map_attrs", "_values", "project_path"): + if name in ("temp_item", "_map_attrs", "_values", "project_path", "mask_3d_preview"): return object.__setattr__(self, name, value) else: session, key = self._map_attrs[name] -- libgit2 0.21.2