Commit bc5f5b372b02519f5cdffa7c7e806c86f5b3c6e7

Authored by okahilak
Committed by GitHub
1 parent 9de68587
Exists in master

MOD: Remove 'Disconnect tracker' option from tracker dropdown menu (#309)

app.py
... ... @@ -136,7 +136,7 @@ class Inv3SplashScreen(SplashScreen):
136 136 def __init__(self):
137 137 # Splash screen image will depend on currently language
138 138 lang = LANG
139   - self.locale = wx.Locale(wx.LANGUAGE_DEFAULT)
  139 + self.locale = wx.Locale(wx.LANGUAGE_ENGLISH)
140 140  
141 141 # Language information is available in session configuration
142 142 # file. First we need to check if this file exist, if now, it
... ...
invesalius/constants.py
... ... @@ -670,7 +670,6 @@ POLARISP4 = 7
670 670 OPTITRACK = 8
671 671 DEBUGTRACKRANDOM = 9
672 672 DEBUGTRACKAPPROACH = 10
673   -DISCTRACK = 11
674 673 DEFAULT_TRACKER = SELECT
675 674  
676 675 NDICOMPORT = b'COM1'
... ... @@ -680,7 +679,7 @@ TRACKERS = [_("Claron MicronTracker"),
680 679 _("Polhemus PATRIOT"), _("Camera tracker"),
681 680 _("NDI Polaris"), _("NDI Polaris P4"),
682 681 _("Optitrack"), _("Debug tracker (random)"),
683   - _("Debug tracker (approach)"), _("Disconnect tracker")]
  682 + _("Debug tracker (approach)")]
684 683  
685 684 STATIC_REF = 0
686 685 DYNAMIC_REF = 1
... ...
invesalius/gui/task_navigator.py
... ... @@ -475,77 +475,21 @@ class Tracker():
475 475 self.tracker_connected = False
476 476  
477 477 def SetTracker(self, new_tracker):
478   - if self.trk_init:
479   - trck = self.trk_init[0]
480   - else:
481   - trck = None
482   -
483   - # Conditions check if click was on current selection and if any other tracker
484   - # has been initialized before
485   - if new_tracker != const.DISCTRACK and trck:
486   - self.ResetTrackerFiducials()
487   - Publisher.sendMessage('Update status text in GUI',
488   - label=_("Disconnecting tracker..."))
489   - Publisher.sendMessage('Remove sensors ID')
490   - self.trk_init = dt.TrackerConnection(self.tracker_id, trck, 'disconnect')
491   - Publisher.sendMessage('Remove object data')
  478 + if new_tracker:
  479 + self.DisconnectTracker()
492 480  
493   - if not self.trk_init[0] and new_tracker:
494   - Publisher.sendMessage('Update status text in GUI',
495   - label=_("Tracker disconnected successfully"))
496   - self.trk_init = dt.TrackerConnection(new_tracker, None, 'connect')
497   - if not self.trk_init[0]:
498   - self.tracked_connected = False
499   - self.tracker_id = 0
500   -
501   - dlg.ShowNavigationTrackerWarning(self.tracker_id, self.trk_init[1])
502   - print("Tracker not connected!")
503   - else:
504   - self.tracked_connected = True
505   - self.tracker_id = new_tracker
506   -
507   - print("Tracker connected!")
508   -
509   - # TODO: const.DISCTRACK is not a tracker, so discoupling it from the actual trackers
510   - # would make this cleaner.
511   - #
512   - elif new_tracker == const.DISCTRACK:
513   - self.ResetTrackerFiducials()
514   - Publisher.sendMessage('Update status text in GUI',
515   - label=_("Disconnecting tracker ..."))
516   - Publisher.sendMessage('Remove sensors ID')
517   - Publisher.sendMessage('Remove object data')
518   - self.trk_init = dt.TrackerConnection(self.tracker_id, trck, 'disconnect')
  481 + self.trk_init = dt.TrackerConnection(new_tracker, None, 'connect')
519 482 if not self.trk_init[0]:
520   - dlg.ShowNavigationTrackerWarning(self.tracker_id, 'disconnect')
  483 + dlg.ShowNavigationTrackerWarning(self.tracker_id, self.trk_init[1])
521 484  
522   - self.tracked_connected = False
523 485 self.tracker_id = 0
524   -
525   - Publisher.sendMessage('Update status text in GUI',
526   - label=_("Tracker disconnected"))
527   -
528   - print("Tracker disconnected!")
  486 + self.tracker_connected = False
529 487 else:
530   - Publisher.sendMessage('Update status text in GUI',
531   - label=_("Tracker still connected"))
532   - print("Tracker still connected!")
  488 + self.tracker_id = new_tracker
  489 + self.tracker_connected = True
533 490  
534   - else:
535   - # If trk_init is None try to connect. If doesn't succeed show dialog.
536   - if new_tracker:
537   - self.trk_init = dt.TrackerConnection(new_tracker, None, 'connect')
538   - if not self.trk_init[0]:
539   - dlg.ShowNavigationTrackerWarning(self.tracker_id, self.trk_init[1])
540   -
541   - self.tracker_id = 0
542   - self.tracker_connected = False
543   - else:
544   - self.tracker_id = new_tracker
545   - self.tracker_connected = True
546   -
547   - Publisher.sendMessage('Update tracker initializer',
548   - nav_prop=(self.tracker_id, self.trk_init, self.ref_mode_id))
  491 + Publisher.sendMessage('Update tracker initializer',
  492 + nav_prop=(self.tracker_id, self.trk_init, self.ref_mode_id))
549 493  
550 494 def DisconnectTracker(self):
551 495 if self.tracker_connected:
... ... @@ -618,7 +562,7 @@ class Tracker():
618 562 def GetReferenceMode(self):
619 563 return self.ref_mode_id
620 564  
621   - def UpdateUI(self, selection_ctrl, numctrls_coord, txtctrl_fre):
  565 + def UpdateUI(self, selection_ctrl, numctrls_fiducial, txtctrl_fre):
622 566 if self.tracker_connected:
623 567 selection_ctrl.SetSelection(self.tracker_id)
624 568 else:
... ... @@ -629,7 +573,7 @@ class Tracker():
629 573 coord = self.tracker_fiducials[m, :]
630 574 for n in range(0, 3):
631 575 value = 0.0 if np.isnan(coord[n]) else float(coord[n])
632   - numctrls_coord[m][n].SetValue(value)
  576 + numctrls_fiducial[m][n].SetValue(value)
633 577  
634 578 txtctrl_fre.SetValue('')
635 579 txtctrl_fre.SetBackgroundColour('WHITE')
... ... @@ -712,8 +656,8 @@ class NeuronavigationPanel(wx.Panel):
712 656 self.nav_status = False
713 657  
714 658 # Initialize list of buttons and numctrls for wx objects
715   - self.btns_coord = [None, None, None, None, None, None]
716   - self.numctrls_coord = [[], [], [], [], [], []]
  659 + self.btns_set_fiducial = [None, None, None, None, None, None]
  660 + self.numctrls_fiducial = [[], [], [], [], [], []]
717 661  
718 662 # ComboBox for spatial tracker device selection
719 663 tracker_options = [_("Select tracker:")] + self.tracker.get_trackers()
... ... @@ -742,9 +686,9 @@ class NeuronavigationPanel(wx.Panel):
742 686 label = fiducial['label']
743 687 tip = fiducial['tip']
744 688  
745   - self.btns_coord[n] = wx.ToggleButton(self, button_id, label=label, size=wx.Size(45, 23))
746   - self.btns_coord[n].SetToolTip(wx.ToolTip(tip))
747   - self.btns_coord[n].Bind(wx.EVT_TOGGLEBUTTON, partial(self.OnImageFiducials, n))
  689 + self.btns_set_fiducial[n] = wx.ToggleButton(self, button_id, label=label, size=wx.Size(45, 23))
  690 + self.btns_set_fiducial[n].SetToolTip(wx.ToolTip(tip))
  691 + self.btns_set_fiducial[n].Bind(wx.EVT_TOGGLEBUTTON, partial(self.OnImageFiducials, n))
748 692  
749 693 # Push buttons for tracker fiducials
750 694 for n, fiducial in enumerate(const.TRACKER_FIDUCIALS):
... ... @@ -752,9 +696,9 @@ class NeuronavigationPanel(wx.Panel):
752 696 label = fiducial['label']
753 697 tip = fiducial['tip']
754 698  
755   - self.btns_coord[n + 3] = wx.Button(self, button_id, label=label, size=wx.Size(45, 23))
756   - self.btns_coord[n + 3].SetToolTip(wx.ToolTip(tip))
757   - self.btns_coord[n + 3].Bind(wx.EVT_BUTTON, partial(self.OnTrackerFiducials, n))
  699 + self.btns_set_fiducial[n + 3] = wx.Button(self, button_id, label=label, size=wx.Size(45, 23))
  700 + self.btns_set_fiducial[n + 3].SetToolTip(wx.ToolTip(tip))
  701 + self.btns_set_fiducial[n + 3].Bind(wx.EVT_BUTTON, partial(self.OnTrackerFiducials, n))
758 702  
759 703 # TODO: Find a better allignment between FRE, text and navigate button
760 704 txt_fre = wx.StaticText(self, -1, _('FRE:'))
... ... @@ -806,9 +750,9 @@ class NeuronavigationPanel(wx.Panel):
806 750 self.checkbox_pedal_pressed = None
807 751  
808 752 # Image and tracker coordinates number controls
809   - for m in range(len(self.btns_coord)):
  753 + for m in range(len(self.btns_set_fiducial)):
810 754 for n in range(3):
811   - self.numctrls_coord[m].append(
  755 + self.numctrls_fiducial[m].append(
812 756 wx.lib.masked.numctrl.NumCtrl(parent=self, integerWidth=4, fractionWidth=1))
813 757  
814 758 # Sizer to group all GUI objects
... ... @@ -818,12 +762,12 @@ class NeuronavigationPanel(wx.Panel):
818 762  
819 763 coord_sizer = wx.GridBagSizer(hgap=5, vgap=5)
820 764  
821   - for m in range(len(self.btns_coord)):
822   - coord_sizer.Add(self.btns_coord[m], pos=wx.GBPosition(m, 0))
  765 + for m in range(len(self.btns_set_fiducial)):
  766 + coord_sizer.Add(self.btns_set_fiducial[m], pos=wx.GBPosition(m, 0))
823 767 for n in range(3):
824   - coord_sizer.Add(self.numctrls_coord[m][n], pos=wx.GBPosition(m, n+1))
  768 + coord_sizer.Add(self.numctrls_fiducial[m][n], pos=wx.GBPosition(m, n+1))
825 769 if m in range(1, 6):
826   - self.numctrls_coord[m][n].SetEditable(False)
  770 + self.numctrls_fiducial[m][n].SetEditable(False)
827 771  
828 772 nav_sizer = wx.FlexGridSizer(rows=1, cols=5, hgap=5, vgap=5)
829 773 nav_sizer.AddMany([(txt_fre, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL),
... ... @@ -885,15 +829,15 @@ class NeuronavigationPanel(wx.Panel):
885 829 fiducial_index = fiducial['fiducial_index']
886 830 fiducial_name = fiducial['fiducial_name']
887 831  
888   - if self.btns_coord[fiducial_index].GetValue():
  832 + if self.btns_set_fiducial[fiducial_index].GetValue():
889 833 print("Fiducial {} already set, not resetting".format(marker_id))
890 834 return
891 835  
892 836 Publisher.sendMessage('Set image fiducial', fiducial_name=fiducial_name, coord=coord[0:3])
893 837  
894   - self.btns_coord[fiducial_index].SetValue(True)
  838 + self.btns_set_fiducial[fiducial_index].SetValue(True)
895 839 for m in [0, 1, 2]:
896   - self.numctrls_coord[fiducial_index][m].SetValue(coord[m])
  840 + self.numctrls_fiducial[fiducial_index][m].SetValue(coord[m])
897 841  
898 842 def GetFiducialByAttribute(self, fiducials, attribute_name, attribute_value):
899 843 found = [fiducial for fiducial in fiducials if fiducial[attribute_name] == attribute_value]
... ... @@ -918,7 +862,7 @@ class NeuronavigationPanel(wx.Panel):
918 862 self.tracker.SetTrackerFiducial(fiducial_index)
919 863  
920 864 self.ResetICP()
921   - self.tracker.UpdateUI(self.select_tracker_elem, self.numctrls_coord[3:6], self.txtctrl_fre)
  865 + self.tracker.UpdateUI(self.select_tracker_elem, self.numctrls_fiducial[3:6], self.txtctrl_fre)
922 866  
923 867  
924 868 def UpdatePeelVisualization(self, data):
... ... @@ -967,9 +911,9 @@ class NeuronavigationPanel(wx.Panel):
967 911 self.navigation.current_coord = position
968 912  
969 913 for m in [0, 1, 2]:
970   - if not self.btns_coord[m].GetValue():
  914 + if not self.btns_set_fiducial[m].GetValue():
971 915 for n in [0, 1, 2]:
972   - self.numctrls_coord[m][n].SetValue(float(position[n]))
  916 + self.numctrls_fiducial[m][n].SetValue(float(position[n]))
973 917  
974 918 def UpdateObjectRegistration(self, data=None):
975 919 self.navigation.obj_reg = data
... ... @@ -988,6 +932,7 @@ class NeuronavigationPanel(wx.Panel):
988 932 def OnDisconnectTracker(self):
989 933 self.tracker.DisconnectTracker()
990 934 self.ResetICP()
  935 + self.tracker.UpdateUI(self.select_tracker_elem, self.numctrls_fiducial[3:6], self.txtctrl_fre)
991 936  
992 937 def OnChooseTracker(self, evt, ctrl):
993 938 Publisher.sendMessage('Update status text in GUI',
... ... @@ -995,11 +940,11 @@ class NeuronavigationPanel(wx.Panel):
995 940 if hasattr(evt, 'GetSelection'):
996 941 choice = evt.GetSelection()
997 942 else:
998   - choice = const.DISCTRACK
  943 + choice = None
999 944  
1000 945 self.tracker.SetTracker(choice)
1001 946 self.ResetICP()
1002   - self.tracker.UpdateUI(ctrl, self.numctrls_coord[3:6], self.txtctrl_fre)
  947 + self.tracker.UpdateUI(ctrl, self.numctrls_fiducial[3:6], self.txtctrl_fre)
1003 948  
1004 949 Publisher.sendMessage('Update status text in GUI', label=_("Ready"))
1005 950  
... ... @@ -1015,16 +960,16 @@ class NeuronavigationPanel(wx.Panel):
1015 960 # XXX: This is still a bit hard to read, could be cleaned up.
1016 961 marker_id = list(const.BTNS_IMG_MARKERS[evt.GetId()].values())[0]
1017 962  
1018   - if self.btns_coord[n].GetValue():
1019   - coord = self.numctrls_coord[n][0].GetValue(),\
1020   - self.numctrls_coord[n][1].GetValue(),\
1021   - self.numctrls_coord[n][2].GetValue(), 0, 0, 0
  963 + if self.btns_set_fiducial[n].GetValue():
  964 + coord = self.numctrls_fiducial[n][0].GetValue(),\
  965 + self.numctrls_fiducial[n][1].GetValue(),\
  966 + self.numctrls_fiducial[n][2].GetValue(), 0, 0, 0
1022 967  
1023 968 Publisher.sendMessage('Set image fiducial', fiducial_name=fiducial_name, coord=coord[0:3])
1024 969 Publisher.sendMessage('Create marker', coord=coord, marker_id=marker_id)
1025 970 else:
1026 971 for m in [0, 1, 2]:
1027   - self.numctrls_coord[n][m].SetValue(float(self.current_coord[m]))
  972 + self.numctrls_fiducial[n][m].SetValue(float(self.current_coord[m]))
1028 973  
1029 974 Publisher.sendMessage('Set image fiducial', fiducial_name=fiducial_name, coord=np.nan)
1030 975 Publisher.sendMessage('Delete fiducial marker', marker_id=marker_id)
... ... @@ -1043,7 +988,7 @@ class NeuronavigationPanel(wx.Panel):
1043 988 choice_ref.Enable(True)
1044 989 select_tracker_elem.Enable(True)
1045 990  
1046   - for btn_c in self.btns_coord:
  991 + for btn_c in self.btns_set_fiducial:
1047 992 btn_c.Enable(True)
1048 993  
1049 994 def UpdateFiducialRegistrationError(self):
... ... @@ -1078,7 +1023,7 @@ class NeuronavigationPanel(wx.Panel):
1078 1023 # Disable all navigation buttons.
1079 1024 choice_ref.Enable(False)
1080 1025 select_tracker_elem.Enable(False)
1081   - for btn_c in self.btns_coord:
  1026 + for btn_c in self.btns_set_fiducial:
1082 1027 btn_c.Enable(False)
1083 1028  
1084 1029 self.navigation.StartNavigation(self.tracker)
... ... @@ -1116,17 +1061,17 @@ class NeuronavigationPanel(wx.Panel):
1116 1061  
1117 1062 def ResetUI(self):
1118 1063 for m in range(0, 3):
1119   - self.btns_coord[m].SetValue(False)
  1064 + self.btns_set_fiducial[m].SetValue(False)
1120 1065 for n in range(0, 3):
1121   - self.numctrls_coord[m][n].SetValue(0.0)
  1066 + self.numctrls_fiducial[m][n].SetValue(0.0)
1122 1067  
1123 1068 def OnCheckboxICP(self, evt, ctrl):
1124 1069 self.icp.SetICP(self.navigation, ctrl.GetValue())
1125 1070 self.UpdateFiducialRegistrationError()
1126 1071  
1127 1072 def OnCloseProject(self):
1128   - self.OnChooseTracker(False, self.select_tracker_elem)
1129 1073 self.ResetUI()
  1074 + Publisher.sendMessage('Disconnect tracker')
1130 1075 Publisher.sendMessage('Update object registration')
1131 1076 Publisher.sendMessage('Update track object state', flag=False, obj_name=False)
1132 1077 Publisher.sendMessage('Delete all markers')
... ...