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

PanelSkinMaterial.py (2733B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\info\panels\PanelSkinMaterial.py
      2 import carbonui.const as uiconst
      3 from carbonui import AxisAlignment
      4 from carbonui.primitives.container import Container
      5 from carbonui.primitives.flowcontainer import FlowContainer
      6 from eve.client.script.ui.control.entries.header import Header
      7 from eve.client.script.ui.control.entries.item import Item
      8 from eve.client.script.ui.control.entries.util import GetFromClass
      9 from eve.client.script.ui.control.eveScroll import Scroll
     10 from eve.client.script.ui.shared.skins.buyButton import SkinMaterialBuyButtonAur, SkinMaterialBuyButtonIsk
     11 from itertools import chain
     12 import evetypes
     13 import localization
     14 
     15 class PanelSkinMaterial(Container):
     16     LOG_CONTEXT = 'MaterialInfoWindow'
     17 
     18     def ApplyAttributes(self, attributes):
     19         Container.ApplyAttributes(self, attributes)
     20         self.typeID = attributes.typeID
     21         self.material = sm.GetService('cosmeticsSvc').GetStaticMaterialByID(attributes.itemID)
     22         self.Layout()
     23 
     24     def Layout(self):
     25         self.scroll = Scroll(name='scroll', parent=self, padding=4)
     26 
     27     def Load(self):
     28         entries = []
     29         entry = GetFromClass(Header, data={'label': localization.GetByLabel('UI/Skins/AppliesToTheseShips')})
     30         entries.append(entry)
     31         cosmeticsSvc = sm.GetService('cosmeticsSvc')
     32         skins = cosmeticsSvc.static.GetSkinsForMaterialID(self.material.materialID)
     33         types = set([ t for t in chain.from_iterable((skin.types for skin in skins)) ])
     34         typeEntries = []
     35         for typeID in types:
     36             entry = GetFromClass(ShipSkinMaterialEntry, data={'typeID': typeID,
     37              'materialID': self.material.materialID,
     38              'label': evetypes.GetName(typeID),
     39              'getIcon': True,
     40              'logContext': self.LOG_CONTEXT})
     41             typeEntries.append(entry)
     42 
     43         entries.extend(sorted(typeEntries, key=lambda x: x.label))
     44         self.scroll.Load(contentList=entries)
     45 
     46 
     47 class ShipSkinMaterialEntry(Item):
     48 
     49     def Load(self, node):
     50         Item.Load(self, node)
     51         buttonCont = FlowContainer(parent=self, align=uiconst.CENTERRIGHT, left=20, width=200, height=16, contentAlignment=AxisAlignment.END, contentSpacing=(4, 0))
     52         SkinMaterialBuyButtonAur(parent=buttonCont, align=uiconst.NOALIGN, typeID=self.typeID, materialID=node.materialID, logContext=node.logContext)
     53         SkinMaterialBuyButtonIsk(parent=buttonCont, align=uiconst.NOALIGN, typeID=self.typeID, materialID=node.materialID, logContext=node.logContext)
     54 
     55     def ShowInfo(self, *args):
     56         typeID = self.typeID
     57         itemID = None
     58         sm.StartService('info').ShowInfo(typeID, itemID=itemID)