Commit be816908c9bb2c9136e834c9307e37f5894cf264

Authored by Thiago Franco de Moraes
2 parents c010bda2 d43fdfb9

Merge pull request #26 from tfmoraes/clean

Clean - This pull request cleans some old and unused codes.
invesalius/control.py
@@ -373,8 +373,7 @@ class Controller(): @@ -373,8 +373,7 @@ class Controller():
373 self.Slice.spacing = proj.spacing 373 self.Slice.spacing = proj.spacing
374 374
375 Publisher.sendMessage('Load slice to viewer', 375 Publisher.sendMessage('Load slice to viewer',
376 - (proj.imagedata,  
377 - proj.mask_dict)) 376 + (proj.mask_dict))
378 377
379 378
380 Publisher.sendMessage('Load slice plane') 379 Publisher.sendMessage('Load slice plane')
invesalius/data/slice_.py
@@ -16,7 +16,6 @@ @@ -16,7 +16,6 @@
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 math  
20 import os 19 import os
21 import tempfile 20 import tempfile
22 21
@@ -79,7 +78,6 @@ class Slice(object): @@ -79,7 +78,6 @@ class Slice(object):
79 # Therefore, we use Singleton design pattern for implementing it. 78 # Therefore, we use Singleton design pattern for implementing it.
80 79
81 def __init__(self): 80 def __init__(self):
82 - self.imagedata = None  
83 self.current_mask = None 81 self.current_mask = None
84 self.blend_filter = None 82 self.blend_filter = None
85 self.histogram = None 83 self.histogram = None
@@ -159,9 +157,8 @@ class Slice(object): @@ -159,9 +157,8 @@ class Slice(object):
159 157
160 Publisher.subscribe(self.UpdateColourTableBackgroundWidget,\ 158 Publisher.subscribe(self.UpdateColourTableBackgroundWidget,\
161 'Change colour table from background image from widget') 159 'Change colour table from background image from widget')
162 - Publisher.subscribe(self._set_projection_type, 'Set projection type')  
163 160
164 - Publisher.subscribe(self.InputImageWidget, 'Input Image in the widget') 161 + Publisher.subscribe(self._set_projection_type, 'Set projection type')
165 162
166 Publisher.subscribe(self.OnExportMask,'Export mask to file') 163 Publisher.subscribe(self.OnExportMask,'Export mask to file')
167 164
@@ -249,7 +246,6 @@ class Slice(object): @@ -249,7 +246,6 @@ class Slice(object):
249 self.CloseProject() 246 self.CloseProject()
250 247
251 def CloseProject(self): 248 def CloseProject(self):
252 - self.imagedata = None  
253 f = self._matrix.filename 249 f = self._matrix.filename
254 self._matrix._mmap.close() 250 self._matrix._mmap.close()
255 self._matrix = None 251 self._matrix = None
@@ -276,10 +272,6 @@ class Slice(object): @@ -276,10 +272,6 @@ class Slice(object):
276 272
277 Publisher.sendMessage('Select first item from slice menu') 273 Publisher.sendMessage('Select first item from slice menu')
278 274
279 - #self.blend_filter = None  
280 - #self.blend_filter = None  
281 - #self.num_gradient = 0  
282 -  
283 def __set_current_mask_threshold_limits(self, pubsub_evt): 275 def __set_current_mask_threshold_limits(self, pubsub_evt):
284 thresh_min = pubsub_evt.data[0] 276 thresh_min = pubsub_evt.data[0]
285 thresh_max = pubsub_evt.data[1] 277 thresh_max = pubsub_evt.data[1]
@@ -287,10 +279,6 @@ class Slice(object): @@ -287,10 +279,6 @@ class Slice(object):
287 index = self.current_mask.index 279 index = self.current_mask.index
288 self.SetMaskEditionThreshold(index, (thresh_min, thresh_max)) 280 self.SetMaskEditionThreshold(index, (thresh_min, thresh_max))
289 281
290 - #---------------------------------------------------------------------------  
291 - # BEGIN PUBSUB_EVT METHODS  
292 - #---------------------------------------------------------------------------  
293 -  
294 def __add_mask(self, pubsub_evt): 282 def __add_mask(self, pubsub_evt):
295 mask_name = pubsub_evt.data 283 mask_name = pubsub_evt.data
296 self.CreateMask(name=mask_name) 284 self.CreateMask(name=mask_name)
@@ -308,7 +296,7 @@ class Slice(object): @@ -308,7 +296,7 @@ class Slice(object):
308 def __select_current_mask(self, pubsub_evt): 296 def __select_current_mask(self, pubsub_evt):
309 mask_index = pubsub_evt.data 297 mask_index = pubsub_evt.data
310 self.SelectCurrentMask(mask_index) 298 self.SelectCurrentMask(mask_index)
311 - #--------------------------------------------------------------------------- 299 +
312 def __set_current_mask_edition_threshold(self, evt_pubsub): 300 def __set_current_mask_edition_threshold(self, evt_pubsub):
313 if self.current_mask: 301 if self.current_mask:
314 threshold_range = evt_pubsub.data 302 threshold_range = evt_pubsub.data
@@ -324,7 +312,6 @@ class Slice(object): @@ -324,7 +312,6 @@ class Slice(object):
324 312
325 to_reload = False 313 to_reload = False
326 if threshold_range != self.current_mask.threshold_range: 314 if threshold_range != self.current_mask.threshold_range:
327 - print "<<<<<<<<<<<<<<<< DIFERENT >>>>>>>>>>>>>>>>>>>>>>>"  
328 to_reload = True 315 to_reload = True
329 for orientation in self.buffer_slices: 316 for orientation in self.buffer_slices:
330 self.buffer_slices[orientation].discard_vtk_mask() 317 self.buffer_slices[orientation].discard_vtk_mask()
@@ -836,19 +823,12 @@ class Slice(object): @@ -836,19 +823,12 @@ class Slice(object):
836 823
837 def SelectCurrentMask(self, index): 824 def SelectCurrentMask(self, index):
838 "Insert mask data, based on given index, into pipeline." 825 "Insert mask data, based on given index, into pipeline."
839 - # This condition is not necessary in Linux, only under mac and windows  
840 - # because combobox event is binded when the same item is selected again.  
841 - #if index != self.current_mask.index:  
842 - print "SelectCurrentMask"  
843 - print "index:", index  
844 proj = Project() 826 proj = Project()
845 future_mask = proj.GetMask(index) 827 future_mask = proj.GetMask(index)
846 future_mask.is_shown = True 828 future_mask.is_shown = True
847 self.current_mask = future_mask 829 self.current_mask = future_mask
848 830
849 colour = future_mask.colour 831 colour = future_mask.colour
850 - #index = future_mask.index  
851 - print index  
852 self.SetMaskColour(index, colour, update=False) 832 self.SetMaskColour(index, colour, update=False)
853 833
854 self.buffer_slices = {"AXIAL": SliceBuffer(), 834 self.buffer_slices = {"AXIAL": SliceBuffer(),
@@ -871,18 +851,9 @@ class Slice(object): @@ -871,18 +851,9 @@ class Slice(object):
871 proj = Project() 851 proj = Project()
872 mask = proj.mask_dict[surface_parameters['options']['index']] 852 mask = proj.mask_dict[surface_parameters['options']['index']]
873 853
874 - # This is very important. Do not use masks' imagedata. It would mess up  
875 - # surface quality event when using contour  
876 - #self.SetMaskThreshold(mask.index, threshold)  
877 - for n in xrange(1, mask.matrix.shape[0]):  
878 - if mask.matrix[n, 0, 0] == 0:  
879 - m = mask.matrix[n, 1:, 1:]  
880 - mask.matrix[n, 1:, 1:] = self.do_threshold_to_a_slice(self.matrix[n-1], m)  
881 -  
882 - mask.matrix.flush() 854 + self.do_threshold_to_all_slices(mask)
  855 + Publisher.sendMessage('Create surface', (self, mask, surface_parameters))
883 856
884 - Publisher.sendMessage('Create surface', (self, mask,  
885 - surface_parameters))  
886 def GetOutput(self): 857 def GetOutput(self):
887 return self.blend_filter.GetOutput() 858 return self.blend_filter.GetOutput()
888 859
@@ -906,59 +877,6 @@ class Slice(object): @@ -906,59 +877,6 @@ class Slice(object):
906 877
907 Publisher.sendMessage('Check projection menu', tprojection) 878 Publisher.sendMessage('Check projection menu', tprojection)
908 879
909 - def SetInput(self, imagedata, mask_dict):  
910 - print "SETINPUT!"  
911 - self.imagedata = imagedata  
912 - self.extent = imagedata.GetExtent()  
913 -  
914 - imagedata_bg = self.__create_background(imagedata)  
915 -  
916 - if not mask_dict:  
917 - imagedata_mask = self.__build_mask(imagedata, create=True)  
918 - else:  
919 - self.__load_masks(imagedata, mask_dict)  
920 - imagedata_mask = self.img_colours_mask.GetOutput()  
921 -  
922 - mask_opacity = self.current_mask.opacity  
923 -  
924 - # blend both imagedatas, so it can be inserted into viewer  
925 - blend_filter = vtk.vtkImageBlend()  
926 - blend_filter.SetBlendModeToNormal()  
927 - blend_filter.SetOpacity(0, 1)  
928 - if self.current_mask.is_shown:  
929 - blend_filter.SetOpacity(1, mask_opacity)  
930 - else:  
931 - blend_filter.SetOpacity(1, 0)  
932 - blend_filter.SetInput(0, imagedata_bg)  
933 - blend_filter.SetInput(1, imagedata_mask)  
934 - blend_filter.SetBlendModeToNormal()  
935 - blend_filter.GetOutput().ReleaseDataFlagOn()  
936 - self.blend_filter = blend_filter  
937 -  
938 - self.window_level = vtk.vtkImageMapToWindowLevelColors()  
939 - self.window_level.SetInput(self.imagedata)  
940 -  
941 - def __create_background(self, imagedata):  
942 - thresh_min, thresh_max = imagedata.GetScalarRange()  
943 - Publisher.sendMessage('Update threshold limits list', (thresh_min,  
944 - thresh_max))  
945 -  
946 - # map scalar values into colors  
947 - lut_bg = self.lut_bg = vtk.vtkLookupTable()  
948 - lut_bg.SetTableRange(thresh_min, thresh_max)  
949 - lut_bg.SetSaturationRange(0, 0)  
950 - lut_bg.SetHueRange(0, 0)  
951 - lut_bg.SetValueRange(0, 1)  
952 - lut_bg.Build()  
953 -  
954 - # map the input image through a lookup table  
955 - img_colours_bg = self.img_colours_bg = vtk.vtkImageMapToColors()  
956 - img_colours_bg.SetOutputFormatToRGBA()  
957 - img_colours_bg.SetLookupTable(lut_bg)  
958 - img_colours_bg.SetInput(imagedata)  
959 -  
960 - return img_colours_bg.GetOutput()  
961 -  
962 def UpdateWindowLevelBackground(self, pubsub_evt): 880 def UpdateWindowLevelBackground(self, pubsub_evt):
963 window, level = pubsub_evt.data 881 window, level = pubsub_evt.data
964 self.window_width = window 882 self.window_width = window
@@ -1017,29 +935,6 @@ class Slice(object): @@ -1017,29 +935,6 @@ class Slice(object):
1017 935
1018 Publisher.sendMessage('Reload actual slice') 936 Publisher.sendMessage('Reload actual slice')
1019 937
1020 - def InputImageWidget(self, pubsub_evt):  
1021 - widget, orientation = pubsub_evt.data  
1022 -  
1023 - original_orientation = Project().original_orientation  
1024 -  
1025 - img = self.buffer_slices[orientation].vtk_image  
1026 -  
1027 - cast = vtk.vtkImageCast()  
1028 - cast.SetInput(img)  
1029 - cast.SetOutputScalarTypeToDouble()  
1030 - cast.ClampOverflowOn()  
1031 - cast.Update()  
1032 -  
1033 - #if (original_orientation == const.AXIAL):  
1034 - flip = vtk.vtkImageFlip()  
1035 - flip.SetInput(cast.GetOutput())  
1036 - flip.SetFilteredAxis(1)  
1037 - flip.FlipAboutOriginOn()  
1038 - flip.Update()  
1039 - widget.SetInput(flip.GetOutput())  
1040 - #else:  
1041 - #widget.SetInput(cast.GetOutput())  
1042 -  
1043 def UpdateSlice3D(self, pubsub_evt): 938 def UpdateSlice3D(self, pubsub_evt):
1044 widget, orientation = pubsub_evt.data 939 widget, orientation = pubsub_evt.data
1045 img = self.buffer_slices[orientation].vtk_image 940 img = self.buffer_slices[orientation].vtk_image
@@ -1111,27 +1006,6 @@ class Slice(object): @@ -1111,27 +1006,6 @@ class Slice(object):
1111 Publisher.sendMessage('Change mask selected', mask.index) 1006 Publisher.sendMessage('Change mask selected', mask.index)
1112 Publisher.sendMessage('Update slice viewer') 1007 Publisher.sendMessage('Update slice viewer')
1113 1008
1114 - def __load_masks(self, imagedata, mask_dict):  
1115 - keys = mask_dict.keys()  
1116 - keys.sort()  
1117 - for key in keys:  
1118 - mask = mask_dict[key]  
1119 -  
1120 - # update gui related to mask  
1121 - utils.debug("__load_masks")  
1122 - utils.debug('THRESHOLD_RANGE %s'% mask.threshold_range)  
1123 - Publisher.sendMessage('Add mask',  
1124 - (mask.index,  
1125 - mask.name,  
1126 - mask.threshold_range,  
1127 - mask.colour))  
1128 -  
1129 - self.current_mask = mask  
1130 - self.__build_mask(imagedata, False)  
1131 -  
1132 - Publisher.sendMessage('Change mask selected', mask.index)  
1133 - Publisher.sendMessage('Update slice viewer')  
1134 -  
1135 def do_ww_wl(self, image): 1009 def do_ww_wl(self, image):
1136 if self.from_ == PLIST: 1010 if self.from_ == PLIST:
1137 lut = vtk.vtkWindowLevelLookupTable() 1011 lut = vtk.vtkWindowLevelLookupTable()
@@ -1212,12 +1086,16 @@ class Slice(object): @@ -1212,12 +1086,16 @@ class Slice(object):
1212 m[mask == 254] = 254 1086 m[mask == 254] = 254
1213 return m.astype('uint8') 1087 return m.astype('uint8')
1214 1088
1215 - def do_threshold_to_all_slices(self):  
1216 - mask = self.current_mask 1089 + def do_threshold_to_all_slices(self, mask=None):
  1090 + """
  1091 + Apply threshold to all slices.
1217 1092
1218 - # This is very important. Do not use masks' imagedata. It would mess up  
1219 - # surface quality event when using contour  
1220 - #self.SetMaskThreshold(mask.index, threshold) 1093 + Params:
  1094 + - mask: the mask where result of the threshold will be stored.If
  1095 + None, it'll be the current mask.
  1096 + """
  1097 + if mask is None:
  1098 + mask = self.current_mask
1221 for n in xrange(1, mask.matrix.shape[0]): 1099 for n in xrange(1, mask.matrix.shape[0]):
1222 if mask.matrix[n, 0, 0] == 0: 1100 if mask.matrix[n, 0, 0] == 0:
1223 m = mask.matrix[n, 1:, 1:] 1101 m = mask.matrix[n, 1:, 1:]
@@ -1390,76 +1268,9 @@ class Slice(object): @@ -1390,76 +1268,9 @@ class Slice(object):
1390 self.buffer_slices[o].discard_vtk_mask() 1268 self.buffer_slices[o].discard_vtk_mask()
1391 Publisher.sendMessage('Reload actual slice') 1269 Publisher.sendMessage('Reload actual slice')
1392 1270
1393 - def __build_mask(self, imagedata, create=True):  
1394 - # create new mask instance and insert it into project  
1395 - if create:  
1396 - self.CreateMask(imagedata=imagedata)  
1397 - current_mask = self.current_mask  
1398 -  
1399 - # properties to be inserted into pipeline  
1400 - scalar_range = int(imagedata.GetScalarRange()[1])  
1401 - r,g,b = current_mask.colour  
1402 -  
1403 - # map scalar values into colors  
1404 - lut_mask = vtk.vtkLookupTable()  
1405 - lut_mask.SetNumberOfTableValues(1)  
1406 - lut_mask.SetNumberOfColors(1)  
1407 - lut_mask.SetHueRange(const.THRESHOLD_HUE_RANGE)  
1408 - lut_mask.SetSaturationRange(1, 1)  
1409 - lut_mask.SetValueRange(1, 1)  
1410 - lut_mask.SetNumberOfTableValues(scalar_range)  
1411 - lut_mask.SetTableValue(1, r, g, b, 1.0)  
1412 - lut_mask.SetTableValue(scalar_range - 1, r, g, b, 1.0)  
1413 - lut_mask.SetRampToLinear()  
1414 - lut_mask.Build()  
1415 - self.lut_mask = lut_mask  
1416 -  
1417 - mask_thresh_imagedata = self.__create_mask_threshold(imagedata)  
1418 -  
1419 - if create:  
1420 - # threshold pipeline  
1421 - current_mask.imagedata.DeepCopy(mask_thresh_imagedata)  
1422 - else:  
1423 - mask_thresh_imagedata = self.current_mask.imagedata  
1424 -  
1425 - # map the input image through a lookup table  
1426 - img_colours_mask = vtk.vtkImageMapToColors()  
1427 - img_colours_mask.SetOutputFormatToRGBA()  
1428 - img_colours_mask.SetLookupTable(lut_mask)  
1429 -  
1430 - img_colours_mask.SetInput(mask_thresh_imagedata)  
1431 -  
1432 - self.img_colours_mask = img_colours_mask  
1433 -  
1434 - return img_colours_mask.GetOutput()  
1435 -  
1436 - def __create_mask_threshold(self, imagedata, threshold_range=None):  
1437 - if not threshold_range:  
1438 - thresh_min, thresh_max = self.current_mask.threshold_range  
1439 - else:  
1440 - thresh_min, thresh_max = threshold_range  
1441 -  
1442 - # flexible threshold  
1443 - img_thresh_mask = vtk.vtkImageThreshold()  
1444 - img_thresh_mask.SetInValue(const.THRESHOLD_INVALUE)  
1445 - img_thresh_mask.SetInput(imagedata)  
1446 - img_thresh_mask.SetOutValue(const.THRESHOLD_OUTVALUE)  
1447 - img_thresh_mask.ThresholdBetween(float(thresh_min), float(thresh_max))  
1448 - img_thresh_mask.Update()  
1449 - self.img_thresh_mask = img_thresh_mask  
1450 -  
1451 - # copy of threshold output  
1452 - imagedata_mask = vtk.vtkImageData()  
1453 - imagedata_mask.DeepCopy(img_thresh_mask.GetOutput())  
1454 - imagedata_mask.Update()  
1455 -  
1456 - return imagedata_mask  
1457 -  
1458 def _open_image_matrix(self, filename, shape, dtype): 1271 def _open_image_matrix(self, filename, shape, dtype):
1459 self.matrix_filename = filename 1272 self.matrix_filename = filename
1460 - print ">>>", filename  
1461 - self.matrix = numpy.memmap(filename, shape=shape, dtype=dtype,  
1462 - mode='r+') 1273 + self.matrix = numpy.memmap(filename, shape=shape, dtype=dtype, mode='r+')
1463 1274
1464 def OnFlipVolume(self, pubsub_evt): 1275 def OnFlipVolume(self, pubsub_evt):
1465 axis = pubsub_evt.data 1276 axis = pubsub_evt.data
@@ -1489,8 +1300,9 @@ class Slice(object): @@ -1489,8 +1300,9 @@ class Slice(object):
1489 print type(self.matrix) 1300 print type(self.matrix)
1490 1301
1491 def OnExportMask(self, pubsub_evt): 1302 def OnExportMask(self, pubsub_evt):
1492 - #imagedata = self.current_mask.imagedata  
1493 - imagedata = self.imagedata  
1494 - filename, filetype = pubsub_evt.data  
1495 - if (filetype == const.FILETYPE_IMAGEDATA):  
1496 - iu.Export(imagedata, filename) 1303 + pass
  1304 + ##imagedata = self.current_mask.imagedata
  1305 + #imagedata = self.imagedata
  1306 + #filename, filetype = pubsub_evt.data
  1307 + #if (filetype == const.FILETYPE_IMAGEDATA):
  1308 + #iu.Export(imagedata, filename)
invesalius/data/styles.py
@@ -427,7 +427,6 @@ class SpinInteractorStyle(DefaultInteractorStyle): @@ -427,7 +427,6 @@ class SpinInteractorStyle(DefaultInteractorStyle):
427 cam = ren.GetActiveCamera() 427 cam = ren.GetActiveCamera()
428 if (self.left_pressed): 428 if (self.left_pressed):
429 self.viewer.UpdateTextDirection(cam) 429 self.viewer.UpdateTextDirection(cam)
430 - self.spined_image = True  
431 obj.Spin() 430 obj.Spin()
432 obj.OnRightButtonDown() 431 obj.OnRightButtonDown()
433 432
invesalius/data/viewer_slice.py
@@ -152,16 +152,10 @@ class Viewer(wx.Panel): @@ -152,16 +152,10 @@ class Viewer(wx.Panel):
152 #self.SetBackgroundColour(colour) 152 #self.SetBackgroundColour(colour)
153 153
154 # Interactor additional style 154 # Interactor additional style
155 - #self.modes = []#['DEFAULT']  
156 - self.left_pressed = 0  
157 - self.right_pressed = 0  
158 155
159 self._number_slices = const.PROJECTION_MIP_SIZE 156 self._number_slices = const.PROJECTION_MIP_SIZE
160 self._mip_inverted = False 157 self._mip_inverted = False
161 158
162 - self.spined_image = False #Use to control to spin  
163 - self.paned_image = False  
164 -  
165 self.style = None 159 self.style = None
166 self.last_position_mouse_move = () 160 self.last_position_mouse_move = ()
167 self.state = const.STATE_DEFAULT 161 self.state = const.STATE_DEFAULT
@@ -200,7 +194,6 @@ class Viewer(wx.Panel): @@ -200,7 +194,6 @@ class Viewer(wx.Panel):
200 self.__bind_events() 194 self.__bind_events()
201 self.__bind_events_wx() 195 self.__bind_events_wx()
202 196
203 - self._warped = False  
204 self._flush_buffer = False 197 self._flush_buffer = False
205 198
206 def __init_gui(self): 199 def __init_gui(self):
@@ -230,7 +223,6 @@ class Viewer(wx.Panel): @@ -230,7 +223,6 @@ class Viewer(wx.Panel):
230 self.interactor.SetPicker(self.pick) 223 self.interactor.SetPicker(self.pick)
231 224
232 def OnContextMenu(self, evt): 225 def OnContextMenu(self, evt):
233 - self.right_pressed = 0  
234 if (self.last_position_mouse_move ==\ 226 if (self.last_position_mouse_move ==\
235 self.interactor.GetLastEventPosition()): 227 self.interactor.GetLastEventPosition()):
236 self.menu.caller = self 228 self.menu.caller = self
@@ -826,7 +818,6 @@ class Viewer(wx.Panel): @@ -826,7 +818,6 @@ class Viewer(wx.Panel):
826 for slice_data in self.slice_data_list: 818 for slice_data in self.slice_data_list:
827 del slice_data 819 del slice_data
828 820
829 - self.modes = []#['DEFAULT']  
830 self.slice_data_list = [] 821 self.slice_data_list = []
831 self.layout = (1, 1) 822 self.layout = (1, 1)
832 self.orientation_texts = [] 823 self.orientation_texts = []
@@ -854,8 +845,8 @@ class Viewer(wx.Panel): @@ -854,8 +845,8 @@ class Viewer(wx.Panel):
854 self.interactor.Bind(wx.EVT_SIZE, self.OnSize) 845 self.interactor.Bind(wx.EVT_SIZE, self.OnSize)
855 846
856 def LoadImagedata(self, pubsub_evt): 847 def LoadImagedata(self, pubsub_evt):
857 - imagedata, mask_dict = pubsub_evt.data  
858 - self.SetInput(imagedata, mask_dict) 848 + mask_dict = pubsub_evt.data
  849 + self.SetInput(mask_dict)
859 850
860 def LoadRenderers(self, imagedata): 851 def LoadRenderers(self, imagedata):
861 number_renderers = self.layout[0] * self.layout[1] 852 number_renderers = self.layout[0] * self.layout[1]
@@ -920,7 +911,7 @@ class Viewer(wx.Panel): @@ -920,7 +911,7 @@ class Viewer(wx.Panel):
920 self.cursor_ = cursor 911 self.cursor_ = cursor
921 return cursor 912 return cursor
922 913
923 - def SetInput(self, imagedata, mask_dict): 914 + def SetInput(self, mask_dict):
924 self.slice_ = sl.Slice() 915 self.slice_ = sl.Slice()
925 916
926 max_slice_number = sl.Slice().GetNumberOfSlices(self.orientation) 917 max_slice_number = sl.Slice().GetNumberOfSlices(self.orientation)
@@ -928,11 +919,9 @@ class Viewer(wx.Panel): @@ -928,11 +919,9 @@ class Viewer(wx.Panel):
928 max_slice_number) 919 max_slice_number)
929 920
930 self.slice_data = self.create_slice_window() 921 self.slice_data = self.create_slice_window()
931 - #self.slice_data.actor.SetInput(imagedata)  
932 self.slice_data.SetCursor(self.__create_cursor()) 922 self.slice_data.SetCursor(self.__create_cursor())
933 self.cam = self.slice_data.renderer.GetActiveCamera() 923 self.cam = self.slice_data.renderer.GetActiveCamera()
934 - self.__build_cross_lines(imagedata)  
935 - #self.set_slice_number(0) 924 + self.__build_cross_lines()
936 925
937 # Set the slice number to the last slice to ensure the camera if far 926 # Set the slice number to the last slice to ensure the camera if far
938 # enough to show all slices. 927 # enough to show all slices.
@@ -940,30 +929,6 @@ class Viewer(wx.Panel): @@ -940,30 +929,6 @@ class Viewer(wx.Panel):
940 self.__update_camera() 929 self.__update_camera()
941 self.slice_data.renderer.ResetCamera() 930 self.slice_data.renderer.ResetCamera()
942 self.interactor.GetRenderWindow().AddRenderer(self.slice_data.renderer) 931 self.interactor.GetRenderWindow().AddRenderer(self.slice_data.renderer)
943 - #if slice_.imagedata is None:  
944 - #slice_.SetInput(imagedata, mask_dict)  
945 -  
946 - ##actor.SetInput(slice_.GetOutput())  
947 - #self.LoadRenderers(slice_.GetOutput())  
948 - #self.__configure_renderers()  
949 - #ren = self.slice_data_list[0].renderer  
950 - #actor = self.slice_data_list[0].actor  
951 - #actor_bound = actor.GetBounds()  
952 - #self.cam = ren.GetActiveCamera()  
953 -  
954 - #for slice_data in self.slice_data_list:  
955 - #self.__update_camera(slice_data)  
956 - #self.Reposition(slice_data)  
957 -  
958 - #number_of_slices = self.layout[0] * self.layout[1]  
959 - #max_slice_number = actor.GetSliceNumberMax() + 1/ \  
960 - #number_of_slices  
961 -  
962 - #if actor.GetSliceNumberMax() % number_of_slices:  
963 - #max_slice_number += 1  
964 - #self.set_scroll_position(0)  
965 -  
966 - #actor_bound = actor.GetBounds()  
967 self.interactor.Render() 932 self.interactor.Render()
968 933
969 self.EnableText() 934 self.EnableText()
@@ -971,7 +936,7 @@ class Viewer(wx.Panel): @@ -971,7 +936,7 @@ class Viewer(wx.Panel):
971 ## Insert cursor 936 ## Insert cursor
972 self.SetInteractorStyle(const.STATE_DEFAULT) 937 self.SetInteractorStyle(const.STATE_DEFAULT)
973 938
974 - def __build_cross_lines(self, imagedata): 939 + def __build_cross_lines(self):
975 renderer = self.slice_data.overlay_renderer 940 renderer = self.slice_data.overlay_renderer
976 941
977 cross = vtk.vtkCursor3D() 942 cross = vtk.vtkCursor3D()
@@ -1010,28 +975,6 @@ class Viewer(wx.Panel): @@ -1010,28 +975,6 @@ class Viewer(wx.Panel):
1010 for slice_data in self.slice_data_list: 975 for slice_data in self.slice_data_list:
1011 slice_data.cursor.actor.SetVisibility(visibility) 976 slice_data.cursor.actor.SetVisibility(visibility)
1012 977
1013 - def __update_cursor_position(self, slice_data, position):  
1014 - x, y, z = position  
1015 - if (slice_data.cursor):  
1016 - slice_number = slice_data.number  
1017 - actor_bound = slice_data.actor.GetBounds()  
1018 -  
1019 - yz = [x + abs(x * 0.001), y, z]  
1020 - xz = [x, y - abs(y * 0.001), z]  
1021 - xy = [x, y, z + abs(z * 0.001)]  
1022 -  
1023 - proj = project.Project()  
1024 - orig_orien = proj.original_orientation  
1025 -  
1026 - if (orig_orien == const.SAGITAL):  
1027 - coordinates = {"SAGITAL": xy, "CORONAL": yz, "AXIAL": xz}  
1028 - elif(orig_orien == const.CORONAL):  
1029 - coordinates = {"SAGITAL": yz, "CORONAL": xy, "AXIAL": xz}  
1030 - else:  
1031 - coordinates = {"SAGITAL": yz, "CORONAL": xz, "AXIAL": xy}  
1032 -  
1033 - slice_data.cursor.SetPosition(coordinates[self.orientation])  
1034 -  
1035 def SetOrientation(self, orientation): 978 def SetOrientation(self, orientation):
1036 self.orientation = orientation 979 self.orientation = orientation
1037 for slice_data in self.slice_data_list: 980 for slice_data in self.slice_data_list:
@@ -1047,7 +990,6 @@ class Viewer(wx.Panel): @@ -1047,7 +990,6 @@ class Viewer(wx.Panel):
1047 overlay_renderer.SetActiveCamera(cam) 990 overlay_renderer.SetActiveCamera(cam)
1048 overlay_renderer.SetInteractive(0) 991 overlay_renderer.SetInteractive(0)
1049 992
1050 -  
1051 self.interactor.GetRenderWindow().SetNumberOfLayers(2) 993 self.interactor.GetRenderWindow().SetNumberOfLayers(2)
1052 self.interactor.GetRenderWindow().AddRenderer(overlay_renderer) 994 self.interactor.GetRenderWindow().AddRenderer(overlay_renderer)
1053 self.interactor.GetRenderWindow().AddRenderer(renderer) 995 self.interactor.GetRenderWindow().AddRenderer(renderer)
@@ -1286,30 +1228,6 @@ class Viewer(wx.Panel): @@ -1286,30 +1228,6 @@ class Viewer(wx.Panel):
1286 self.set_slice_number(pos) 1228 self.set_slice_number(pos)
1287 self.interactor.Render() 1229 self.interactor.Render()
1288 1230
1289 - def test_operation_position(self, coord):  
1290 - """  
1291 - Test if coord is into the imagedata limits.  
1292 - """  
1293 - x, y, z = coord  
1294 - xi, yi, zi = 0, 0, 0  
1295 - xf, yf, zf = self.imagedata.GetDimensions()  
1296 - if xi <= x <= xf \  
1297 - and yi <= y <= yf\  
1298 - and zi <= z <= zf:  
1299 - return True  
1300 - return False  
1301 -  
1302 - def _assert_coord_into_image(self, coord):  
1303 - extent = self.imagedata.GetWholeExtent()  
1304 - extent_min = extent[0], extent[2], extent[4]  
1305 - extent_max = extent[1], extent[3], extent[5]  
1306 - for index in xrange(3):  
1307 - if coord[index] > extent_max[index]:  
1308 - coord[index] = extent_max[index]  
1309 - elif coord[index] < extent_min[index]:  
1310 - coord[index] = extent_min[index]  
1311 - return coord  
1312 -  
1313 def ReloadActualSlice(self, pubsub_evt=None): 1231 def ReloadActualSlice(self, pubsub_evt=None):
1314 pos = self.scroll.GetThumbPosition() 1232 pos = self.scroll.GetThumbPosition()
1315 self.set_slice_number(pos) 1233 self.set_slice_number(pos)
invesalius/project.py
@@ -22,7 +22,6 @@ import glob @@ -22,7 +22,6 @@ import glob
22 import os 22 import os
23 import plistlib 23 import plistlib
24 import shutil 24 import shutil
25 -import stat  
26 import tarfile 25 import tarfile
27 import tempfile 26 import tempfile
28 27
@@ -35,7 +34,6 @@ import data.mask as msk @@ -35,7 +34,6 @@ import data.mask as msk
35 import data.polydata_utils as pu 34 import data.polydata_utils as pu
36 import data.surface as srf 35 import data.surface as srf
37 from presets import Presets 36 from presets import Presets
38 -from reader import dicom  
39 from utils import Singleton, debug 37 from utils import Singleton, debug
40 import version 38 import version
41 39
@@ -47,18 +45,13 @@ class Project(object): @@ -47,18 +45,13 @@ class Project(object):
47 def __init__(self): 45 def __init__(self):
48 # Patient/ acquistion information 46 # Patient/ acquistion information
49 self.name = '' 47 self.name = ''
50 - self.dicom_sample = ''  
51 self.modality = '' 48 self.modality = ''
52 self.original_orientation = '' 49 self.original_orientation = ''
53 self.window = '' 50 self.window = ''
54 self.level = '' 51 self.level = ''
55 52
56 - # Original imagedata (shouldn't be changed)  
57 - self.imagedata = ''  
58 -  
59 # Masks (vtkImageData) 53 # Masks (vtkImageData)
60 self.mask_dict = {} 54 self.mask_dict = {}
61 - self.last_mask_index = 0  
62 55
63 # Surfaces are (vtkPolyData) 56 # Surfaces are (vtkPolyData)
64 self.surface_dict = {} 57 self.surface_dict = {}
@@ -107,7 +100,6 @@ class Project(object): @@ -107,7 +100,6 @@ class Project(object):
107 output 100 output
108 @ index: index of item that was inserted 101 @ index: index of item that was inserted
109 """ 102 """
110 - #self.last_mask_index = mask.index  
111 index = len(self.mask_dict) 103 index = len(self.mask_dict)
112 self.mask_dict[index] = mask 104 self.mask_dict[index] = mask
113 return index 105 return index