squadronAbilityTooltip.py (5050B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\squadrons\squadronAbilityTooltip.py 2 import carbonui.const as uiconst 3 from carbonui.primitives.container import Container 4 from carbon.common.script.util.timerstuff import AutoTimer 5 from eve.client.script.ui.control.tooltips import TooltipPanel, ShortcutHint 6 from eve.client.script.ui.crimewatch.crimewatchConst import Colors as CrimeWatchColors 7 from eve.client.script.ui.control.eveIcon import Icon 8 from eve.client.script.ui.tooltips.tooltipsWrappers import TooltipBaseWrapper 9 from localization import GetByMessageID, GetByLabel 10 from carbonui.uicore import uicore 11 12 class SquadronTooltipModuleWrapper(TooltipBaseWrapper): 13 14 def CreateTooltip(self, parent, owner, idx): 15 self.tooltipPanel = SquadronAbilityTooltip(parent=parent, owner=owner, idx=idx) 16 return self.tooltipPanel 17 18 19 class SquadronAbilityTooltip(TooltipPanel): 20 21 def ApplyAttributes(self, attributes): 22 TooltipPanel.ApplyAttributes(self, attributes) 23 self.columns = 4 24 self.margin = (4, 4, 4, 4) 25 self.cellPadding = 0 26 self.cellSpacing = 0 27 self.labelPadding = (4, 2, 4, 2) 28 self.SetBackgroundAlpha(0.75) 29 self.controller = getattr(self.owner, 'controller', None) 30 31 def LoadTooltip(self): 32 if not self.owner: 33 return 34 self.ability = self.controller.GetAbilityInfo() 35 self.abilityNameID = self.ability.displayNameID 36 self.abilityTooltipID = self.ability.tooltipTextID 37 self.slotID = self.controller.slotID 38 self.UpdateToolTips() 39 self._toolTooltipUpdateTimer = AutoTimer(1000, self.UpdateToolTips) 40 41 def UpdateToolTips(self): 42 if self.destroyed or self.beingDestroyed or self.owner is None: 43 self._toolTooltipUpdateTimer = None 44 return 45 self.Flush() 46 self.AddTypeAndIcon() 47 self.AddAbilityInfo() 48 safetyLevel = self.owner.GetSafetyWarning() 49 if safetyLevel is not None: 50 self.AddSafetyLevelWarning(safetyLevel) 51 52 def AddAbilityInfo(self): 53 text = GetByMessageID(self.abilityTooltipID) 54 label = self.AddRowWithText(text) 55 56 def AddSafetyLevelWarning(self, safetyLevel): 57 if safetyLevel == const.shipSafetyLevelNone: 58 iconColor = CrimeWatchColors.Criminal.GetRGBA() 59 text = GetByLabel('UI/Crimewatch/SafetyLevel/ModuleRestrictionTooltip', color=CrimeWatchColors.Criminal.GetHex()) 60 else: 61 iconColor = CrimeWatchColors.Suspect.GetRGBA() 62 text = GetByLabel('UI/Crimewatch/SafetyLevel/ModuleRestrictionTooltip', color=CrimeWatchColors.Suspect.GetHex()) 63 texturePath = 'res:/UI/Texture/Crimewatch/Crimewatch_SuspectCriminal.png' 64 icon, label = self.AddRowWithIconAndText(text, texturePath, iconSize=16) 65 icon.SetRGBA(*iconColor) 66 67 def AddTypeAndIcon(self, iconSize = 26, minRowSize = 30): 68 self.FillRow() 69 self.AddSpacer(height=minRowSize, width=0) 70 iconID = self.ability.iconID 71 iconCont = Container(pos=(0, 72 0, 73 iconSize, 74 iconSize), align=uiconst.CENTER) 75 iconObj = Icon(parent=iconCont, pos=(0, 76 0, 77 iconSize, 78 iconSize), icon=iconID, align=uiconst.TOPLEFT, ignoreSize=True) 79 self.AddCell(iconCont, cellPadding=2) 80 nameColSpan = self.columns - 3 81 abilityName = GetByMessageID(self.abilityNameID) 82 label = abilityText = '<b>%s</b>' % abilityName 83 labelObj = self.AddLabelMedium(text=label, align=uiconst.CENTERLEFT, cellPadding=self.labelPadding, colSpan=nameColSpan) 84 abilityShortcut = uicore.cmd.GetShortcutStringByFuncName('CmdActivateHighPowerSlot%i' % (self.slotID + 1)) 85 shortcutObj = ShortcutHint(text=abilityShortcut) 86 shortcutObj.width += 10 87 shortcutObj.padLeft = 10 88 self.AddCell(shortcutObj) 89 return (iconObj, labelObj) 90 91 def AddRowWithText(self, text, minRowSize = 30): 92 self.FillRow() 93 self.AddSpacer(height=minRowSize, width=0) 94 self.AddCell() 95 label = self.AddLabelMedium(text=text, colSpan=self.columns - 2, align=uiconst.CENTERLEFT, cellPadding=self.labelPadding, wrapWidth=300) 96 self.FillRow() 97 return label 98 99 def AddRowWithIconAndText(self, text, texturePath = None, iconID = None, iconSize = 24, minRowSize = 30): 100 self.FillRow() 101 self.AddSpacer(height=minRowSize, width=0) 102 icon = self.AddIconCell(texturePath or iconID, iconSize=iconSize) 103 label = self.AddLabelMedium(text=text, colSpan=self.columns - 2, align=uiconst.CENTERLEFT, cellPadding=self.labelPadding) 104 self.FillRow() 105 return (icon, label) 106 107 def AddIconCell(self, texturePath = None, iconID = None, iconSize = 24): 108 icon = Icon(pos=(0, 109 0, 110 iconSize, 111 iconSize), align=uiconst.CENTER, ignoreSize=True, state=uiconst.UI_DISABLED, icon=texturePath or iconID) 112 self.AddCell(icon) 113 return icon