Commit 723af25db2bb44fcf28a95c21a824207e9633afc

Authored by Renan
Committed by Thiago Franco de Moraes
1 parent b8381c75

Remove tracker when InVesalius is closed (#75)

* remove tracker when invesalius is closed

* Fix polhemus connection warning
-added msg for statusbar when try to disconnect tracker

* Standardization
invesalius/data/coordinates.py
... ... @@ -51,7 +51,7 @@ def GetCoordinates(trck_init, trck_id, ref_mode):
51 51  
52 52 def ClaronCoord(trck_init, trck_id, ref_mode):
53 53 trck = trck_init[0]
54   - scale = 10. * np.array([1., 1.0, -1.0])
  54 + scale = np.array([1.0, 1.0, -1.0])
55 55 coord = None
56 56 k = 0
57 57 # TODO: try to replace while and use some Claron internal computation
... ...
invesalius/data/trackers.py
... ... @@ -123,6 +123,8 @@ def PlhWrapperConnection():
123 123 if trck_check:
124 124 # First run is necessary to discard the first coord collection
125 125 trck_init.Run()
  126 + else:
  127 + trck_init = trck_check
126 128 except:
127 129 print 'Could not connect to Polhemus via wrapper.'
128 130  
... ... @@ -195,6 +197,8 @@ def DisconnectTracker(tracker_id):
195 197  
196 198 :param tracker_id: ID of tracking device.
197 199 """
  200 + from wx.lib.pubsub import pub as Publisher
  201 + Publisher.sendMessage('Update status text in GUI', _("Disconnecting tracker ..."))
198 202 trck_init = None
199 203 # TODO: create individual functions to disconnect each other device, e.g. Polhemus.
200 204 if tracker_id == 1:
... ... @@ -202,6 +206,7 @@ def DisconnectTracker(tracker_id):
202 206 import pyclaron
203 207 pyclaron.pyclaron().Close()
204 208 lib_mode = 'wrapper'
  209 + print 'Claron tracker disconnected.'
205 210 except ImportError:
206 211 lib_mode = 'error'
207 212 print 'The ClaronTracker library is not installed.'
... ... @@ -211,6 +216,7 @@ def DisconnectTracker(tracker_id):
211 216 import polhemus
212 217 polhemus.polhemus().Close()
213 218 lib_mode = 'wrapper'
  219 + print 'Polhemus tracker disconnected.'
214 220 except ImportError:
215 221 lib_mode = 'error'
216 222 print 'The polhemus library is not installed.'
... ... @@ -219,4 +225,6 @@ def DisconnectTracker(tracker_id):
219 225 print 'Debug tracker disconnected.'
220 226 lib_mode = 'debug'
221 227  
  228 + Publisher.sendMessage('Update status text in GUI', _("Ready"))
  229 +
222 230 return trck_init, lib_mode
223 231 \ No newline at end of file
... ...
invesalius/gui/frame.py
... ... @@ -382,6 +382,7 @@ class Frame(wx.Frame):
382 382 Close all project data.
383 383 """
384 384 Publisher.sendMessage('Close Project')
  385 + Publisher.sendMessage('Disconnect tracker')
385 386 s = ses.Session()
386 387 if not s.IsOpen() or not s.project_path:
387 388 Publisher.sendMessage('Exit')
... ...
invesalius/gui/task_navigator.py
... ... @@ -312,6 +312,7 @@ class NeuronavigationPanel(wx.Panel):
312 312 Publisher.subscribe(self.LoadImageFiducials, 'Load image fiducials')
313 313 Publisher.subscribe(self.UpdateTriggerState, 'Update trigger state')
314 314 Publisher.subscribe(self.UpdateImageCoordinates, 'Set ball reference position')
  315 + Publisher.subscribe(self.OnDisconnectTracker, 'Disconnect tracker')
315 316  
316 317 def LoadImageFiducials(self, pubsub_evt):
317 318 marker_id = pubsub_evt.data[0]
... ... @@ -341,6 +342,10 @@ class NeuronavigationPanel(wx.Panel):
341 342 def UpdateTriggerState (self, pubsub_evt):
342 343 self.trigger_state = pubsub_evt.data
343 344  
  345 + def OnDisconnectTracker(self, pubsub_evt):
  346 + if self.tracker_id:
  347 + dt.TrackerConnection(self.tracker_id, 'disconnect')
  348 +
344 349 def OnChoiceTracker(self, evt, ctrl):
345 350 Publisher.sendMessage('Update status text in GUI', _("Configuring tracker ..."))
346 351 if evt:
... ...