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

fittingInfoTooltip.py (3113B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\fitting\fittingInfoTooltip.py
      2 import evetypes
      3 from carbonui import uiconst
      4 from carbonui.primitives.container import Container
      5 from eve.client.script.ui.control.entries.fitting import FittingModuleEntry
      6 from eve.client.script.ui.control.entries.util import GetFromClass
      7 from eve.client.script.ui.control.eveLabel import EveLabelMedium, EveLabelMediumBold
      8 from eve.client.script.ui.control.eveScroll import Scroll
      9 from eve.client.script.ui.control.itemIcon import ItemIcon
     10 from eve.client.script.ui.util.uix import GetTextWidth
     11 from eve.common.lib import appConst as const
     12 from localization import GetByLabel
     13 from utillib import KeyVal
     14 
     15 def LoadFittingInfoTooltip(tooltipPanel, fitting):
     16     tooltipPanel.LoadGeneric1ColumnTemplate()
     17     spacer = tooltipPanel.AddSpacer(width=280, height=2, colSpan=tooltipPanel.columns)
     18     tooltipPanel.AddLabelMedium(text='<b>%s</b>' % GetByLabel('UI/Market/MarketQuote/FitToApplyToCurrentShip'))
     19     shipInfoCont = Container(name='shipCont', parent=tooltipPanel, align=uiconst.TOTOP, height=64, padTop=6)
     20     shipIconCont = Container(name='shipIconCont', parent=shipInfoCont, align=uiconst.TOLEFT, width=64)
     21     shipIcon = ItemIcon(name='shipIcon', parent=shipIconCont, pos=(0, 0, 64, 64), left=const.defaultPadding, typeID=fitting.shipTypeID)
     22     shipTypeName = EveLabelMediumBold(text=evetypes.GetName(fitting.shipTypeID), parent=shipInfoCont, align=uiconst.TOTOP, padLeft=10)
     23     maxWidth = shipTypeName.textwidth + shipTypeName.padLeft
     24     if fitting.name:
     25         fittingName = EveLabelMedium(text=fitting.name, parent=shipInfoCont, align=uiconst.TOTOP, padTop=4, padLeft=10)
     26         maxWidth = max(maxWidth, fittingName.textwidth + fittingName.padLeft)
     27     scrollCont = Container(name='scrollCont', parent=tooltipPanel, align=uiconst.TOTOP, padTop=4)
     28     fittingInfoScroll = Scroll(name='fittingInfoScroll', parent=scrollCont)
     29     scrolllist, mW = GetFittingInfoScrollListAndMaxWidth(fitting)
     30     maxWidth = max(maxWidth, mW)
     31     spacer.width = min(300, maxWidth)
     32     fittingInfoScroll.Load(contentList=scrolllist)
     33     contentHeight = fittingInfoScroll.GetContentHeight() + 4
     34     if contentHeight > 200:
     35         tooltipPanel.SetState(uiconst.UI_NORMAL)
     36         contentHeight = 200
     37     scrollCont.height = contentHeight
     38 
     39 
     40 def GetFittingInfoScrollListAndMaxWidth(fitting):
     41     scrollListData = sm.GetService('fittingSvc').GetFittingInfoForScrollList(fitting)
     42     scrollList = []
     43     maxWidth = 0
     44     for d in scrollListData:
     45         if isinstance(d, KeyVal):
     46             maxWidth = max(maxWidth, GetTextWidth(d.label) + 33 + 20)
     47             entry = GetFromClass(FittingModuleEntryFitted, d)
     48             scrollList.append(entry)
     49         else:
     50             scrollList.append(d)
     51 
     52     return (scrollList, maxWidth)
     53 
     54 
     55 class FittingModuleEntryFitted(FittingModuleEntry):
     56     __guid__ = 'listentry.FittingModuleEntryFitted'
     57 
     58     def Load(self, node):
     59         FittingModuleEntry.Load(self, node)
     60         self.sr.haveIcon.display = False
     61         self.sr.infoicon.display = False