Commit e0719844de4097b259c0584105eb71ddd0228277
1 parent
b702ed1b
Exists in
master
and in
67 other branches
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) |