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,11 +28,17 @@ from wx.lib import intctrl
28 28
29 PUSH_WIDTH = 7 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 class SliderEvent(wx.PyCommandEvent): 43 class SliderEvent(wx.PyCommandEvent):
38 def __init__(self , evtType, id, minRange, maxRange, minValue, maxValue): 44 def __init__(self , evtType, id, minRange, maxRange, minValue, maxValue):
@@ -150,7 +156,7 @@ class GradientSlider(wx.Panel): @@ -150,7 +156,7 @@ class GradientSlider(wx.Panel):
150 self.minimun = value 156 self.minimun = value
151 self.min_position = x 157 self.min_position = x
152 self.Refresh() 158 self.Refresh()
153 - self._generate_event() 159 + self._generate_event(myEVT_SLIDER_CHANGING)
154 160
155 # The user is moving the second push (Max) 161 # The user is moving the second push (Max)
156 elif self.selected == 2: 162 elif self.selected == 2:
@@ -164,7 +170,7 @@ class GradientSlider(wx.Panel): @@ -164,7 +170,7 @@ class GradientSlider(wx.Panel):
164 self.maximun = value 170 self.maximun = value
165 self.max_position = x 171 self.max_position = x
166 self.Refresh() 172 self.Refresh()
167 - self._generate_event() 173 + self._generate_event(myEVT_SLIDER_CHANGING)
168 174
169 # The user is moving the slide. 175 # The user is moving the slide.
170 elif self.selected == 3: 176 elif self.selected == 3:
@@ -191,7 +197,7 @@ class GradientSlider(wx.Panel): @@ -191,7 +197,7 @@ class GradientSlider(wx.Panel):
191 self.CalculateControlPositions() 197 self.CalculateControlPositions()
192 198
193 self.Refresh() 199 self.Refresh()
194 - self._generate_event() 200 + self._generate_event(myEVT_SLIDER_CHANGING)
195 evt.Skip() 201 evt.Skip()
196 202
197 203
@@ -207,7 +213,9 @@ class GradientSlider(wx.Panel): @@ -207,7 +213,9 @@ class GradientSlider(wx.Panel):
207 evt.Skip() 213 evt.Skip()
208 214
209 def OnRelease(self, evt): 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 evt.Skip() 219 evt.Skip()
212 220
213 def OnSize(self, evt): 221 def OnSize(self, evt):
@@ -294,8 +302,8 @@ class GradientSlider(wx.Panel): @@ -294,8 +302,8 @@ class GradientSlider(wx.Panel):
294 def GetMinValue(self): 302 def GetMinValue(self):
295 return self.minimun 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 self.max_range, self.minimun, self.maximun) 307 self.max_range, self.minimun, self.maximun)
300 self.GetEventHandler().ProcessEvent(evt) 308 self.GetEventHandler().ProcessEvent(evt)
301 309
@@ -341,7 +349,8 @@ class GradientCtrl(wx.Panel): @@ -341,7 +349,8 @@ class GradientCtrl(wx.Panel):
341 self.sizer.Add(sizer, 1, wx.EXPAND) 349 self.sizer.Add(sizer, 1, wx.EXPAND)
342 350
343 def _bind_events_wx(self): 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 # self.spin_min.Bind(wx.lib.intctrl.EVT_INT, self.ChangeMinValue) 355 # self.spin_min.Bind(wx.lib.intctrl.EVT_INT, self.ChangeMinValue)
347 self.spin_min.Bind(wx.EVT_KILL_FOCUS, self._FireSpinMinChange) 356 self.spin_min.Bind(wx.EVT_KILL_FOCUS, self._FireSpinMinChange)
@@ -358,21 +367,28 @@ class GradientCtrl(wx.Panel): @@ -358,21 +367,28 @@ class GradientCtrl(wx.Panel):
358 self.spin_max.SetValue(evt.maximun) 367 self.spin_max.SetValue(evt.maximun)
359 self.minimun = evt.minimun 368 self.minimun = evt.minimun
360 self.maximun = evt.maximun 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 def _FireSpinMinChange(self, evt): 379 def _FireSpinMinChange(self, evt):
364 value = int(self.spin_min.GetValue()) 380 value = int(self.spin_min.GetValue())
365 if value != self.GetMinValue(): 381 if value != self.GetMinValue():
366 self.gradient_slider.SetMinimun(value) 382 self.gradient_slider.SetMinimun(value)
367 self.minimun = value 383 self.minimun = value
368 - self._GenerateEvent() 384 + self._GenerateEvent(myEVT_THRESHOLD_CHANGE)
369 385
370 def _FireSpinMaxChange(self, evt): 386 def _FireSpinMaxChange(self, evt):
371 value = int(self.spin_max.GetValue()) 387 value = int(self.spin_max.GetValue())
372 if value != self.GetMaxValue(): 388 if value != self.GetMaxValue():
373 self.gradient_slider.SetMaximun(value) 389 self.gradient_slider.SetMaximun(value)
374 self.maximun = value 390 self.maximun = value
375 - self._GenerateEvent() 391 + self._GenerateEvent(myEVT_THRESHOLD_CHANGE)
376 392
377 def OnMinMouseWheel(self, e): 393 def OnMinMouseWheel(self, e):
378 v = self.GetMinValue() + e.GetWheelRotation()/e.GetWheelDelta() 394 v = self.GetMinValue() + e.GetWheelRotation()/e.GetWheelDelta()
@@ -416,14 +432,14 @@ class GradientCtrl(wx.Panel): @@ -416,14 +432,14 @@ class GradientCtrl(wx.Panel):
416 print "ChangeMinValue", self.slided 432 print "ChangeMinValue", self.slided
417 if not self.slided: 433 if not self.slided:
418 self.gradient_slider.SetMinValue(int(self.spin_min.GetValue())) 434 self.gradient_slider.SetMinValue(int(self.spin_min.GetValue()))
419 - self._GenerateEvent() 435 + self._GenerateEvent(myEVT_THRESHOLD_CHANGE)
420 436
421 def ChangeMaxValue(self, e): 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 # the user? 439 # the user?
424 if not self.slided: 440 if not self.slided:
425 self.gradient_slider.SetMaxValue(int(self.spin_max.GetValue())) 441 self.gradient_slider.SetMaxValue(int(self.spin_max.GetValue()))
426 - self._GenerateEvent() 442 + self._GenerateEvent(myEVT_THRESHOLD_CHANGE)
427 443
428 def GetMaxValue(self): 444 def GetMaxValue(self):
429 return self.maximun 445 return self.maximun
@@ -431,7 +447,7 @@ class GradientCtrl(wx.Panel): @@ -431,7 +447,7 @@ class GradientCtrl(wx.Panel):
431 def GetMinValue(self): 447 def GetMinValue(self):
432 return self.minimun 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 self.max_range, self.minimun, self.maximun) 452 self.max_range, self.minimun, self.maximun)
437 self.GetEventHandler().ProcessEvent(evt) 453 self.GetEventHandler().ProcessEvent(evt)