diff --git a/invesalius/data/viewer_slice.py b/invesalius/data/viewer_slice.py index fb26593..754a42a 100755 --- a/invesalius/data/viewer_slice.py +++ b/invesalius/data/viewer_slice.py @@ -71,6 +71,8 @@ class Viewer(wx.Panel): self._brush_cursor_type = const.DEFAULT_BRUSH_OP self.cursor = None self.wl_text = None + self.on_wl = False + self.on_text = False # VTK pipeline and actors #self.__config_interactor() self.pick = vtk.vtkPropPicker() @@ -118,24 +120,30 @@ class Viewer(wx.Panel): def SetLayout(self, layout): self.layout = layout - if layout == (1,1): + if (layout == (1,1)) and self.on_text: self.ShowTextActors() else: - self.HideTextActors() + self.HideTextActors(change_status=False) slice_ = sl.Slice() self.LoadRenderers(slice_.GetOutput()) self.__configure_renderers() self.__configure_scroll() - def HideTextActors(self): + def HideTextActors(self, change_status=True): self.wl_text.Hide() [t.Hide() for t in self.orientation_texts] + self.interactor.Render() + if change_status: + self.on_text = False def ShowTextActors(self): - self.wl_text.Show() + if self.on_wl: + self.wl_text.Show() [t.Show() for t in self.orientation_texts] - + self.Update() + self.interactor.Render() + self.on_text = True def __set_layout(self, pubsub_evt): @@ -204,6 +212,13 @@ class Viewer(wx.Panel): else: self.__set_cross_visibility(0) + if state == const.STATE_WL: + self.on_wl = True + self.wl_text.Show() + else: + self.on_wl = False + self.wl_text.Hide() + self.__set_editor_cursor_visibility(0) @@ -807,6 +822,21 @@ class Viewer(wx.Panel): 'Set slice interaction style') ps.Publisher().subscribe(self.OnCloseProject, 'Close project data') + ##### + ps.Publisher().subscribe(self.OnShowText, + 'Show text actors on viewers') + ps.Publisher().subscribe(self.OnHideText, + 'Hide text actors on viewers') + + def OnShowText(self, pubsub_evt): + print "OnShowText" + self.ShowTextActors() + + def OnHideText(self, pubsub_evt): + print "OnHideText" + self.HideTextActors() + + def OnCloseProject(self, pubsub_evt): self.CloseProject() diff --git a/invesalius/data/viewer_volume.py b/invesalius/data/viewer_volume.py index e91acb8..da05d63 100755 --- a/invesalius/data/viewer_volume.py +++ b/invesalius/data/viewer_volume.py @@ -69,6 +69,8 @@ class Viewer(wx.Panel): self.onclick = False self.text = vtku.Text() + self.text.SetValue("") + self.ren.AddActor(self.text.actor) self.view_angle = None @@ -76,6 +78,7 @@ class Viewer(wx.Panel): self.__bind_events_wx() self.mouse_pressed = 0 + self.on_wl = False def __bind_events(self): ps.Publisher().subscribe(self.LoadActor, @@ -153,6 +156,15 @@ class Viewer(wx.Panel): } } + if state == const.STATE_WL: + self.on_wl = True + self.text.Show() + self.interactor.Render() + else: + self.on_wl = False + self.text.Hide() + self.interactor.Render() + if (state == const.STATE_ZOOM_SL): style = vtk.vtkInteractorStyleRubberBandZoom() self.interactor.SetInteractorStyle(style) @@ -322,7 +334,8 @@ class Viewer(wx.Panel): def OnShowRaycasting(self, pubsub_evt): self.raycasting_volume = True - self.text.Show() + if self.on_wl: + self.text.Show() def OnHideRaycasting(self, pubsub_evt): self.raycasting_volume = False @@ -370,7 +383,7 @@ class Viewer(wx.Panel): self.ren.AddVolume(volume) self.text.SetValue("WL: %d WW: %d"%(wl, ww)) - self.ren.AddActor(self.text.actor) + self.ren.SetBackground(colour) if not (self.view_angle): diff --git a/invesalius/gui/frame.py b/invesalius/gui/frame.py index 31db5fa..e9e89b8 100755 --- a/invesalius/gui/frame.py +++ b/invesalius/gui/frame.py @@ -825,9 +825,9 @@ class LayoutToolBar(wx.ToolBar): def OnText(self, event): if event.IsChecked(): - print "TODO: Send message so all textactors are shown" + ps.Publisher().sendMessage('Show text actors on viewers') else: - print "TODO: Send message so all textactors are hiden" + ps.Publisher().sendMessage('Hide text actors on viewers') def SetLayoutButtonOnlyData(self, pubsub_evt): self.SetToolNormalBitmap(ID_LAYOUT,self.BMP_WITH_MENU) -- libgit2 0.21.2