corpStructureStatePanel.py (4721B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\cosmetics\structure\components\corpStructureStatePanel.py 2 from carbonui import uiconst, TextColor 3 from carbonui.primitives.container import Container 4 from carbonui.primitives.sprite import Sprite 5 from carbonui.uicore import uicore 6 from cosmetics.common.structures.exceptions import LicenseNotFoundException 7 from eve.client.script.ui.control.eveLabel import EveLabelMedium 8 from eve.client.script.ui.control.loadingContainer import LoadingContainer, LoadingSpriteSize 9 from localization import GetByLabel 10 from structures import UPKEEP_STATE_FULL_POWER 11 from eve.client.script.ui.cosmetics.structure import const as paintToolConst, paintToolSignals 12 STATUS_ICON_SIZE = 32 13 14 class CorpStructureStatePanelLoadingContainer(LoadingContainer): 15 16 def _ConstructFailureState(self, failureStateMessage, failureStateSubtext, retryBtnLabel): 17 icon_cont = Container(parent=self._failureStateCont, name='iconCont', align=uiconst.TOLEFT, width=STATUS_ICON_SIZE, left=2) 18 Sprite(parent=icon_cont, name='icon', align=uiconst.CENTER, width=STATUS_ICON_SIZE, height=STATUS_ICON_SIZE, texturePath='res:/UI/Texture/classes/paintTool/low_power.png') 19 EveLabelMedium(parent=self._failureStateCont, align=uiconst.CENTERLEFT, left=STATUS_ICON_SIZE, text=GetByLabel('UI/Personalization/PaintTool/StructureStates/ErrorLoading')) 20 21 22 class CorpStructureStatePanel(Container): 23 default_state = uiconst.UI_NORMAL 24 25 def __init__(self, structure_data, **kw): 26 self._structure_data = structure_data 27 super(CorpStructureStatePanel, self).__init__(**kw) 28 self._construct_layout() 29 30 def Close(self): 31 super(CorpStructureStatePanel, self).Close() 32 33 def _construct_layout(self): 34 self._loading_container = CorpStructureStatePanelLoadingContainer(parent=self, loadingSpriteSize=LoadingSpriteSize.SMALL) 35 self._loading_container.loadingSpriteFadeDelay = 0.5 36 self._loading_container.LoadContent(loadCallback=self._load) 37 38 def _load(self): 39 try: 40 license_id = sm.GetService('cosmeticsSvc').get_structure_cosmetic_license_id_from_state(self._structure_data.instance_id, self._structure_data.location_id, True) 41 except LicenseNotFoundException: 42 license_id = None 43 44 has_license = license_id is not None 45 is_eligible = self._structure_data.is_eligible_for_painting() 46 full_power = self._structure_data.upkeep_state == UPKEEP_STATE_FULL_POWER 47 self._structure_data.license_id = license_id 48 self.hint = '' 49 if not is_eligible: 50 icon_path = 'res:/UI/Texture/classes/paintTool/low_power.png' 51 text = GetByLabel('UI/Personalization/PaintTool/StructureStates/Ineligible') 52 elif has_license: 53 icon_path = 'res:/UI/Texture/classes/paintTool/low_power.png' 54 text = GetByLabel('UI/Personalization/PaintTool/StructureStates/HasLicense') 55 license_data = sm.GetService('cosmeticsLicenseSvc').get_structure_paintwork_license(self._structure_data.instance_id, license_id) 56 remaining_seconds = max(0, license_data.get_remaining_time()) 57 self.hint = GetByLabel('UI/Personalization/PaintTool/StructureStates/LicenseDurationHint', numDays=int(remaining_seconds / 86400)) 58 elif full_power: 59 icon_path = 'res:/UI/Texture/classes/paintTool/full_power.png' 60 text = GetByLabel(paintToolConst.UPKEEP_STATE_NAMES[self._structure_data.upkeep_state]) 61 else: 62 icon_path = 'res:/UI/Texture/classes/paintTool/low_power.png' 63 text = GetByLabel(paintToolConst.UPKEEP_STATE_NAMES[self._structure_data.upkeep_state]) 64 icon_cont = Container(parent=self, name='iconCont', align=uiconst.TOLEFT, width=STATUS_ICON_SIZE, left=2) 65 Sprite(parent=icon_cont, name='icon', align=uiconst.CENTER, width=STATUS_ICON_SIZE, height=STATUS_ICON_SIZE, texturePath=icon_path) 66 self._state_label = EveLabelMedium(parent=self, align=uiconst.CENTERLEFT, text=text, left=STATUS_ICON_SIZE, color=TextColor.NORMAL, autoFadeSides=paintToolConst.LABEL_FADEOUT) 67 paintToolSignals.on_structure_state_loaded(self._structure_data.instance_id) 68 69 @staticmethod 70 def get_size(structure_data, label_params): 71 text = GetByLabel(paintToolConst.UPKEEP_STATE_NAMES[structure_data.upkeep_state]) 72 alt_text = GetByLabel('UI/Personalization/PaintTool/StructureStates/ErrorLoading') 73 length = uicore.font.MeasureTabstops([(text,) + label_params])[0] 74 alt_length = uicore.font.MeasureTabstops([(alt_text,) + label_params])[0] 75 return max(length, alt_length) + STATUS_ICON_SIZE