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 | 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) | ... | ... |