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)