def getText(self, stuff): trackingSpeed = stuff.getModifiedItemAttr("trackingSpeed") if trackingSpeed is not None: return formatAmount(trackingSpeed, 3, 0, 3) else: if stuff.charge is None: return "" cloudSize = stuff.getModifiedChargeAttr("aoeCloudSize") text = "" if cloudSize: text += "%s%s" % ( formatAmount(cloudSize, 3, 0, 3), stuff.charge.attributes["aoeCloudSize"].unit.displayName, ) aoeVelocity = stuff.getModifiedChargeAttr("aoeVelocity") if aoeVelocity: text = "%s | %s%s" % ( text, formatAmount(aoeVelocity, 3, 0, 3), "m/s", ) # Hardcoded unit here, m/sec is too long return text
def processPrices(self, prices): shipPrice = prices[0].price if shipPrice == None: if not self._timer: self._timer = wx.Timer(self.parent, self._timerId) self._timer.Start(1000) self._timerRuns = 0 else: if self._timer: self._timer.Stop() self.labelEMStatus.SetLabel("") modPrice = sum(map(lambda p: p.price or 0, prices[1:])) if self._cachedShip != shipPrice: self.labelPriceShip.SetLabel("%s ISK" % formatAmount(shipPrice, 3, 3, 9)) self.labelPriceShip.SetToolTip( wx.ToolTip("%.2f ISK" % shipPrice)) self._cachedShip = shipPrice if self._cachedFittings != modPrice: self.labelPriceFittings.SetLabel( "%s ISK" % formatAmount(modPrice, 3, 3, 9)) self.labelPriceFittings.SetToolTip( wx.ToolTip("%.2f ISK" % modPrice)) self._cachedFittings = modPrice if self._cachedTotal != (shipPrice + modPrice): self.labelPriceTotal.SetLabel( "%s ISK" % formatAmount(shipPrice + modPrice, 3, 3, 9)) self.labelPriceTotal.SetToolTip( wx.ToolTip("%.2f ISK" % (shipPrice + modPrice))) self._cachedTotal = shipPrice + modPrice self.panel.Layout()
def processPrices(self, prices): shipPrice = prices[0].price if shipPrice == None: if not self._timer: self._timer = wx.Timer(self.parent, self._timerId) self._timer.Start(1000) self._timerRuns = 0 else: if self._timer: self._timer.Stop() self.labelEMStatus.SetLabel("") modPrice = sum(map(lambda p: p.price or 0, prices[1:])) if self._cachedShip != shipPrice: self.labelPriceShip.SetLabel("%s ISK" % formatAmount(shipPrice, 3, 3, 9)) self.labelPriceShip.SetToolTip(wx.ToolTip("%.2f ISK" % shipPrice)) self._cachedShip = shipPrice if self._cachedFittings != modPrice: self.labelPriceFittings.SetLabel("%s ISK" % formatAmount(modPrice, 3, 3, 9)) self.labelPriceFittings.SetToolTip(wx.ToolTip("%.2f ISK" % modPrice)) self._cachedFittings = modPrice if self._cachedTotal != (shipPrice+modPrice): self.labelPriceTotal.SetLabel("%s ISK" % formatAmount(shipPrice + modPrice, 3, 3, 9)) self.labelPriceTotal.SetToolTip(wx.ToolTip("%.2f ISK" % (shipPrice + modPrice))) self._cachedTotal = shipPrice + modPrice self.panel.Layout()
def getText(self, stuff): maxRange = stuff.maxRange if hasattr(stuff, "maxRange") else stuff.getModifiedItemAttr("maxRange") falloff = stuff.falloff if falloff: falloff = "+%sm" % formatAmount(falloff, 3, 0, 3) else: falloff = "" if maxRange: return "%sm%s" % (formatAmount(maxRange, 3, 0, 3), falloff) else: return "" + falloff
def getText(self, stuff): maxRange = stuff.maxRange if hasattr( stuff, "maxRange") else stuff.getModifiedItemAttr("maxRange") falloff = stuff.falloff if falloff: falloff = "+%sm" % formatAmount(falloff, 3, 0, 3) else: falloff = "" if maxRange: return "%sm%s" % (formatAmount(maxRange, 3, 0, 3), falloff) else: return "" + falloff
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here for stability in ("reinforced", "sustained"): if stability == "reinforced" and fit != None: tank = fit.effectiveTank if self.effective else fit.tank elif stability == "sustained" and fit != None: tank = fit.effectiveSustainableTank if self.effective else fit.sustainableTank else: tank = None for name in ("shield", "armor", "hull"): lbl = getattr(self, "labelTank%s%sActive" % (stability.capitalize(), name.capitalize())) if tank is not None: lbl.SetLabel("%.1f" % tank["%sRepair" % name]) else: lbl.SetLabel("0.0") if fit is not None: label = getattr(self, "labelTankSustainedShieldPassive") value = fit.effectiveTank["passiveShield"] if self.effective else fit.tank["passiveShield"] label.SetLabel(formatAmount(value, 3, 0, 9)) else: value = 0 label = getattr(self, "labelTankSustainedShieldPassive") label.SetLabel("0") label.SetToolTip(wx.ToolTip("%.3f" % value)) self.panel.Layout() self.headerPanel.Layout()
def getText(self, mod): capUse = mod.capUse if capUse: return "%s%s" % ("+" if capUse < 0 else "", (formatAmount(-capUse, 3, 0, 3))) else: return ""
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here for stability in ("reinforced", "sustained"): if stability == "reinforced" and fit != None: tank = fit.effectiveTank if self.effective else fit.tank elif stability == "sustained" and fit != None: tank = fit.effectiveSustainableTank if self.effective else fit.sustainableTank else: tank = None for name in ("shield", "armor", "hull"): lbl = getattr( self, "labelTank%s%sActive" % (stability.capitalize(), name.capitalize())) if tank is not None: lbl.SetLabel("%.1f" % tank["%sRepair" % name]) else: lbl.SetLabel("0.0") if fit is not None: label = getattr(self, "labelTankSustainedShieldPassive") value = fit.effectiveTank[ "passiveShield"] if self.effective else fit.tank[ "passiveShield"] label.SetLabel(formatAmount(value, 3, 0, 9)) else: value = 0 label = getattr(self, "labelTankSustainedShieldPassive") label.SetLabel("0") label.SetToolTip(wx.ToolTip("%.3f" % value)) self.panel.Layout() self.headerPanel.Layout()
def getText(self, stuff): if stuff.item is None: return "" sMarket = service.Market.getInstance() price = sMarket.getPriceNow(stuff.item.ID).price return formatAmount(price, 3, 3, 9) if price else False
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = (("labelFullDpsWeapon", lambda: fit.weaponDPS, 3, 0, 0, "%s DPS", None), ("labelFullDpsDrone", lambda: fit.droneDPS, 3, 0, 0, "%s DPS", None), ("labelFullVolleyTotal", lambda: fit.weaponVolley, 3, 0, 0, "%s", "Volley: %.1f"), ("labelFullDpsTotal", lambda: fit.totalDPS, 3, 0, 0, "%s", None)) counter = 0 for labelName, value, prec, lowest, highest, valueFormat, altFormat in stats: label = getattr(self, labelName) value = value() if fit is not None else 0 value = value if value is not None else 0 if self._cachedValues[counter] != value: valueStr = formatAmount(value, prec, lowest, highest) label.SetLabel(valueFormat % valueStr) tipStr = valueFormat % valueStr if altFormat is None else altFormat % value label.SetToolTip(wx.ToolTip(tipStr)) self._cachedValues[counter] = value counter += 1 self.panel.Layout() self.headerPanel.Layout()
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = (("label%sUsedTurretHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.TURRET), 0, 0, 0), ("label%sTotalTurretHardpoints", lambda: fit.ship.getModifiedItemAttr('turretSlotsLeft'), 0, 0, 0), ("label%sUsedLauncherHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.MISSILE), 0, 0, 0), ("label%sTotalLauncherHardpoints", lambda: fit.ship.getModifiedItemAttr('launcherSlotsLeft'), 0, 0, 0), ("label%sUsedDronesActive", lambda: fit.activeDrones, 0, 0, 0), ("label%sTotalDronesActive", lambda: fit.extraAttributes["maxActiveDrones"], 0, 0, 0), ("label%sUsedCalibrationPoints", lambda: fit.calibrationUsed, 0, 0, 0), ("label%sTotalCalibrationPoints", lambda: fit.ship.getModifiedItemAttr('upgradeCapacity'), 0, 0, 0), ("label%sUsedPg", lambda: fit.pgUsed, 4, 0, 9), ("label%sUsedCpu", lambda: fit.cpuUsed, 4, 0, 9), ("label%sTotalPg", lambda: fit.ship.getModifiedItemAttr("powerOutput"), 4, 0, 9), ("label%sTotalCpu", lambda: fit.ship.getModifiedItemAttr("cpuOutput"), 4, 0, 9), ("label%sUsedDroneBay", lambda: fit.droneBayUsed, 3, 0, 9), ("label%sUsedDroneBandwidth", lambda: fit.droneBandwidthUsed, 3, 0, 9), ("label%sTotalDroneBay", lambda: fit.ship.getModifiedItemAttr("droneCapacity"), 3, 0, 9), ("label%sTotalDroneBandwidth", lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), 3, 0, 9)) panel = "Full" for labelName, value, prec, lowest, highest in stats: label = getattr(self, labelName % panel) value = value() if fit is not None else 0 value = value if value is not None else 0 if isinstance(value, basestring): label.SetLabel(value) label.SetToolTip(wx.ToolTip(value)) else: label.SetLabel(formatAmount(value, prec, lowest, highest)) label.SetToolTip(wx.ToolTip("%.1f" % value)) if fit is not None: resMax = (lambda: fit.ship.getModifiedItemAttr("cpuOutput"), lambda: fit.ship.getModifiedItemAttr("powerOutput"), lambda: fit.ship.getModifiedItemAttr("droneCapacity"), lambda: fit.ship.getModifiedItemAttr("droneBandwidth")) i = 0 for resourceType in ("cpu", "pg", "droneBay", "droneBandwidth"): if fit is not None: capitalizedType = resourceType[0].capitalize() + resourceType[1:] gauge = getattr(self, "gauge%s%s" % (panel, capitalizedType)) resUsed = getattr(fit,"%sUsed" % resourceType) gauge.SetValueRange(resUsed, resMax[i]()) i+=1 else: capitalizedType = resourceType[0].capitalize() + resourceType[1:] gauge = getattr(self, "gauge%s%s" % (panel, capitalizedType)) gauge.SetValueRange(0, 0) i+=1 self.panel.Layout() self.headerPanel.Layout()
def getText(self, mod): if hasattr(mod, "item"): attr = mod.getModifiedItemAttr(self.info.name) else: attr = mod.getAttribute(self.info.name) if attr: return (formatAmount(attr, 3, 0, 3)) else: return ""
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = (("labelTargets", lambda: fit.maxTargets, 3, 0, 0, ""), ("labelRange", lambda: fit.maxTargetRange / 1000, 3, 0, 0, "km"), ("labelScanRes", lambda: fit.ship.getModifiedItemAttr('scanResolution'), 3, 0, 0, "mm"), ("labelSensorStr", lambda: fit.scanStrength, 3, 0, 0, ""), ("labelCtrlRange", lambda: fit.extraAttributes["droneControlRange"] / 1000, 3, 0, 0, "km"), ("labelFullSpeed", lambda: fit.ship.getModifiedItemAttr("maxVelocity"), 3, 0, 0, "m/s"), ("labelFullAlignTime", lambda: fit.alignTime, 3, 0, 0, "s"), ("labelFullSigRadius", lambda: fit.ship.getModifiedItemAttr("signatureRadius"), 3, 0, 9, ""), ("labelFullWarpSpeed", lambda: fit.warpSpeed, 3, 0, 0, "AU/s"), ("labelFullCargo", lambda: fit.ship.getModifiedItemAttr("capacity"), 3, 0, 9, u"m\u00B3")) counter = 0 for labelName, value, prec, lowest, highest, unit in stats: label = getattr(self, labelName) value = value() if fit is not None else 0 value = value if value is not None else 0 if self._cachedValues[counter] != value: label.SetLabel( "%s %s" % (formatAmount(value, prec, lowest, highest), unit)) # Tooltip stuff RADII = [("Pod", 25), ("Interceptor", 33), ("Frigate", 38), ("Destroyer", 83), ("Cruiser", 130), ("Battlecruiser", 265), ("Battleship", 420)] if labelName is "labelScanRes": lockTime = "%s\n" % "Lock Times".center(28) for size, radius in RADII: left = "%s [%d]" % (size, radius) right = "%.1fs" % fit.calculateLockTime(radius) lockTime += "%-19s : %+5s\n" % (left, right) # print lockTime # THIS IS ALIGNED! label.SetToolTip(wx.ToolTip(lockTime)) elif labelName is "labelSensorStr": label.SetToolTip( wx.ToolTip("Type: %s - %.1f" % (fit.scanType, value))) elif fit is not None: label.SetToolTip(wx.ToolTip("%.1f" % value)) self._cachedValues[counter] = value counter += 1 self.panel.Layout() self.headerPanel.Layout()
def getText(self, stuff): trackingSpeed = stuff.getModifiedItemAttr("trackingSpeed") if trackingSpeed is not None: return (formatAmount(trackingSpeed, 3, 0, 3)) else: if stuff.charge is None: return "" cloudSize = stuff.getModifiedChargeAttr("aoeCloudSize") text = "" if cloudSize: text += "%s%s" % ( formatAmount(cloudSize, 3, 0, 3), stuff.charge.attributes["aoeCloudSize"].unit.displayName) aoeVelocity = stuff.getModifiedChargeAttr("aoeVelocity") if aoeVelocity: text = "%s | %s%s" % ( text, formatAmount(aoeVelocity, 3, 0, 3), "m/s" ) #Hardcoded unit here, m/sec is too long return text
def TranslateValueUnit(self, value, unitName, unitDisplayName): def itemIDCallback(): item = service.Market.getInstance().getItem(value) return "%s (%d)" % (item.name, value) if item is not None else str(value) def groupIDCallback(): group = service.Market.getInstance().getGroup(value) return "%s (%d)" % (group.name, value) if group is not None else str(value) def attributeIDCallback(): attribute = service.Attribute.getInstance().getAttributeInfo(value) return "%s (%d)" % (attribute.name.capitalize(), value) trans = {"Inverse Absolute Percent": (lambda: (1-value)*100, unitName), "Inversed Modifier Percent": (lambda: (1-value) * 100, unitName), "Modifier Percent": (lambda: ("%+.2f" if ((value - 1) * 100) % 1 else "%+d") % ((value - 1) * 100), unitName), "Volume": (lambda: value, u"m\u00B3"), "Sizeclass": (lambda: value, ""), "Absolute Percent": (lambda: (value * 100) , unitName), "Milliseconds": (lambda: value / 1000.0, unitName), "typeID": (itemIDCallback, ""), "groupID": (groupIDCallback,""), "attributeID": (attributeIDCallback, "")} override = trans.get(unitDisplayName) if override is not None: if type(override[0]()) == type(str()): fvalue = override[0]() else: v = override[0]() if isinstance(v, (int, float, long)): fvalue = formatAmount(v, 3, 0, 0) else: fvalue = v return "%s %s" % (fvalue , override[1]) else: return "%s %s" % (formatAmount(value, 3, 0),unitName)
def refreshPanel(self, fit): # If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = ( ("label%sCapacitorCapacity", lambda: fit.ship.getModifiedItemAttr("capacitorCapacity"), 3, 0, 9), ("label%sCapacitorRecharge", lambda: fit.capRecharge, 3, 0, 0), ("label%sCapacitorDischarge", lambda: fit.capUsed, 3, 0, 0), ) panel = "Full" for labelName, value, prec, lowest, highest in stats: label = getattr(self, labelName % panel) value = value() if fit is not None else 0 value = value if value is not None else 0 if isinstance(value, basestring): label.SetLabel(value) label.SetToolTip(wx.ToolTip(value)) else: label.SetLabel(formatAmount(value, prec, lowest, highest)) label.SetToolTip(wx.ToolTip("%.1f" % value)) capState = fit.capState if fit is not None else 0 capStable = fit.capStable if fit is not None else False lblNameTime = "label%sCapacitorTime" lblNameState = "label%sCapacitorState" if isinstance(capState, tuple): t = "%.1f%%-%.1f%%" % capState s = "" else: if capStable: t = "%.1f%%" % capState else: if capState > 60: t = "%dm%ds" % divmod(capState, 60) else: t = "%ds" % capState s = "Stable: " if capStable else "Lasts " getattr(self, lblNameTime % panel).SetLabel(t) getattr(self, lblNameState % panel).SetLabel(s) self.panel.Layout() self.headerPanel.Layout()
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = (("labelTargets", lambda: fit.maxTargets, 3, 0, 0, ""), ("labelRange", lambda: fit.maxTargetRange / 1000, 3, 0, 0, "km"), ("labelScanRes", lambda: fit.ship.getModifiedItemAttr('scanResolution'), 3, 0, 0, "mm"), ("labelSensorStr", lambda: fit.scanStrength, 3, 0, 0, ""), ("labelCtrlRange", lambda: fit.extraAttributes["droneControlRange"] / 1000, 3, 0, 0, "km"), ("labelFullSpeed", lambda: fit.ship.getModifiedItemAttr("maxVelocity"), 3, 0, 0, "m/s"), ("labelFullAlignTime", lambda: fit.alignTime, 3, 0, 0, "s"), ("labelFullSigRadius", lambda: fit.ship.getModifiedItemAttr("signatureRadius"), 3, 0, 9, ""), ("labelFullWarpSpeed", lambda: fit.warpSpeed, 3, 0, 0, "AU/s"), ("labelFullCargo", lambda: fit.ship.getModifiedItemAttr("capacity"), 3, 0, 9, u"m\u00B3")) counter = 0 for labelName, value, prec, lowest, highest, unit in stats: label = getattr(self, labelName) value = value() if fit is not None else 0 value = value if value is not None else 0 if self._cachedValues[counter] != value: label.SetLabel("%s %s" %(formatAmount(value, prec, lowest, highest), unit)) # Tooltip stuff RADII = [("Pod",25), ("Interceptor",33), ("Frigate",38), ("Destroyer", 83), ("Cruiser", 130), ("Battlecruiser", 265), ("Battleship",420)] if labelName is "labelScanRes": lockTime = "%s\n" % "Lock Times".center(28) for size, radius in RADII: left = "%s [%d]" % (size, radius) right = "%.1fs" % fit.calculateLockTime(radius) lockTime += "%-19s : %+5s\n" % (left, right) # print lockTime # THIS IS ALIGNED! label.SetToolTip(wx.ToolTip(lockTime)) elif labelName is "labelSensorStr": label.SetToolTip(wx.ToolTip("Type: %s - %.1f" % (fit.scanType, value))) elif fit is not None: label.SetToolTip(wx.ToolTip("%.1f" % value)) self._cachedValues[counter] = value counter += 1 self.panel.Layout() self.headerPanel.Layout()
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats= (("label%sCapacitorCapacity", lambda: fit.ship.getModifiedItemAttr("capacitorCapacity"), 3, 0, 9), ("label%sCapacitorRecharge", lambda: fit.capRecharge, 3, 0, 0), ("label%sCapacitorDischarge", lambda: fit.capUsed, 3, 0, 0)) panel = "Full" for labelName, value, prec, lowest, highest in stats: label = getattr(self, labelName % panel) value = value() if fit is not None else 0 value = value if value is not None else 0 if isinstance(value, basestring): label.SetLabel(value) label.SetToolTip(wx.ToolTip(value)) else: label.SetLabel(formatAmount(value, prec, lowest, highest)) label.SetToolTip(wx.ToolTip("%.1f" % value)) capState = fit.capState if fit is not None else 0 capStable = fit.capStable if fit is not None else False lblNameTime = "label%sCapacitorTime" lblNameState = "label%sCapacitorState" if isinstance(capState, tuple): t = "%.1f%%-%.1f%%" % capState s = "" else: if capStable: t = "%.1f%%" % capState else: if capState > 60: t = "%dm%ds" % divmod(capState, 60) else: t = "%ds" % capState s = "Stable: " if capStable else "Lasts " getattr(self, lblNameTime % panel).SetLabel(t) getattr(self, lblNameState % panel).SetLabel(s) self.panel.Layout() self.headerPanel.Layout()
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = (("labelFullDpsWeapon", lambda: fit.weaponDPS, 3, 0, 0, "%s DPS",None), ("labelFullDpsDrone", lambda: fit.droneDPS, 3, 0, 0, "%s DPS", None), ("labelFullVolleyTotal", lambda: fit.weaponVolley, 3, 0, 0, "%s", "Volley: %.1f"), ("labelFullDpsTotal", lambda: fit.totalDPS, 3, 0, 0, "%s", None)) counter = 0 for labelName, value, prec, lowest, highest, valueFormat, altFormat in stats: label = getattr(self, labelName) value = value() if fit is not None else 0 value = value if value is not None else 0 if self._cachedValues[counter] != value: valueStr = formatAmount(value, prec, lowest, highest) label.SetLabel(valueFormat % valueStr) tipStr = valueFormat % valueStr if altFormat is None else altFormat % value label.SetToolTip(wx.ToolTip(tipStr)) self._cachedValues[counter] = value counter +=1 self.panel.Layout() self.headerPanel.Layout()
def getText(self, stuff): attr = getattr(stuff, self.propertyName, None) if attr: return (formatAmount(attr, 3, 0, 3)) else: return ""
def callback(requests): price = requests[0].price colItem.SetText(formatAmount(price, 3, 3, 9) if price else "") display.SetItem(colItem)
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here if fit is None and not self.showEffective: self.showEffective = True wx.PostEvent(self.mainFrame, EffictiveHpToggled(effective=True)) return elif fit is not None and fit.ID != self.activeFit and not self.showEffective: self.showEffective = True wx.PostEvent(self.mainFrame, EffictiveHpToggled(effective=True)) return self.stEHPs.SetLabel(" EHP " if self.showEffective else " HP ") self.activeFit = fit.ID if fit is not None else None for tankType in ("shield", "armor", "hull"): for damageType in ("em", "thermal", "kinetic", "explosive"): if fit is not None: resonanceType = tankType if tankType != "hull" else "" resonance = "%s%sDamageResonance" % (resonanceType, damageType.capitalize()) resonance = resonance[0].lower() + resonance[1:] resonance = (1 - fit.ship.getModifiedItemAttr(resonance)) * 100 else: resonance = 0 lbl = getattr(self, "gaugeResistance%s%s" % (tankType.capitalize(), damageType.capitalize())) lbl.SetValue(resonance) ehp = (fit.ehp if self.showEffective else fit.hp) if fit is not None else None total = 0 for tankType in ("shield", "armor", "hull"): lbl = getattr(self, "labelResistance%sEhp" % tankType.capitalize()) if ehp is not None: total += ehp[tankType] lbl.SetLabel(formatAmount(ehp[tankType], 3, 0, 9)) lbl.SetToolTip(wx.ToolTip("%s: %d" % (tankType.capitalize(), ehp[tankType]))) else: lbl.SetLabel("0") self.labelEhp.SetLabel("%s" % formatAmount(total, 3, 0, 9)) if self.showEffective: self.stEff.SetLabel("( Effective HP: ") self.labelEhp.SetToolTip(wx.ToolTip("Effective: %d HP" % total)) else: self.stEff.SetLabel("( Raw HP: ") self.labelEhp.SetToolTip(wx.ToolTip("Raw: %d HP" % total)) damagePattern = fit.damagePattern if fit is not None and self.showEffective else None total = sum((damagePattern.emAmount, damagePattern.thermalAmount, damagePattern.kineticAmount, damagePattern.explosiveAmount)) if damagePattern is not None else 0 for damageType in ("em", "thermal", "kinetic", "explosive"): lbl = getattr(self, "gaugeResistanceDamagepattern%s" % damageType.capitalize()) if damagePattern is not None: lbl.SetValueRange(getattr(damagePattern, "%sAmount" % damageType), total) else: lbl.SetValue(0) self.panel.Layout() self.headerPanel.Layout()
def PopulateList(self): self.paramList.InsertColumn(0,"Attribute") self.paramList.InsertColumn(1,"Value") self.paramList.SetColumnWidth(1,150) self.paramList.setResizeColumn(1) self.imageList = wx.ImageList(16, 16) self.paramList.SetImageList(self.imageList,wx.IMAGE_LIST_SMALL) if self.stuff is None or self.stuff.item == self.item: attrs = self.stuff.itemModifiedAttributes if self.stuff is not None else self.item.attributes attrsInfo = self.item.attributes if self.stuff is None else self.stuff.item.attributes else: attrs = self.stuff.chargeModifiedAttributes if self.stuff is not None else self.item.attributes attrsInfo = self.item.attributes if self.stuff is None else self.stuff.charge.attributes names = list(attrs.iterkeys()) names.sort() idNameMap = {} idCount = 0 for name in names: info = attrsInfo.get(name) att = attrs[name] val = getattr(att, "value", None) value = val if val is not None else att if self.toggleView != 1: attrName = name else: attrName = info.displayName if info else name if info: if info.icon is not None: iconFile = info.icon.iconFile attrIcon = self.imageList.Add(bitmapLoader.getBitmap(iconFile, "pack")) else: attrIcon = self.imageList.Add(bitmapLoader.getBitmap("07_15", "pack")) else: attrIcon = self.imageList.Add(bitmapLoader.getBitmap("07_15", "pack")) index = self.paramList.InsertImageStringItem(sys.maxint, attrName,attrIcon) idNameMap[idCount] = attrName self.paramList.SetItemData(index, idCount) idCount += 1 if self.toggleView != 1: valueUnit = str(value) elif info and info.unit: valueUnit = self.TranslateValueUnit(value, info.unit.displayName, info.unit.name) else: valueUnit = formatAmount(value, 3, 0, 0) self.paramList.SetStringItem(index, 1, valueUnit) self.paramList.SortItems(lambda id1, id2: cmp(idNameMap[id1], idNameMap[id2])) self.paramList.RefreshRows() self.totalAttrsLabel.SetLabel("%d attributes. " %idCount) self.Layout()
def refreshPanel(self, fit): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here if fit is None and not self.showEffective: self.showEffective = True wx.PostEvent(self.mainFrame, EffictiveHpToggled(effective=True)) return elif fit is not None and fit.ID != self.activeFit and not self.showEffective: self.showEffective = True wx.PostEvent(self.mainFrame, EffictiveHpToggled(effective=True)) return self.stEHPs.SetLabel(" EHP " if self.showEffective else " HP ") self.activeFit = fit.ID if fit is not None else None for tankType in ("shield", "armor", "hull"): for damageType in ("em", "thermal", "kinetic", "explosive"): if fit is not None: resonanceType = tankType if tankType != "hull" else "" resonance = "%s%sDamageResonance" % ( resonanceType, damageType.capitalize()) resonance = resonance[0].lower() + resonance[1:] resonance = (1 - fit.ship.getModifiedItemAttr(resonance)) * 100 else: resonance = 0 lbl = getattr( self, "gaugeResistance%s%s" % (tankType.capitalize(), damageType.capitalize())) lbl.SetValue(resonance) ehp = (fit.ehp if self.showEffective else fit.hp) if fit is not None else None total = 0 for tankType in ("shield", "armor", "hull"): lbl = getattr(self, "labelResistance%sEhp" % tankType.capitalize()) if ehp is not None: total += ehp[tankType] lbl.SetLabel(formatAmount(ehp[tankType], 3, 0, 9)) lbl.SetToolTip( wx.ToolTip("%s: %d" % (tankType.capitalize(), ehp[tankType]))) else: lbl.SetLabel("0") self.labelEhp.SetLabel("%s" % formatAmount(total, 3, 0, 9)) if self.showEffective: self.stEff.SetLabel("( Effective HP: ") self.labelEhp.SetToolTip(wx.ToolTip("Effective: %d HP" % total)) else: self.stEff.SetLabel("( Raw HP: ") self.labelEhp.SetToolTip(wx.ToolTip("Raw: %d HP" % total)) damagePattern = fit.damagePattern if fit is not None and self.showEffective else None total = sum(( damagePattern.emAmount, damagePattern.thermalAmount, damagePattern.kineticAmount, damagePattern.explosiveAmount)) if damagePattern is not None else 0 for damageType in ("em", "thermal", "kinetic", "explosive"): lbl = getattr( self, "gaugeResistanceDamagepattern%s" % damageType.capitalize()) if damagePattern is not None: lbl.SetValueRange( getattr(damagePattern, "%sAmount" % damageType), total) else: lbl.SetValue(0) self.panel.Layout() self.headerPanel.Layout()