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