Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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()
Exemplo n.º 7
0
 def getText(self, mod):
     capUse = mod.capUse
     if capUse:
         return "%s%s" % ("+" if capUse < 0 else "",
                          (formatAmount(-capUse, 3, 0, 3)))
     else:
         return ""
Exemplo n.º 8
0
    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()
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
    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
Exemplo n.º 11
0
    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()
Exemplo n.º 12
0
    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()
Exemplo n.º 13
0
 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 ""
Exemplo n.º 14
0
 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 ""
Exemplo n.º 15
0
    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()
Exemplo n.º 16
0
    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
Exemplo n.º 17
0
    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)
Exemplo n.º 18
0
    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()
Exemplo n.º 19
0
    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()
Exemplo n.º 20
0
    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()
Exemplo n.º 21
0
    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()
Exemplo n.º 22
0
 def getText(self, stuff):
     attr = getattr(stuff, self.propertyName, None)
     if attr:
         return (formatAmount(attr, 3, 0, 3))
     else:
         return ""
Exemplo n.º 23
0
 def getText(self, mod):
     capUse = mod.capUse
     if capUse:
         return "%s%s" % ("+" if capUse < 0 else "", (formatAmount(-capUse, 3, 0, 3)))
     else:
         return ""
Exemplo n.º 24
0
 def callback(requests):
     price = requests[0].price
     colItem.SetText(formatAmount(price, 3, 3, 9) if price else "")
     display.SetItem(colItem)
Exemplo n.º 25
0
 def callback(requests):
     price = requests[0].price
     colItem.SetText(formatAmount(price, 3, 3, 9) if price else "")
     display.SetItem(colItem)
Exemplo n.º 26
0
    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()
Exemplo n.º 27
0
    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()
Exemplo n.º 28
0
 def getText(self, stuff):
     attr = getattr(stuff, self.propertyName, None)
     if attr:
         return (formatAmount(attr, 3, 0, 3))
     else:
         return ""
Exemplo n.º 29
0
    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()