Commit 298863b6991b0e66e68f6a466010eefd60d6b8d1

Authored by tfmoraes
1 parent 334100b0

ENH: Showing the slice number in each slice_data

invesalius/data/slice_data.py
@@ -16,15 +16,43 @@ @@ -16,15 +16,43 @@
16 # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais 16 # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais
17 # detalhes. 17 # detalhes.
18 #-------------------------------------------------------------------------- 18 #--------------------------------------------------------------------------
  19 +import vtk
  20 +
19 class SliceData(object): 21 class SliceData(object):
20 def __init__(self): 22 def __init__(self):
21 self.renderer = None 23 self.renderer = None
22 self.actor = None 24 self.actor = None
23 self.number = 0 25 self.number = 0
24 self.cursor = None 26 self.cursor = None
  27 + self.__create_text()
  28 +
  29 + def __create_text(self):
  30 + text_property = vtk.vtkTextProperty()
  31 + text_property.SetFontSize(16)
  32 + text_property.SetFontFamilyToTimes()
  33 + text_property.BoldOn()
  34 + #text_property.SetColor(colour)
  35 +
  36 + text_actor = vtk.vtkTextActor()
  37 + text_actor.SetInput("%d" % self.number)
  38 + text_actor.GetTextProperty().ShallowCopy(text_property)
  39 + text_actor.SetPosition(1,1)
  40 + self.text_actor = text_actor
  41 +
  42 + def SetNumber(self, number):
  43 + self.number = number
  44 + self.text_actor.SetInput("%d" % self.number)
25 45
26 def SetCursor(self, cursor): 46 def SetCursor(self, cursor):
27 if self.cursor: 47 if self.cursor:
28 self.renderer.RemoveActor(self.cursor.actor) 48 self.renderer.RemoveActor(self.cursor.actor)
29 self.renderer.AddActor(cursor.actor) 49 self.renderer.AddActor(cursor.actor)
30 self.cursor = cursor 50 self.cursor = cursor
  51 +
  52 + def Hide(self):
  53 + self.renderer.RemoveActor(self.actor)
  54 + self.renderer.RemoveActor(self.text_actor)
  55 +
  56 + def Show(self):
  57 + self.renderer.AddActor(self.actor)
  58 + self.renderer.AddActor(self.text_actor)
invesalius/data/viewer_slice.py
@@ -209,7 +209,7 @@ class Viewer(wx.Panel): @@ -209,7 +209,7 @@ class Viewer(wx.Panel):
209 def __set_mode_editor(self, pubsub_evt): 209 def __set_mode_editor(self, pubsub_evt):
210 self.append_mode('EDITOR') 210 self.append_mode('EDITOR')
211 self.mouse_pressed = 0 211 self.mouse_pressed = 0
212 - #self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_BLANK)) 212 + self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_BLANK))
213 213
214 def __set_mode_spin(self, pubsub_evt): 214 def __set_mode_spin(self, pubsub_evt):
215 self.append_mode('SPIN') 215 self.append_mode('SPIN')
@@ -1020,10 +1020,11 @@ class Viewer(wx.Panel): @@ -1020,10 +1020,11 @@ class Viewer(wx.Panel):
1020 self.interactor.GetRenderWindow().AddRenderer(renderer) 1020 self.interactor.GetRenderWindow().AddRenderer(renderer)
1021 actor = vtk.vtkImageActor() 1021 actor = vtk.vtkImageActor()
1022 actor.SetInput(imagedata) 1022 actor.SetInput(imagedata)
1023 - renderer.AddActor(actor)  
1024 slice_data = SliceData() 1023 slice_data = SliceData()
1025 slice_data.renderer = renderer 1024 slice_data.renderer = renderer
1026 slice_data.actor = actor 1025 slice_data.actor = actor
  1026 + renderer.AddActor(actor)
  1027 + renderer.AddActor(slice_data.text_actor)
1027 return slice_data 1028 return slice_data
1028 1029
1029 def __update_camera(self, slice_data): 1030 def __update_camera(self, slice_data):
@@ -1141,11 +1142,11 @@ class Viewer(wx.Panel): @@ -1141,11 +1142,11 @@ class Viewer(wx.Panel):
1141 pos = self.layout[0] * self.layout[1] * index + n 1142 pos = self.layout[0] * self.layout[1] * index + n
1142 max = actor.GetSliceNumberMax() 1143 max = actor.GetSliceNumberMax()
1143 if pos < max: 1144 if pos < max:
1144 - slice_data.number = pos 1145 + slice_data.SetNumber(pos)
1145 self.__update_display_extent(slice_data) 1146 self.__update_display_extent(slice_data)
1146 - ren.AddActor(actor) 1147 + slice_data.Show()
1147 else: 1148 else:
1148 - ren.RemoveActor(actor) 1149 + slice_data.Hide()
1149 1150
1150 position = {"SAGITAL": {0: slice_data.number}, 1151 position = {"SAGITAL": {0: slice_data.number},
1151 "CORONAL": {1: slice_data.number}, 1152 "CORONAL": {1: slice_data.number},