Commit b801673a42ddf71dc07161aa2bf8d8cba70103b9

Authored by rmatsuda
1 parent dcd9eb40
Exists in master

ENH: Add reset button

invesalius/gui/dialogs.py
@@ -1170,7 +1170,7 @@ def ShowAboutDialog(parent): @@ -1170,7 +1170,7 @@ def ShowAboutDialog(parent):
1170 1170
1171 info.SetWebSite("https://www.cti.gov.br/invesalius") 1171 info.SetWebSite("https://www.cti.gov.br/invesalius")
1172 info.SetIcon(icon) 1172 info.SetIcon(icon)
1173 - 1173 +
1174 info.License = _("GNU GPL (General Public License) version 2") 1174 info.License = _("GNU GPL (General Public License) version 2")
1175 1175
1176 info.Developers = [u"Paulo Henrique Junqueira Amorim", 1176 info.Developers = [u"Paulo Henrique Junqueira Amorim",
@@ -1358,7 +1358,7 @@ class NewSurfaceDialog(wx.Dialog): @@ -1358,7 +1358,7 @@ class NewSurfaceDialog(wx.Dialog):
1358 def ExportPicture(type_=""): 1358 def ExportPicture(type_=""):
1359 import invesalius.constants as const 1359 import invesalius.constants as const
1360 import invesalius.project as proj 1360 import invesalius.project as proj
1361 - 1361 +
1362 INDEX_TO_EXTENSION = {0: "bmp", 1: "jpg", 2: "png", 3: "ps", 4:"povray", 5:"tiff"} 1362 INDEX_TO_EXTENSION = {0: "bmp", 1: "jpg", 2: "png", 3: "ps", 4:"povray", 5:"tiff"}
1363 WILDCARD_SAVE_PICTURE = _("BMP image")+" (*.bmp)|*.bmp|"+\ 1363 WILDCARD_SAVE_PICTURE = _("BMP image")+" (*.bmp)|*.bmp|"+\
1364 _("JPG image")+" (*.jpg)|*.jpg|"+\ 1364 _("JPG image")+" (*.jpg)|*.jpg|"+\
@@ -1528,7 +1528,7 @@ class SurfaceCreationOptionsPanel(wx.Panel): @@ -1528,7 +1528,7 @@ class SurfaceCreationOptionsPanel(wx.Panel):
1528 project = prj.Project() 1528 project = prj.Project()
1529 index_list = project.mask_dict.keys() 1529 index_list = project.mask_dict.keys()
1530 self.mask_list = [project.mask_dict[index].name for index in sorted(index_list)] 1530 self.mask_list = [project.mask_dict[index].name for index in sorted(index_list)]
1531 - 1531 +
1532 active_mask = slc.Slice().current_mask.index 1532 active_mask = slc.Slice().current_mask.index
1533 #active_mask = len(self.mask_list)-1 1533 #active_mask = len(self.mask_list)-1
1534 1534
@@ -2108,17 +2108,17 @@ class ImportBitmapParameters(wx.Dialog): @@ -2108,17 +2108,17 @@ class ImportBitmapParameters(wx.Dialog):
2108 2108
2109 2109
2110 def _init_gui(self): 2110 def _init_gui(self):
2111 - 2111 +
2112 import invesalius.project as prj 2112 import invesalius.project as prj
2113 - 2113 +
2114 p = wx.Panel(self, -1, style = wx.TAB_TRAVERSAL 2114 p = wx.Panel(self, -1, style = wx.TAB_TRAVERSAL
2115 | wx.CLIP_CHILDREN 2115 | wx.CLIP_CHILDREN
2116 | wx.FULL_REPAINT_ON_RESIZE) 2116 | wx.FULL_REPAINT_ON_RESIZE)
2117 - 2117 +
2118 gbs_principal = self.gbs = wx.GridBagSizer(4,1) 2118 gbs_principal = self.gbs = wx.GridBagSizer(4,1)
2119 2119
2120 gbs = self.gbs = wx.GridBagSizer(5, 2) 2120 gbs = self.gbs = wx.GridBagSizer(5, 2)
2121 - 2121 +
2122 flag_labels = wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL 2122 flag_labels = wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL
2123 2123
2124 stx_name = wx.StaticText(p, -1, _(u"Project name:")) 2124 stx_name = wx.StaticText(p, -1, _(u"Project name:"))
@@ -2149,7 +2149,7 @@ class ImportBitmapParameters(wx.Dialog): @@ -2149,7 +2149,7 @@ class ImportBitmapParameters(wx.Dialog):
2149 2149
2150 #--- spacing -------------- 2150 #--- spacing --------------
2151 gbs_spacing = wx.GridBagSizer(2, 6) 2151 gbs_spacing = wx.GridBagSizer(2, 6)
2152 - 2152 +
2153 stx_spacing_x = stx_spacing_x = wx.StaticText(p, -1, _(u"X:")) 2153 stx_spacing_x = stx_spacing_x = wx.StaticText(p, -1, _(u"X:"))
2154 fsp_spacing_x = self.fsp_spacing_x = InvFloatSpinCtrl(p, -1, min_value=0, max_value=1000000000, 2154 fsp_spacing_x = self.fsp_spacing_x = InvFloatSpinCtrl(p, -1, min_value=0, max_value=1000000000,
2155 increment=0.25, value=1.0, digits=8) 2155 increment=0.25, value=1.0, digits=8)
@@ -2166,7 +2166,7 @@ class ImportBitmapParameters(wx.Dialog): @@ -2166,7 +2166,7 @@ class ImportBitmapParameters(wx.Dialog):
2166 2166
2167 try: 2167 try:
2168 proj = prj.Project() 2168 proj = prj.Project()
2169 - 2169 +
2170 sx = proj.spacing[0] 2170 sx = proj.spacing[0]
2171 sy = proj.spacing[1] 2171 sy = proj.spacing[1]
2172 sz = proj.spacing[2] 2172 sz = proj.spacing[2]
@@ -2189,7 +2189,7 @@ class ImportBitmapParameters(wx.Dialog): @@ -2189,7 +2189,7 @@ class ImportBitmapParameters(wx.Dialog):
2189 2189
2190 #----- buttons ------------------------ 2190 #----- buttons ------------------------
2191 gbs_button = wx.GridBagSizer(2, 4) 2191 gbs_button = wx.GridBagSizer(2, 4)
2192 - 2192 +
2193 btn_ok = self.btn_ok= wx.Button(p, wx.ID_OK) 2193 btn_ok = self.btn_ok= wx.Button(p, wx.ID_OK)
2194 btn_ok.SetDefault() 2194 btn_ok.SetDefault()
2195 2195
@@ -2212,14 +2212,14 @@ class ImportBitmapParameters(wx.Dialog): @@ -2212,14 +2212,14 @@ class ImportBitmapParameters(wx.Dialog):
2212 2212
2213 box = wx.BoxSizer() 2213 box = wx.BoxSizer()
2214 box.Add(gbs_principal, 1, wx.ALL|wx.EXPAND, 10) 2214 box.Add(gbs_principal, 1, wx.ALL|wx.EXPAND, 10)
2215 - 2215 +
2216 p.SetSizer(box) 2216 p.SetSizer(box)
2217 box.Fit(self) 2217 box.Fit(self)
2218 self.Layout() 2218 self.Layout()
2219 2219
2220 def bind_evts(self): 2220 def bind_evts(self):
2221 self.btn_ok.Bind(wx.EVT_BUTTON, self.OnOk) 2221 self.btn_ok.Bind(wx.EVT_BUTTON, self.OnOk)
2222 - 2222 +
2223 def SetInterval(self, v): 2223 def SetInterval(self, v):
2224 self.interval = v 2224 self.interval = v
2225 2225
@@ -2243,10 +2243,10 @@ class ImportBitmapParameters(wx.Dialog): @@ -2243,10 +2243,10 @@ class ImportBitmapParameters(wx.Dialog):
2243 2243
2244 2244
2245 def BitmapNotSameSize(): 2245 def BitmapNotSameSize():
2246 - 2246 +
2247 dlg = wx.MessageDialog(None,_("All bitmaps files must be the same \n width and height size."), 'Error',\ 2247 dlg = wx.MessageDialog(None,_("All bitmaps files must be the same \n width and height size."), 'Error',\
2248 wx.OK | wx.ICON_ERROR) 2248 wx.OK | wx.ICON_ERROR)
2249 - 2249 +
2250 dlg.ShowModal() 2250 dlg.ShowModal()
2251 dlg.Destroy() 2251 dlg.Destroy()
2252 2252
@@ -2923,7 +2923,7 @@ class FFillSegmentationOptionsDialog(wx.Dialog): @@ -2923,7 +2923,7 @@ class FFillSegmentationOptionsDialog(wx.Dialog):
2923 2923
2924 2924
2925 class CropOptionsDialog(wx.Dialog): 2925 class CropOptionsDialog(wx.Dialog):
2926 - 2926 +
2927 def __init__(self, config, ID=-1, title=_(u"Crop mask"), style=wx.DEFAULT_DIALOG_STYLE|wx.FRAME_FLOAT_ON_PARENT|wx.STAY_ON_TOP): 2927 def __init__(self, config, ID=-1, title=_(u"Crop mask"), style=wx.DEFAULT_DIALOG_STYLE|wx.FRAME_FLOAT_ON_PARENT|wx.STAY_ON_TOP):
2928 self.config = config 2928 self.config = config
2929 wx.Dialog.__init__(self, wx.GetApp().GetTopWindow(), ID, title=title, style=style) 2929 wx.Dialog.__init__(self, wx.GetApp().GetTopWindow(), ID, title=title, style=style)
@@ -3552,7 +3552,7 @@ class ICPCorregistrationDialog(wx.Dialog): @@ -3552,7 +3552,7 @@ class ICPCorregistrationDialog(wx.Dialog):
3552 3552
3553 txt_surface = wx.StaticText(self, -1, _('Select the surface:')) 3553 txt_surface = wx.StaticText(self, -1, _('Select the surface:'))
3554 3554
3555 - combo_surface_name = wx.ComboBox(self, -1, 3555 + combo_surface_name = wx.ComboBox(self, -1, size=(330,23),
3556 style=wx.CB_DROPDOWN | wx.CB_READONLY) 3556 style=wx.CB_DROPDOWN | wx.CB_READONLY)
3557 # combo_surface_name.SetSelection(0) 3557 # combo_surface_name.SetSelection(0)
3558 if sys.platform != 'win32': 3558 if sys.platform != 'win32':
@@ -3578,6 +3578,9 @@ class ICPCorregistrationDialog(wx.Dialog): @@ -3578,6 +3578,9 @@ class ICPCorregistrationDialog(wx.Dialog):
3578 self.timer = wx.Timer(self) 3578 self.timer = wx.Timer(self)
3579 self.Bind(wx.EVT_TIMER, self.OnUpdate, self.timer) 3579 self.Bind(wx.EVT_TIMER, self.OnUpdate, self.timer)
3580 3580
  3581 + btn_reset = wx.Button(self, -1, label=_('Reset the points'), size=(100, 23))
  3582 + btn_reset.Bind(wx.EVT_BUTTON, self.OnReset)
  3583 +
3581 btn_acqui_sizer = wx.FlexGridSizer(rows=1, cols=2, hgap=5, vgap=5) 3584 btn_acqui_sizer = wx.FlexGridSizer(rows=1, cols=2, hgap=5, vgap=5)
3582 btn_acqui_sizer.AddMany([(create_point, wx.LEFT), 3585 btn_acqui_sizer.AddMany([(create_point, wx.LEFT),
3583 (cont_point, wx.RIGHT)]) 3586 (cont_point, wx.RIGHT)])
@@ -3596,6 +3599,13 @@ class ICPCorregistrationDialog(wx.Dialog): @@ -3596,6 +3599,13 @@ class ICPCorregistrationDialog(wx.Dialog):
3596 btn_icp_sizer.AddMany([(choice_icp_method, wx.LEFT), 3599 btn_icp_sizer.AddMany([(choice_icp_method, wx.LEFT),
3597 (icp, wx.RIGHT)]) 3600 (icp, wx.RIGHT)])
3598 3601
  3602 + surface_resetsizer = wx.FlexGridSizer(rows=1, cols=2, hgap=5, vgap=5)
  3603 + surface_resetsizer.AddMany([combo_surface_name,
  3604 + btn_reset])
  3605 +
  3606 + top_sizer = wx.FlexGridSizer(rows=2, cols=1, hgap=50, vgap=5)
  3607 + top_sizer.AddMany([txt_surface,
  3608 + surface_resetsizer])
3599 3609
3600 # Buttons to finish or cancel object registration 3610 # Buttons to finish or cancel object registration
3601 tooltip = wx.ToolTip(_(u"ICP done")) 3611 tooltip = wx.ToolTip(_(u"ICP done"))
@@ -3609,11 +3619,6 @@ class ICPCorregistrationDialog(wx.Dialog): @@ -3609,11 +3619,6 @@ class ICPCorregistrationDialog(wx.Dialog):
3609 btnsizer.AddMany([(btn_ok, wx.LEFT), 3619 btnsizer.AddMany([(btn_ok, wx.LEFT),
3610 (btn_cancel, wx.RIGHT)]) 3620 (btn_cancel, wx.RIGHT)])
3611 3621
3612 -  
3613 - top_sizer = wx.FlexGridSizer(rows=2, cols=1, hgap=50, vgap=5)  
3614 - top_sizer.AddMany([txt_surface,  
3615 - combo_surface_name])  
3616 -  
3617 extra_sizer = wx.FlexGridSizer(rows=3, cols=1, hgap=50, vgap=10) 3622 extra_sizer = wx.FlexGridSizer(rows=3, cols=1, hgap=50, vgap=10)
3618 extra_sizer.AddMany([btn_acqui_sizer, 3623 extra_sizer.AddMany([btn_acqui_sizer,
3619 btn_icp_sizer, 3624 btn_icp_sizer,
@@ -3622,7 +3627,7 @@ class ICPCorregistrationDialog(wx.Dialog): @@ -3622,7 +3627,7 @@ class ICPCorregistrationDialog(wx.Dialog):
3622 self.progress = wx.Gauge(self, -1) 3627 self.progress = wx.Gauge(self, -1)
3623 3628
3624 main_sizer = wx.BoxSizer(wx.VERTICAL) 3629 main_sizer = wx.BoxSizer(wx.VERTICAL)
3625 - main_sizer.Add(top_sizer, 0, wx.EXPAND|wx.GROW|wx.LEFT|wx.TOP|wx.RIGHT|wx.BOTTOM, 10) 3630 + main_sizer.Add(top_sizer, 0, wx.LEFT|wx.TOP|wx.RIGHT|wx.BOTTOM, 10)
3626 main_sizer.Add(self.interactor, 0, wx.EXPAND) 3631 main_sizer.Add(self.interactor, 0, wx.EXPAND)
3627 main_sizer.Add(extra_sizer, 0, 3632 main_sizer.Add(extra_sizer, 0,
3628 wx.EXPAND|wx.GROW|wx.LEFT|wx.TOP|wx.RIGHT|wx.BOTTOM, 10) 3633 wx.EXPAND|wx.GROW|wx.LEFT|wx.TOP|wx.RIGHT|wx.BOTTOM, 10)
@@ -3657,6 +3662,9 @@ class ICPCorregistrationDialog(wx.Dialog): @@ -3657,6 +3662,9 @@ class ICPCorregistrationDialog(wx.Dialog):
3657 #self.ren.RemoveActor(self.obj_actor) 3662 #self.ren.RemoveActor(self.obj_actor)
3658 self.ren.RemoveAllViewProps() 3663 self.ren.RemoveAllViewProps()
3659 self.point_coord = [] 3664 self.point_coord = []
  3665 + self.transformed_points = []
  3666 + self.m_icp = None
  3667 + self.SetProgress(0)
3660 self.ren.ResetCamera() 3668 self.ren.ResetCamera()
3661 self.interactor.Render() 3669 self.interactor.Render()
3662 3670
@@ -3806,7 +3814,7 @@ class ICPCorregistrationDialog(wx.Dialog): @@ -3806,7 +3814,7 @@ class ICPCorregistrationDialog(wx.Dialog):
3806 else: 3814 else:
3807 self.timer.Stop() 3815 self.timer.Stop()
3808 3816
3809 - def OnUpdate(self, event): 3817 + def OnUpdate(self, evt):
3810 self.AddMarker(3, (1, 0, 0), self.current_coord[:3]) 3818 self.AddMarker(3, (1, 0, 0), self.current_coord[:3])
3811 self.SetCameraVolume(self.current_coord[:3]) 3819 self.SetCameraVolume(self.current_coord[:3])
3812 3820
@@ -3814,6 +3822,10 @@ class ICPCorregistrationDialog(wx.Dialog): @@ -3814,6 +3822,10 @@ class ICPCorregistrationDialog(wx.Dialog):
3814 self.AddMarker(3,(1,0,0),self.current_coord[:3]) 3822 self.AddMarker(3,(1,0,0),self.current_coord[:3])
3815 self.SetCameraVolume(self.current_coord[:3]) 3823 self.SetCameraVolume(self.current_coord[:3])
3816 3824
  3825 + def OnReset(self, evt):
  3826 + self.RemoveActor()
  3827 + self.LoadActor()
  3828 +
3817 def GetValue(self): 3829 def GetValue(self):
3818 return self.m_icp, self.point_coord, self.transformed_points 3830 return self.m_icp, self.point_coord, self.transformed_points
3819 3831
invesalius/gui/task_navigator.py
@@ -312,6 +312,7 @@ class NeuronavigationPanel(wx.Panel): @@ -312,6 +312,7 @@ class NeuronavigationPanel(wx.Panel):
312 self.m_icp = None 312 self.m_icp = None
313 self.fre = None 313 self.fre = None
314 self.icp_fre = None 314 self.icp_fre = None
  315 + self.icp = False
315 self.event = threading.Event() 316 self.event = threading.Event()
316 317
317 self.coord_queue = QueueCustom(maxsize=1) 318 self.coord_queue = QueueCustom(maxsize=1)
@@ -682,14 +683,19 @@ class NeuronavigationPanel(wx.Panel): @@ -682,14 +683,19 @@ class NeuronavigationPanel(wx.Panel):
682 if dialog.ShowModal() == wx.ID_OK: 683 if dialog.ShowModal() == wx.ID_OK:
683 self.m_icp, point_coord, transformed_points = dialog.GetValue() 684 self.m_icp, point_coord, transformed_points = dialog.GetValue()
684 #create markers 685 #create markers
685 - for i in range(len(point_coord)):  
686 - img_coord = point_coord[i][0],-point_coord[i][1],point_coord[i][2], 0, 0, 0  
687 - transf_coord = transformed_points[i][0],-transformed_points[i][1],transformed_points[i][2], 0, 0, 0  
688 - Publisher.sendMessage('Create marker', coord=img_coord, marker_id=None, colour=(1,0,0))  
689 - Publisher.sendMessage('Create marker', coord=transf_coord, marker_id=None, colour=(0,0,1))  
690 - self.checkicp.Enable(True)  
691 - self.checkicp.SetValue(True)  
692 - self.icp = True 686 + # for i in range(len(point_coord)):
  687 + # img_coord = point_coord[i][0],-point_coord[i][1],point_coord[i][2], 0, 0, 0
  688 + # transf_coord = transformed_points[i][0],-transformed_points[i][1],transformed_points[i][2], 0, 0, 0
  689 + # Publisher.sendMessage('Create marker', coord=img_coord, marker_id=None, colour=(1,0,0))
  690 + # Publisher.sendMessage('Create marker', coord=transf_coord, marker_id=None, colour=(0,0,1))
  691 + if self.m_icp is not None:
  692 + self.checkicp.Enable(True)
  693 + self.checkicp.SetValue(True)
  694 + self.icp = True
  695 + else:
  696 + self.checkicp.Enable(False)
  697 + self.checkicp.SetValue(False)
  698 + self.icp = False
693 699
694 return self.m_icp 700 return self.m_icp
695 701