Commit e0719844de4097b259c0584105eb71ddd0228277

Authored by tfmoraes
1 parent b702ed1b

ENH: Generating a event when threshold values is changing and one when changed.

Showing 1 changed file with 35 additions and 19 deletions   Show diff stats
invesalius/gui/widgets/gradient.py
... ... @@ -28,11 +28,17 @@ from wx.lib import intctrl
28 28  
29 29 PUSH_WIDTH = 7
30 30  
31   -myEVT_SLIDER_CHANGE = wx.NewEventType()
32   -EVT_SLIDER_CHANGE = wx.PyEventBinder(myEVT_SLIDER_CHANGE, 1)
  31 +myEVT_SLIDER_CHANGED = wx.NewEventType()
  32 +EVT_SLIDER_CHANGED = wx.PyEventBinder(myEVT_SLIDER_CHANGED, 1)
33 33  
34   -myEVT_THRESHOLD_CHANGE = wx.NewEventType()
35   -EVT_THRESHOLD_CHANGE = wx.PyEventBinder(myEVT_THRESHOLD_CHANGE, 1)
  34 +myEVT_SLIDER_CHANGING = wx.NewEventType()
  35 +EVT_SLIDER_CHANGING = wx.PyEventBinder(myEVT_SLIDER_CHANGING, 1)
  36 +
  37 +myEVT_THRESHOLD_CHANGED = wx.NewEventType()
  38 +EVT_THRESHOLD_CHANGED = wx.PyEventBinder(myEVT_THRESHOLD_CHANGED, 1)
  39 +
  40 +myEVT_THRESHOLD_CHANGING = wx.NewEventType()
  41 +EVT_THRESHOLD_CHANGING = wx.PyEventBinder(myEVT_THRESHOLD_CHANGING, 1)
36 42  
37 43 class SliderEvent(wx.PyCommandEvent):
38 44 def __init__(self , evtType, id, minRange, maxRange, minValue, maxValue):
... ... @@ -150,7 +156,7 @@ class GradientSlider(wx.Panel):
150 156 self.minimun = value
151 157 self.min_position = x
152 158 self.Refresh()
153   - self._generate_event()
  159 + self._generate_event(myEVT_SLIDER_CHANGING)
154 160  
155 161 # The user is moving the second push (Max)
156 162 elif self.selected == 2:
... ... @@ -164,7 +170,7 @@ class GradientSlider(wx.Panel):
164 170 self.maximun = value
165 171 self.max_position = x
166 172 self.Refresh()
167   - self._generate_event()
  173 + self._generate_event(myEVT_SLIDER_CHANGING)
168 174  
169 175 # The user is moving the slide.
170 176 elif self.selected == 3:
... ... @@ -191,7 +197,7 @@ class GradientSlider(wx.Panel):
191 197 self.CalculateControlPositions()
192 198  
193 199 self.Refresh()
194   - self._generate_event()
  200 + self._generate_event(myEVT_SLIDER_CHANGING)
195 201 evt.Skip()
196 202  
197 203  
... ... @@ -207,7 +213,9 @@ class GradientSlider(wx.Panel):
207 213 evt.Skip()
208 214  
209 215 def OnRelease(self, evt):
210   - self.selected = 0
  216 + if self.selected:
  217 + self.selected = 0
  218 + self._generate_event(myEVT_SLIDER_CHANGED)
211 219 evt.Skip()
212 220  
213 221 def OnSize(self, evt):
... ... @@ -294,8 +302,8 @@ class GradientSlider(wx.Panel):
294 302 def GetMinValue(self):
295 303 return self.minimun
296 304  
297   - def _generate_event(self):
298   - evt = SliderEvent(myEVT_SLIDER_CHANGE, self.GetId(), self.min_range,
  305 + def _generate_event(self, event):
  306 + evt = SliderEvent(event, self.GetId(), self.min_range,
299 307 self.max_range, self.minimun, self.maximun)
300 308 self.GetEventHandler().ProcessEvent(evt)
301 309  
... ... @@ -341,7 +349,8 @@ class GradientCtrl(wx.Panel):
341 349 self.sizer.Add(sizer, 1, wx.EXPAND)
342 350  
343 351 def _bind_events_wx(self):
344   - self.gradient_slider.Bind(EVT_SLIDER_CHANGE, self.OnSlider)
  352 + self.gradient_slider.Bind(EVT_SLIDER_CHANGING, self.OnSliding)
  353 + self.gradient_slider.Bind(EVT_SLIDER_CHANGED, self.OnSlider)
345 354  
346 355 # self.spin_min.Bind(wx.lib.intctrl.EVT_INT, self.ChangeMinValue)
347 356 self.spin_min.Bind(wx.EVT_KILL_FOCUS, self._FireSpinMinChange)
... ... @@ -358,21 +367,28 @@ class GradientCtrl(wx.Panel):
358 367 self.spin_max.SetValue(evt.maximun)
359 368 self.minimun = evt.minimun
360 369 self.maximun = evt.maximun
361   - self._GenerateEvent()
  370 + self._GenerateEvent(myEVT_THRESHOLD_CHANGED)
  371 +
  372 + def OnSliding(self, evt):
  373 + self.spin_min.SetValue(evt.minimun)
  374 + self.spin_max.SetValue(evt.maximun)
  375 + self.minimun = evt.minimun
  376 + self.maximun = evt.maximun
  377 + self._GenerateEvent(myEVT_THRESHOLD_CHANGING)
362 378  
363 379 def _FireSpinMinChange(self, evt):
364 380 value = int(self.spin_min.GetValue())
365 381 if value != self.GetMinValue():
366 382 self.gradient_slider.SetMinimun(value)
367 383 self.minimun = value
368   - self._GenerateEvent()
  384 + self._GenerateEvent(myEVT_THRESHOLD_CHANGE)
369 385  
370 386 def _FireSpinMaxChange(self, evt):
371 387 value = int(self.spin_max.GetValue())
372 388 if value != self.GetMaxValue():
373 389 self.gradient_slider.SetMaximun(value)
374 390 self.maximun = value
375   - self._GenerateEvent()
  391 + self._GenerateEvent(myEVT_THRESHOLD_CHANGE)
376 392  
377 393 def OnMinMouseWheel(self, e):
378 394 v = self.GetMinValue() + e.GetWheelRotation()/e.GetWheelDelta()
... ... @@ -416,14 +432,14 @@ class GradientCtrl(wx.Panel):
416 432 print "ChangeMinValue", self.slided
417 433 if not self.slided:
418 434 self.gradient_slider.SetMinValue(int(self.spin_min.GetValue()))
419   - self._GenerateEvent()
  435 + self._GenerateEvent(myEVT_THRESHOLD_CHANGE)
420 436  
421 437 def ChangeMaxValue(self, e):
422   - # Why do I need to change slide min value if it has been changed for
  438 + # Why do I need to change slide max value if it has been changed for
423 439 # the user?
424 440 if not self.slided:
425 441 self.gradient_slider.SetMaxValue(int(self.spin_max.GetValue()))
426   - self._GenerateEvent()
  442 + self._GenerateEvent(myEVT_THRESHOLD_CHANGE)
427 443  
428 444 def GetMaxValue(self):
429 445 return self.maximun
... ... @@ -431,7 +447,7 @@ class GradientCtrl(wx.Panel):
431 447 def GetMinValue(self):
432 448 return self.minimun
433 449  
434   - def _GenerateEvent(self):
435   - evt = SliderEvent(myEVT_THRESHOLD_CHANGE, self.GetId(), self.min_range,
  450 + def _GenerateEvent(self, event):
  451 + evt = SliderEvent(event, self.GetId(), self.min_range,
436 452 self.max_range, self.minimun, self.maximun)
437 453 self.GetEventHandler().ProcessEvent(evt)
... ...