diff --git a/gui/builtinStatsViews/resourcesViewFull.py b/gui/builtinStatsViews/resourcesViewFull.py index ee417f16f..a62062fec 100644 --- a/gui/builtinStatsViews/resourcesViewFull.py +++ b/gui/builtinStatsViews/resourcesViewFull.py @@ -116,7 +116,7 @@ class ResourcesViewFull(StatsView): # Gauges modif. - Darriele gauge = PG.PyGauge(parent, wx.ID_ANY, 1) - gauge.SetRange(1,True) + gauge.SetValueRange(0, 0) gauge.SetMinSize((self.getTextExtentW("1.999M/1.99M MW"), 23)) gauge.SetFractionDigits(2) @@ -165,17 +165,16 @@ class ResourcesViewFull(StatsView): gauge = getattr(self, "gauge%s%s" % (panel, capitalizedType)) resUsed = getattr(fit,"%sUsed" % resourceType) - if resMax[i]() > 0: - gauge.SetRange(resMax[i]()) - gauge.SetValue(resUsed) + gauge.SetValueRange(resUsed, resMax[i]()) + i+=1 else: capitalizedType = resourceType[0].capitalize() + resourceType[1:] gauge = getattr(self, "gauge%s%s" % (panel, capitalizedType)) - gauge.SetRange(0.01,True) - gauge.SetValue(0) + gauge.SetValueRange(0, 0) + i+=1 self.panel.Layout() diff --git a/gui/multiSwitch.py b/gui/multiSwitch.py index 324ed8095..8bd79ee46 100644 --- a/gui/multiSwitch.py +++ b/gui/multiSwitch.py @@ -45,6 +45,7 @@ class MultiSwitch(wx.Notebook): self.SetImageList(self.imageList) self.removal = False + self.countEvt = 1 def getActiveFit(self): return self.GetCurrentPage().view.activeFitID @@ -105,7 +106,9 @@ class MultiSwitch(wx.Notebook): def checkAdd(self, event): if event.Selection == self.GetPageCount() - 1: + self.AddTab() + #Veto to prevent the + tab from being selected event.Veto() @@ -129,13 +132,20 @@ class MultiSwitch(wx.Notebook): selection = self.AddTab() else: selection = event.Selection + self.countEvt = 0 page = self.GetPage(selection) - if hasattr(page, "type") and page.type == "fit": - fitID = page.view.activeFitID - wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID)) - else: - wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=None)) + + if self.countEvt == 0: + if hasattr(page, "type") and page.type == "fit": + fitID = page.view.activeFitID + wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID)) + else: + wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=None)) + + self.countEvt -= 1 + if self.countEvt < 0: + self.countEvt = 1 event.Skip() diff --git a/gui/pygauge.py b/gui/pygauge.py index 3990de139..2646b6da7 100644 --- a/gui/pygauge.py +++ b/gui/pygauge.py @@ -52,7 +52,7 @@ class PyGauge(wx.PyWindow): self._oldValue = 0 - self._animDuration = 400 + self._animDuration = 600 self._animStep = 0 self._period = 25 self._animValue = 0 @@ -180,6 +180,7 @@ class PyGauge(wx.PyWindow): self._oldPercentage = self._percentage self._percentage = 0 self._value = 0 + self.Animate() @@ -207,6 +208,33 @@ class PyGauge(wx.PyWindow): self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._range)) + def SetValueRange(self, value, range, reinit = False): + + range = float(range) + + if range <= 0: + self._range = 0.01 + else: + self._range = range + + value = float(value) + + self._value = value + if value < 0: + self._value = float(0) + + if reinit is False: + self._oldPercentage = self._percentage + self._percentage = (self._value/self._range) * 100 + + else: + self._oldPercentage = self._percentage + self._percentage = 0 + + + self.Animate() + self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._range if self._range >0.01 else 0)) + def OnEraseBackground(self, event): """ Handles the ``wx.EVT_ERASE_BACKGROUND`` event for L{PyGauge}.