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

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