From 8a14b3092ec83e5547c8ec32bb75b1107cd83a15 Mon Sep 17 00:00:00 2001 From: Olli-Pekka Kahilakoski Date: Thu, 7 Oct 2021 11:51:12 +0300 Subject: [PATCH] FIX: Using pedal for setting fiducials --- invesalius/gui/dialogs.py | 11 ++++++++--- invesalius/gui/task_navigator.py | 14 ++++++++++---- invesalius/navigation/navigation.py | 4 ++-- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/invesalius/gui/dialogs.py b/invesalius/gui/dialogs.py index e56f7b5..ef95545 100644 --- a/invesalius/gui/dialogs.py +++ b/invesalius/gui/dialogs.py @@ -3556,8 +3556,6 @@ class ObjectCalibrationDialog(wx.Dialog): def set_fiducial_callback(state): if state: Publisher.sendMessage('Set object fiducial', fiducial_index=index) - if self.pedal_connection is not None: - self.pedal_connection.remove_callback('fiducial') ctrl.SetValue(False) self.object_fiducial_being_set = None @@ -3566,10 +3564,17 @@ class ObjectCalibrationDialog(wx.Dialog): self.object_fiducial_being_set = index if self.pedal_connection is not None: - self.pedal_connection.add_callback('fiducial', set_fiducial_callback) + self.pedal_connection.add_callback( + name='fiducial', + callback=set_fiducial_callback, + remove_when_released=True, + ) else: set_fiducial_callback(True) + if self.pedal_connection is not None: + self.pedal_connection.remove_callback(name='fiducial') + def SetObjectFiducial(self, fiducial_index): coord, coord_raw = self.tracker.GetTrackerCoordinates( # XXX: Always use static reference mode when getting the coordinates. This is what the diff --git a/invesalius/gui/task_navigator.py b/invesalius/gui/task_navigator.py index bbfd0e9..b048d45 100644 --- a/invesalius/gui/task_navigator.py +++ b/invesalius/gui/task_navigator.py @@ -425,7 +425,7 @@ class NeuronavigationPanel(wx.Panel): checkbox_pedal_pressed.Enable(False) checkbox_pedal_pressed.SetToolTip(tooltip) - pedal_connection.add_callback('gui', checkbox_pedal_pressed.SetValue) + pedal_connection.add_callback(name='gui', callback=checkbox_pedal_pressed.SetValue) self.checkbox_pedal_pressed = checkbox_pedal_pressed else: @@ -688,19 +688,25 @@ class NeuronavigationPanel(wx.Panel): if state: fiducial_name = const.TRACKER_FIDUCIALS[n]['fiducial_name'] Publisher.sendMessage('Set tracker fiducial', fiducial_name=fiducial_name) - if self.pedal_connection is not None: - self.pedal_connection.remove_callback('fiducial') ctrl.SetValue(False) self.tracker_fiducial_being_set = None if ctrl.GetValue(): self.tracker_fiducial_being_set = n + if self.pedal_connection is not None: - self.pedal_connection.add_callback('fiducial', set_fiducial_callback) + self.pedal_connection.add_callback( + name='fiducial', + callback=set_fiducial_callback, + remove_when_released=True, + ) else: set_fiducial_callback(True) + if self.pedal_connection is not None: + self.pedal_connection.remove_callback(name='fiducial') + def OnStopNavigation(self): select_tracker_elem = self.select_tracker_elem choice_ref = self.choice_ref diff --git a/invesalius/navigation/navigation.py b/invesalius/navigation/navigation.py index 884ce19..5ab11c6 100644 --- a/invesalius/navigation/navigation.py +++ b/invesalius/navigation/navigation.py @@ -313,13 +313,13 @@ class Navigation(): # del jobs if self.pedal_connection is not None: - self.pedal_connection.add_callback('navigation', self.PedalStateChanged) + self.pedal_connection.add_callback(name='navigation', callback=self.PedalStateChanged) def StopNavigation(self): self.event.set() if self.pedal_connection is not None: - self.pedal_connection.remove_callback('navigation') + self.pedal_connection.remove_callback(name='navigation') self.coord_queue.clear() self.coord_queue.join() -- libgit2 0.21.2