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