Fixed a bug in multiswitch (or oversight) that was affecting the animation in resources's pygauges when a new tab is created (double notebook page changed event, skip the first, post fitchanged event at the second event) / various improvements in pygauges and resources pane
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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}.
|
||||
|
||||
Reference in New Issue
Block a user