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

vgsOfferGrid.py (2473B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\view\aurumstore\vgsOfferGrid.py
      2 import math
      3 import signals
      4 from carbonui import uiconst
      5 from carbonui.primitives.flowcontainer import FlowContainer
      6 from eve.client.script.ui.view.aurumstore.vgsOffer import VgsOffer
      7 from eve.client.script.ui.view.aurumstore.vgsShipSkinBanner import ShipSkinBanner
      8 from eve.client.script.ui.view.aurumstore import vgsUiConst
      9 
     10 class OfferGrid(FlowContainer):
     11     default_name = 'OfferGrid'
     12 
     13     def __init__(self, **kwargs):
     14         FlowContainer.__init__(self, **kwargs)
     15         self.offers = []
     16         self.index = 0
     17         self.visibleColumns = self.GetVisibleColumns()
     18         self.onUpdate = signals.Signal(signalName='onUpdate2')
     19 
     20     def SetOffers(self, offers, show_skinr_banner = False):
     21         self.Flush()
     22         self.FlagAlignmentDirty()
     23         self.UpdateAlignment()
     24         self.index = 0
     25         self.offers = offers
     26         if show_skinr_banner:
     27             self.ship_skin_banner = ShipSkinBanner(name='ship_skin_banner', parent=self, align=uiconst.NOALIGN)
     28         self.onUpdate()
     29 
     30     def RemoveOffer(self, offerID, show_skinr_banner = False):
     31         self.SetOffers([ offer for offer in self.offers if offer.id != offerID ], show_skinr_banner)
     32 
     33     def GetOffers(self):
     34         return self.offers
     35 
     36     def _OnResize(self, *args):
     37         visibleColumns = self.GetVisibleColumns()
     38         cellWidth = visibleColumns * vgsUiConst.OFFER_IMAGE_SIZE
     39         padWidth = (visibleColumns - 1) * vgsUiConst.CONTENT_PADDING
     40         self.width = cellWidth + padWidth
     41         self.FlagAlignmentDirty()
     42 
     43     def HasAdditionalContent(self):
     44         if self.destroyed:
     45             return False
     46         return len(self.offers) > self.index
     47 
     48     def LoadAdditionalContent(self):
     49         for i in range(self.GetVisibleColumns()):
     50             if self.index >= len(self.offers):
     51                 break
     52             offer = self.offers[self.index]
     53             VgsOffer(parent=self, width=vgsUiConst.OFFER_IMAGE_SIZE, height=vgsUiConst.OFFER_IMAGE_SIZE, align=uiconst.NOALIGN, offer=offer, image=offer.imageUrl, state=uiconst.UI_NORMAL, upperText=offer.name)
     54             self.index += 1
     55 
     56         self.FlagAlignmentDirty()
     57 
     58     def GetVisibleColumns(self):
     59         if self.destroyed:
     60             return 0
     61         width, _ = self.GetAbsoluteSize()
     62         return int(math.floor(width / (vgsUiConst.OFFER_IMAGE_SIZE + vgsUiConst.CONTENT_PADDING)))