structureIcon.py (2596B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\structureIcon.py 2 from eve.client.script.ui.control.itemIcon import ItemIcon 3 from carbonui.control.buttonIcon import ButtonIcon 4 import carbonui.const as uiconst 5 from eve.client.script.ui.shared.info.infoConst import TAB_WARHQ 6 from localization import GetByLabel 7 IS_AT_WAR_HQ_TEXTURE_PATH = 'res:/UI/Texture/WindowIcons/wars.png' 8 MAX_DISPLAYED = 5 9 10 class StructureIcon(ItemIcon): 11 12 def __init__(self, *args, **kwargs): 13 self.warSprite = None 14 self.wars = None 15 super(StructureIcon, self).__init__(*args, **kwargs) 16 17 def ApplyAttributes(self, attributes): 18 ItemIcon.ApplyAttributes(self, attributes) 19 structureTypeID = attributes.typeID 20 structureID = attributes.structureID 21 self.wars = attributes.get('wars') 22 if self.wars: 23 self.warButton = ButtonIcon(parent=self, name='warsOverlay', state=uiconst.UI_NORMAL, align=uiconst.TOPRIGHT, texturePath=IS_AT_WAR_HQ_TEXTURE_PATH, pos=(-4, -4, 24, 24), iconColor=(0.6, 0.145, 0.12, 1.0), iconEnabledOpacity=3.0, idx=0, func=self.OpenWars, args=(structureID, structureTypeID)) 24 self.warButton.icon.gradientStrength = 1.0 25 self.warButton.LoadTooltipPanel = self._LoadWarHQTooltip 26 27 def OpenWars(self, structureID, structureTypeID, *args): 28 sm.GetService('info').ShowInfo(structureTypeID, structureID, selectTabType=TAB_WARHQ) 29 30 def _LoadWarHQTooltip(self, tooltipPanel, *args): 31 allWars = sm.RemoteSvc('warsInfoMgr').GetPublicWarInfo(self.wars) 32 if not allWars: 33 return 34 tooltipPanel.LoadGeneric1ColumnTemplate() 35 tooltipPanel.cellSpacing = (10, 4) 36 ownersToPrime = set() 37 for war in allWars: 38 ownersToPrime.add(war.againstID) 39 ownersToPrime.add(war.declaredByID) 40 41 cfg.eveowners.Prime(ownersToPrime) 42 tooltipPanel.AddLabelMedium(text=GetByLabel('UI/InfoWindow/WarHQHeader'), colSpan=tooltipPanel.columns, bold=True) 43 for war in allWars[:MAX_DISPLAYED]: 44 aggressor = cfg.eveowners.Get(war.declaredByID) 45 defender = cfg.eveowners.Get(war.againstID) 46 text = '%s %s %s' % (aggressor.ownerName, GetByLabel('UI/Corporations/Wars/Vs'), defender.ownerName) 47 tooltipPanel.AddLabelMedium(text=text) 48 49 more = len(allWars) - MAX_DISPLAYED 50 if more > 0: 51 t = GetByLabel('UI/Corporations/CorporationWindow/Wars/AndMoreWars', numMore=more) 52 tooltipPanel.AddLabelMedium(text=t)