NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

personalMarketOrders.py (4174B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\market\personalMarketOrders.py
      2 from carbonui import uiconst
      3 from carbonui.primitives.container import Container
      4 from eve.client.script.ui.control.eveLabel import EveLabelMedium, Label
      5 from eve.client.script.ui.shared.market.orders import MarketOrders
      6 from eve.common.lib import appConst
      7 from eve.common.script.util.eveFormat import FmtISK
      8 from localization import GetByLabel
      9 
     10 class PersonalMarketOrders(MarketOrders):
     11 
     12     def ApplyAttributes(self, attributes):
     13         self.limits = sm.GetService('marketQuote').GetSkillLimits(None)
     14         self.leftLimitsLabel = None
     15         super(PersonalMarketOrders, self).ApplyAttributes(attributes)
     16 
     17     def GetOrders(self):
     18         return sm.GetService('marketQuote').GetMyOrders()
     19 
     20     def ConstructBottomCont(self):
     21         self.bottomCont = Container(name='bottomCont', parent=self, align=uiconst.TOBOTTOM, height=24, idx=0, clipChildren=True)
     22         self.leftLimitsLabel = EveLabelMedium(parent=self.bottomCont, align=uiconst.TOLEFT, padding=4, tabs=[175, 500], state=uiconst.UI_NORMAL)
     23         self.leftLimitsLabel2 = EveLabelMedium(parent=self.bottomCont, align=uiconst.TOLEFT, padding=4, state=uiconst.UI_NORMAL)
     24 
     25     def UpdateOrderTotals(self, orders):
     26         if orders is None:
     27             return
     28         self.totalEscrow = 0.0
     29         self.totalLeft = 0.0
     30         self.totalIncome = 0.0
     31         self.totalExpenses = 0.0
     32         for order in orders:
     33             if order.bid:
     34                 self.totalExpenses += order.price * order.volRemaining
     35                 self.totalEscrow += order.escrow
     36                 self.totalLeft += order.volRemaining * order.price - order.escrow
     37             else:
     38                 self.totalIncome += order.price * order.volRemaining
     39 
     40         self.UpdateCounter(orders)
     41 
     42     def UpdateCounter(self, orders = None):
     43         if not self.limits or not self.leftLimitsLabel:
     44             return
     45         current = len(orders)
     46         maxCount = self.limits['cnt']
     47         self.leftLimitsLabel.text = GetByLabel('UI/Market/Orders/OrdersRemaining', remaining=maxCount - current, maxCount=maxCount, escrow=FmtISK(self.totalEscrow, showFractionsAlways=False), totalLeft=FmtISK(self.totalLeft, showFractionsAlways=False), feeLimit=self.GetBrokersFeeForOrders(orders), accLimit=round(self.limits['acc'], 4) * 100, income=FmtISK(self.totalIncome, showFractionsAlways=False), expenses=FmtISK(self.totalExpenses, showFractionsAlways=False))
     48         askLimit = self.limits['ask']
     49         bidLimit = self.limits['bid']
     50         modLimit = self.limits['mod']
     51         visLimit = self.limits['vis']
     52         if askLimit == -1 and bidLimit == -1 and modLimit == -1 and visLimit == -1:
     53             self.leftLimitsLabel2.text = GetByLabel('UI/Market/Orders/OrderRangesWithoutRemote')
     54         else:
     55             self.leftLimitsLabel2.text = GetByLabel('UI/Market/Orders/OrderRanges', askLimit=self.GetLimitText(askLimit), bidLimit=self.GetLimitText(bidLimit), modLimit=self.GetLimitText(modLimit), visLimit=self.GetLimitText(visLimit))
     56         self.bottomCont.height = max(20, self.leftLimitsLabel.textheight + 8, self.leftLimitsLabel2.textheight + 8)
     57 
     58     def GetBrokersFeeForOrders(self, orders):
     59         numValidOrders = 0
     60         totalFee = 0
     61         for eachOrder in orders:
     62             fee = self.limits.GetBrokersFeeForLocation(eachOrder.stationID)
     63             if fee is None:
     64                 continue
     65             totalFee += fee * 100
     66             numValidOrders += 1
     67 
     68         if numValidOrders:
     69             return round(totalFee / numValidOrders, 2)
     70         else:
     71             return appConst.marketCommissionPercentage
     72 
     73     def GetLimitText(self, limit):
     74         if limit == appConst.rangeStation:
     75             text = GetByLabel('UI/Market/Orders/LimitedToStations')
     76         elif limit == appConst.rangeSolarSystem:
     77             text = GetByLabel('UI/Market/Orders/LimitedToSystem')
     78         elif limit == appConst.rangeRegion:
     79             text = GetByLabel('UI/Market/Orders/LimitedToRegions')
     80         else:
     81             text = GetByLabel('UI/Market/Orders/LimitedToJumps', jumps=limit)
     82         return text