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