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,11 +20,9 @@
20 # detalhes. 20 # detalhes.
21 #-------------------------------------------------------------------------- 21 #--------------------------------------------------------------------------
22 22
23 -import array  
24 import sys 23 import sys
25 24
26 import numpy 25 import numpy
27 -import vtk  
28 import wx 26 import wx
29 import wx.lib.intctrl 27 import wx.lib.intctrl
30 import wx.lib.pubsub as ps 28 import wx.lib.pubsub as ps
@@ -248,13 +246,13 @@ class SliderControl(object): @@ -248,13 +246,13 @@ class SliderControl(object):
248 self.SliderData.minRange))) 246 self.SliderData.minRange)))
249 247
250 def SetMaxPointByMaxValue(self): 248 def SetMaxPointByMaxValue(self):
251 - proportion = self.WindowWidth/float(self.SliderData.GetRange()) 249 + # proportion = self.WindowWidth/float(self.SliderData.GetRange())
252 #self.SetMaxPoint(int((self.SliderData.GetMaxValue() \ 250 #self.SetMaxPoint(int((self.SliderData.GetMaxValue() \
253 # -self.SliderData.minRange)*proportion)) 251 # -self.SliderData.minRange)*proportion))
254 self.MaxBorder.pos = self.MaxPoint 252 self.MaxBorder.pos = self.MaxPoint
255 253
256 def SetMinPointByMinValue(self): 254 def SetMinPointByMinValue(self):
257 - proportion = self.WindowWidth/float(self.SliderData.GetRange()) 255 + # proportion = self.WindowWidth/float(self.SliderData.GetRange())
258 #self.SetMinPoint(int((self.SliderData.GetMinValue() \ 256 #self.SetMinPoint(int((self.SliderData.GetMinValue() \
259 # -self.SliderData.minRange)*proportion)) 257 # -self.SliderData.minRange)*proportion))
260 self.MinBorder.pos = self.MinPoint 258 self.MinBorder.pos = self.MinPoint
@@ -450,7 +448,7 @@ class GradientPanel(wx.Panel): @@ -450,7 +448,7 @@ class GradientPanel(wx.Panel):
450 if self.GetMin() >= self.GetMax(): 448 if self.GetMin() >= self.GetMax():
451 self.SetMinValue(self.GetMax()-1) 449 self.SetMinValue(self.GetMax()-1)
452 self.Slider.SetMinPointByMinValue() 450 self.Slider.SetMinPointByMinValue()
453 - dc = wx.ClientDC(self) 451 + # dc = wx.ClientDC(self)
454 evt = SliderEvent(myEVT_SLIDER_CHANGE, self.GetId()) 452 evt = SliderEvent(myEVT_SLIDER_CHANGE, self.GetId())
455 self.GetEventHandler().ProcessEvent(evt) 453 self.GetEventHandler().ProcessEvent(evt)
456 self.Refresh() 454 self.Refresh()
@@ -517,14 +515,14 @@ class GradientSlider(wx.Panel): @@ -517,14 +515,14 @@ class GradientSlider(wx.Panel):
517 child.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)""" 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 #self.SpinMin.SetLimited(True) 519 #self.SpinMin.SetLimited(True)
522 self.SpinMin.SetBounds(self.SliderData.minRange, self.SliderData.maxRange) 520 self.SpinMin.SetBounds(self.SliderData.minRange, self.SliderData.maxRange)
523 if sys.platform != 'win32': 521 if sys.platform != 'win32':
524 self.SpinMin.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) 522 self.SpinMin.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)
525 self.SpinMin.SetValue(self.SliderData.minValue) 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 #self.SpinMax.SetLimited(True) 526 #self.SpinMax.SetLimited(True)
529 self.SpinMax.SetBounds(self.SliderData.minRange, self.SliderData.maxRange) 527 self.SpinMax.SetBounds(self.SliderData.minRange, self.SliderData.maxRange)
530 if sys.platform != 'win32': 528 if sys.platform != 'win32':
@@ -541,12 +539,29 @@ class GradientSlider(wx.Panel): @@ -541,12 +539,29 @@ class GradientSlider(wx.Panel):
541 539
542 def _DoBinds(self): 540 def _DoBinds(self):
543 self.SpinMin.Bind(wx.lib.intctrl.EVT_INT, self.ChangeMinValue) 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 self.SpinMax.Bind(wx.lib.intctrl.EVT_INT, self.ChangeMaxValue) 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 self.SpinMax.Bind(wx.EVT_MOUSEWHEEL, self.OnMaxMouseWheel) 549 self.SpinMax.Bind(wx.EVT_MOUSEWHEEL, self.OnMaxMouseWheel)
547 - self.SpinMin.Bind(wx.EVT_MOUSEWHEEL, self.OnMinMouseWheel) 550 +
548 self.Bind(EVT_SLIDER_CHANGE, self.OnSlider, self.GradientPanel) 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 def OnMinMouseWheel(self, e): 565 def OnMinMouseWheel(self, e):
551 v = self.GetMinValue() + e.GetWheelRotation()/e.GetWheelDelta() 566 v = self.GetMinValue() + e.GetWheelRotation()/e.GetWheelDelta()
552 self.SetMinValue(v) 567 self.SetMinValue(v)
@@ -558,7 +573,7 @@ class GradientSlider(wx.Panel): @@ -558,7 +573,7 @@ class GradientSlider(wx.Panel):
558 def ChangeMinValue(self, e): 573 def ChangeMinValue(self, e):
559 # Why do I need to change slide min value if it has been changed for 574 # Why do I need to change slide min value if it has been changed for
560 # the user? 575 # the user?
561 - 576 + print "ChangeMinValue", self.slided
562 if not self.slided: 577 if not self.slided:
563 self.GradientPanel.SetMinValue(int(self.SpinMin.GetValue())) 578 self.GradientPanel.SetMinValue(int(self.SpinMin.GetValue()))
564 self._GenerateEvent() 579 self._GenerateEvent()