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)))