Commit 298863b6991b0e66e68f6a466010eefd60d6b8d1
1 parent
334100b0
Exists in
master
and in
68 other branches
ENH: Showing the slice number in each slice_data
Showing
2 changed files
with
34 additions
and
5 deletions
Show diff stats
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}, |