Commit e5314ee924015175e88b62a747c6a3aca9aea029

Authored by tfmoraes
1 parent 3acfe7b5

Changing threshold by keyboard in gradient widget wasn't working

Changing threshold by keyboard fires a event only when a ENTER is pressed or
when gradient fields lost focus.
Showing 1 changed file with 25 additions and 10 deletions   Show diff stats
invesalius/gui/widgets/gradient.py
... ... @@ -20,11 +20,9 @@
20 20 # detalhes.
21 21 #--------------------------------------------------------------------------
22 22  
23   -import array
24 23 import sys
25 24  
26 25 import numpy
27   -import vtk
28 26 import wx
29 27 import wx.lib.intctrl
30 28 import wx.lib.pubsub as ps
... ... @@ -248,13 +246,13 @@ class SliderControl(object):
248 246 self.SliderData.minRange)))
249 247  
250 248 def SetMaxPointByMaxValue(self):
251   - proportion = self.WindowWidth/float(self.SliderData.GetRange())
  249 + # proportion = self.WindowWidth/float(self.SliderData.GetRange())
252 250 #self.SetMaxPoint(int((self.SliderData.GetMaxValue() \
253 251 # -self.SliderData.minRange)*proportion))
254 252 self.MaxBorder.pos = self.MaxPoint
255 253  
256 254 def SetMinPointByMinValue(self):
257   - proportion = self.WindowWidth/float(self.SliderData.GetRange())
  255 + # proportion = self.WindowWidth/float(self.SliderData.GetRange())
258 256 #self.SetMinPoint(int((self.SliderData.GetMinValue() \
259 257 # -self.SliderData.minRange)*proportion))
260 258 self.MinBorder.pos = self.MinPoint
... ... @@ -450,7 +448,7 @@ class GradientPanel(wx.Panel):
450 448 if self.GetMin() >= self.GetMax():
451 449 self.SetMinValue(self.GetMax()-1)
452 450 self.Slider.SetMinPointByMinValue()
453   - dc = wx.ClientDC(self)
  451 + # dc = wx.ClientDC(self)
454 452 evt = SliderEvent(myEVT_SLIDER_CHANGE, self.GetId())
455 453 self.GetEventHandler().ProcessEvent(evt)
456 454 self.Refresh()
... ... @@ -517,14 +515,14 @@ class GradientSlider(wx.Panel):
517 515 child.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)"""
518 516  
519 517  
520   - self.SpinMin = wx.lib.intctrl.IntCtrl(self, size=(40,20))
  518 + self.SpinMin = wx.lib.intctrl.IntCtrl(self, size=(40,20), style=wx.TE_PROCESS_ENTER)
521 519 #self.SpinMin.SetLimited(True)
522 520 self.SpinMin.SetBounds(self.SliderData.minRange, self.SliderData.maxRange)
523 521 if sys.platform != 'win32':
524 522 self.SpinMin.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)
525 523 self.SpinMin.SetValue(self.SliderData.minValue)
526 524  
527   - self.SpinMax = wx.lib.intctrl.IntCtrl(self, size=(40,20))
  525 + self.SpinMax = wx.lib.intctrl.IntCtrl(self, size=(40,20), style=wx.TE_PROCESS_ENTER)
528 526 #self.SpinMax.SetLimited(True)
529 527 self.SpinMax.SetBounds(self.SliderData.minRange, self.SliderData.maxRange)
530 528 if sys.platform != 'win32':
... ... @@ -541,12 +539,29 @@ class GradientSlider(wx.Panel):
541 539  
542 540 def _DoBinds(self):
543 541 self.SpinMin.Bind(wx.lib.intctrl.EVT_INT, self.ChangeMinValue)
  542 + self.SpinMin.Bind(wx.EVT_KILL_FOCUS, self._FireSpinMinChange)
  543 + self.SpinMin.Bind(wx.EVT_TEXT_ENTER, self._FireSpinMinChange)
  544 + self.SpinMin.Bind(wx.EVT_MOUSEWHEEL, self.OnMinMouseWheel)
  545 +
544 546 self.SpinMax.Bind(wx.lib.intctrl.EVT_INT, self.ChangeMaxValue)
545   - # Scroll over the min and max field
  547 + self.SpinMax.Bind(wx.EVT_KILL_FOCUS, self._FireSpinMaxChange)
  548 + self.SpinMax.Bind(wx.EVT_TEXT_ENTER, self._FireSpinMaxChange)
546 549 self.SpinMax.Bind(wx.EVT_MOUSEWHEEL, self.OnMaxMouseWheel)
547   - self.SpinMin.Bind(wx.EVT_MOUSEWHEEL, self.OnMinMouseWheel)
  550 +
548 551 self.Bind(EVT_SLIDER_CHANGE, self.OnSlider, self.GradientPanel)
549 552  
  553 + def _FireSpinMinChange(self, evt):
  554 + value = int(self.SpinMin.GetValue())
  555 + if value != self.GetMinValue():
  556 + self.GradientPanel.SetMinValue(value)
  557 + self._GenerateEvent()
  558 +
  559 + def _FireSpinMaxChange(self, evt):
  560 + value = int(self.SpinMax.GetValue())
  561 + if value != self.GetMaxValue():
  562 + self.GradientPanel.SetMaxValue(value)
  563 + self._GenerateEvent()
  564 +
550 565 def OnMinMouseWheel(self, e):
551 566 v = self.GetMinValue() + e.GetWheelRotation()/e.GetWheelDelta()
552 567 self.SetMinValue(v)
... ... @@ -558,7 +573,7 @@ class GradientSlider(wx.Panel):
558 573 def ChangeMinValue(self, e):
559 574 # Why do I need to change slide min value if it has been changed for
560 575 # the user?
561   -
  576 + print "ChangeMinValue", self.slided
562 577 if not self.slided:
563 578 self.GradientPanel.SetMinValue(int(self.SpinMin.GetValue()))
564 579 self._GenerateEvent()
... ...