diff --git a/invesalius/data/viewer_volume.py b/invesalius/data/viewer_volume.py index d6d6330..7a6f4a9 100755 --- a/invesalius/data/viewer_volume.py +++ b/invesalius/data/viewer_volume.py @@ -60,15 +60,20 @@ class Viewer(wx.Panel): self.interactor = interactor self.ren = ren + self.raycasting_volume = False + self.onclick = False + self.text = vtku.Text() + + self.view_angle = None + self.__bind_events() self.__bind_events_wx() - self.view_angle = None - + def OnMove(self, obj, evt): - if self.onclick: + if self.onclick and self.raycasting_volume: mouse_x, mouse_y = self.interactor.GetEventPosition() diff_x = mouse_x - self.last_x diff_y = mouse_y - self.last_y @@ -92,15 +97,22 @@ class Viewer(wx.Panel): 'Render volume viewer') ps.Publisher().subscribe(self.ChangeBackgroundColour, 'Change volume viewer background colour') + # Raycating - related ps.Publisher().subscribe(self.LoadVolume, 'Load volume into viewer') + ps.Publisher().subscribe(self.OnSetWindowLevelText, + 'Set volume window and level text') + ps.Publisher().subscribe(self.OnHideRaycasting, + 'Hide raycasting volume') + ps.Publisher().subscribe(self.OnShowRaycasting, + 'Update raycasting preset') + ### ps.Publisher().subscribe(self.AppendActor,'AppendActor') ps.Publisher().subscribe(self.SetWidgetInteractor, 'Set Widget Interactor') ps.Publisher().subscribe(self.OnSetViewAngle, 'Set volume view angle') - ps.Publisher().subscribe(self.OnSetWindowLevelText, - 'Set volume window and level text') + ps.Publisher().subscribe(self.OnEnableBrightContrast, ('Set interaction mode', const.MODE_WW_WL)) ps.Publisher().subscribe(self.OnDisableBrightContrast, @@ -133,19 +145,33 @@ class Viewer(wx.Panel): evt.Skip() def OnSetWindowLevelText(self, pubsub_evt): - ww, wl = pubsub_evt.data - self.text.SetValue("WL: %d WW: %d"%(wl, ww)) + if self.raycasting_volume: + ww, wl = pubsub_evt.data + self.text.SetValue("WL: %d WW: %d"%(wl, ww)) + + def OnShowRaycasting(self, pubsub_evt): + self.raycasting_volume = True + self.text.Show() + + def OnHideRaycasting(self, pubsub_evt): + self.raycasting_volume = False + self.text.Hide() def LoadVolume(self, pubsub_evt): + self.raycasting_volume = True + volume = pubsub_evt.data[0] + colour = pubsub_evt.data[1] + ww, wl = pubsub_evt.data[2] + self.light = self.ren.GetLights().GetNextItem() - text = vtku.Text() - self.text = text - self.ren.AddVolume(volume) - self.ren.AddActor(text.actor) - + self.text.SetValue("WL: %d WW: %d"%(wl, ww)) + self.ren.AddActor(self.text.actor) + self.ren.SetBackground(colour) + + if not (self.view_angle): self.SetViewAngle(const.VOL_FRONT) else: diff --git a/invesalius/data/volume.py b/invesalius/data/volume.py index c87d453..8c25001 100755 --- a/invesalius/data/volume.py +++ b/invesalius/data/volume.py @@ -100,10 +100,8 @@ class Volume(): self.LoadVolume() def OnHideVolume(self, pubsub_evt): - print "Hide", self.plane, self.plane_on self.volume.SetVisibility(0) if (self.plane and self.plane_on): - print "--- Hide Plane" self.plane.Disable() ps.Publisher().sendMessage('Render volume viewer') @@ -111,7 +109,6 @@ class Volume(): if self.exist: self.volume.SetVisibility(1) if (self.plane and self.plane_on): - print "----- Show Plane" self.plane.Enable() ps.Publisher().sendMessage('Render volume viewer') else: @@ -162,7 +159,6 @@ class Volume(): def OnSetRelativeWindowLevel(self, pubsub_evt): diff_ww, diff_wl = pubsub_evt.data - print diff_ww ww = self.ww + diff_ww wl = self.wl + diff_wl ps.Publisher().sendMessage('Set volume window and level text', @@ -365,7 +361,6 @@ class Volume(): def ApplyConvolution(self, imagedata): number_filters = len(self.config['convolutionFilters']) for filter in self.config['convolutionFilters']: - print "convolving", filter convolve = vtk.vtkImageConvolve() convolve.SetInput(imagedata) convolve.SetKernel5x5([i/60.0 for i in Kernels[filter]]) @@ -471,7 +466,9 @@ class Volume(): self.volume = volume colour = self.GetBackgroundColour() - ps.Publisher().sendMessage('Load volume into viewer', (volume, colour)) + + ps.Publisher().sendMessage('Load volume into viewer', + (volume, colour, (self.ww, self.wl))) def OnEnableTool(self, pubsub_evt): tool_name, enable = pubsub_evt.data diff --git a/invesalius/data/vtk_utils.py b/invesalius/data/vtk_utils.py index 43ce97a..cd66a24 100644 --- a/invesalius/data/vtk_utils.py +++ b/invesalius/data/vtk_utils.py @@ -88,3 +88,6 @@ class Text(object): self.actor.VisibilityOn() else: self.actor.VisibilityOff() + + def Hide(self): + self.actor.VisibilityOff() -- libgit2 0.21.2