Commit bc5f5b372b02519f5cdffa7c7e806c86f5b3c6e7
Committed by
GitHub
1 parent
9de68587
Exists in
master
MOD: Remove 'Disconnect tracker' option from tracker dropdown menu (#309)
Showing
3 changed files
with
46 additions
and
102 deletions
Show diff stats
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') | ... | ... |