Commit 849fd417bbfd673f44ca416d6906965bb56fb31e

Authored by Thiago Franco de Moraes
1 parent a30db684

Better clicked function

Showing 1 changed file with 21 additions and 4 deletions   Show diff stats
invesalius/data/styles.py
@@ -377,15 +377,16 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): @@ -377,15 +377,16 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle):
377 self._bind_events() 377 self._bind_events()
378 378
379 def _bind_events(self): 379 def _bind_events(self):
380 - self.AddObserver("LeftButtonPressEvent", self.OnInsertLinearMeasurePoint) 380 + self.AddObserver("LeftButtonPressEvent", self.OnInsertMeasurePoint)
381 self.AddObserver("LeftButtonReleaseEvent", self.OnReleaseMeasurePoint) 381 self.AddObserver("LeftButtonReleaseEvent", self.OnReleaseMeasurePoint)
382 self.AddObserver("MouseMoveEvent", self.OnMoveMeasurePoint) 382 self.AddObserver("MouseMoveEvent", self.OnMoveMeasurePoint)
383 383
384 - def OnInsertLinearMeasurePoint(self, obj, evt): 384 + def OnInsertMeasurePoint(self, obj, evt):
385 slice_number = self.slice_data.number 385 slice_number = self.slice_data.number
386 x, y, z = self._get_pos_clicked() 386 x, y, z = self._get_pos_clicked()
  387 + mx, my = self.viewer.interactor.GetEventPosition()
387 388
388 - selected = self._verify_clicked(x, y, z) 389 + selected = self._verify_clicked_display(mx, my)
389 if selected: 390 if selected:
390 self.selected = selected 391 self.selected = selected
391 else: 392 else:
@@ -416,7 +417,8 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): @@ -416,7 +417,8 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle):
416 Publisher.sendMessage('Reload actual slice %s' % self.orientation) 417 Publisher.sendMessage('Reload actual slice %s' % self.orientation)
417 418
418 else: 419 else:
419 - if self._verify_clicked(x, y, z): 420 + mx, my = self.viewer.interactor.GetEventPosition()
  421 + if self._verify_clicked_display(mx, my):
420 self.viewer.interactor.SetCursor(wx.StockCursor(wx.CURSOR_HAND)) 422 self.viewer.interactor.SetCursor(wx.StockCursor(wx.CURSOR_HAND))
421 else: 423 else:
422 self.viewer.interactor.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) 424 self.viewer.interactor.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT))
@@ -455,6 +457,21 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): @@ -455,6 +457,21 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle):
455 return (n, m, mr) 457 return (n, m, mr)
456 return None 458 return None
457 459
  460 + def _verify_clicked_display(self, x, y, max_dist=5.0):
  461 + slice_number = self.slice_data.number
  462 + max_dist = max_dist**2
  463 + coord = vtk.vtkCoordinate()
  464 + if slice_number in self.measures.measures[self._ori]:
  465 + for m, mr in self.measures.measures[self._ori][slice_number]:
  466 + if mr.IsComplete():
  467 + for n, p in enumerate(m.points):
  468 + coord.SetValue(p)
  469 + cx, cy = coord.GetComputedDisplayValue(self.viewer.slice_data.renderer)
  470 + dist = ((cx-x)**2 + (cy-y)**2)
  471 + if dist <= max_dist:
  472 + return (n, m, mr)
  473 + return None
  474 +
458 class AngularMeasureInteractorStyle(LinearMeasureInteractorStyle): 475 class AngularMeasureInteractorStyle(LinearMeasureInteractorStyle):
459 def __init__(self, viewer): 476 def __init__(self, viewer):
460 LinearMeasureInteractorStyle.__init__(self, viewer) 477 LinearMeasureInteractorStyle.__init__(self, viewer)