implant.py (4388B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\entries\implant.py 2 import blue 3 import evetypes 4 import localization 5 from carbon.client.script.environment.AudioUtil import PlaySound 6 from carbon.common.script.util.format import FmtTimeInterval 7 from carbon.common.script.util.linkUtil import GetShowInfoLink 8 from carbon.common.script.util.timerstuff import AutoTimer 9 from carbonui import uiconst 10 from carbonui.control.scrollentries import SE_BaseClassCore 11 from eve.client.script.ui.control.eveIcon import Icon 12 from eve.client.script.ui.control.eveLabel import EveLabelMedium 13 from eve.client.script.ui.control.infoIcon import InfoIcon 14 from eve.common.lib import appConst as const 15 from menu import MenuLabel 16 from player_messaging.client.ui_message import prompt_player_fsd_dialog 17 18 class ImplantEntry(SE_BaseClassCore): 19 __guid__ = 'listentry.ImplantEntry' 20 __params__ = ['label'] 21 22 def Startup(self, *etc): 23 self.sr.label = EveLabelMedium(text='', parent=self, left=32, align=uiconst.CENTERLEFT, state=uiconst.UI_DISABLED) 24 self.sr.timeLabel = EveLabelMedium(text='', parent=self, left=18, top=2, state=uiconst.UI_DISABLED, align=uiconst.BOTTOMRIGHT) 25 self.sr.icon = Icon(icon='ui_22_32_30', parent=self, size=32, align=uiconst.RELATIVE, state=uiconst.UI_DISABLED) 26 self.sr.infoicon = InfoIcon(left=2, parent=self, idx=0, align=uiconst.CENTERRIGHT) 27 self.sr.infoicon.OnClick = self.ShowInfo 28 29 def Load(self, node): 30 self.sr.node = node 31 data = node 32 sublevel = node.sublevel or 0 33 if evetypes.GetGroupID(self.sr.node.implant_booster.typeID) == const.groupBooster: 34 slot = getattr(sm.GetService('godma').GetType(node.implant_booster.typeID), 'boosterness', None) 35 timeToEnd = node.implant_booster.expiryTime 36 else: 37 slot = getattr(sm.GetService('godma').GetType(node.implant_booster.typeID), 'implantness', None) 38 timeToEnd = None 39 if slot is None: 40 self.sr.label.text = data.label 41 else: 42 self.sr.label.text = localization.GetByLabel('UI/Control/Entries/ImplantLabel', implantName=data.label, slotNum=int(slot)) 43 self.sr.icon.LoadIcon(evetypes.GetIconID(node.implant_booster.typeID), ignoreSize=True) 44 self.sr.icon.SetSize(32, 32) 45 if timeToEnd is not None: 46 self.UpdateTime(timeToEnd) 47 self.sr.timeOutTimer = AutoTimer(1000, self.UpdateTime, timeToEnd) 48 else: 49 self.sr.timeLabel.text = '' 50 self.sr.timeOutTimer = None 51 offset = sublevel * 16 52 self.sr.icon.left = offset 53 self.sr.label.left = self.sr.icon.left + self.sr.icon.width 54 55 def UpdateTime(self, timeToEnd): 56 timeInterval = timeToEnd - blue.os.GetWallclockTime() 57 if timeInterval > const.MONTH30: 58 timeBreakAt = 'hour' 59 elif timeInterval > const.DAY: 60 timeBreakAt = 'min' 61 else: 62 timeBreakAt = 'sec' 63 self.sr.timeLabel.text = FmtTimeInterval(timeInterval, timeBreakAt) 64 65 def GetMenu(self): 66 m = [(MenuLabel('UI/Commands/ShowInfo'), self.ShowInfo)] 67 if not evetypes.GetGroupID(self.sr.node.implant_booster.typeID) == const.groupBooster and getattr(self.sr.node.implant_booster, 'itemID', None): 68 m.append((MenuLabel('UI/Control/Entries/ImplantUnplug'), self.RemoveImplant, (self.sr.node.implant_booster.itemID, self.sr.node.implant_booster.typeID))) 69 return m 70 71 def OnDblClick(self, *args): 72 self.ShowInfo() 73 74 def ShowInfo(self, *args): 75 sm.GetService('info').ShowInfo(self.sr.node.implant_booster.typeID, getattr(self.sr.node.implant_booster, 'itemID', None)) 76 77 def RemoveImplant(self, itemID, typeID): 78 implantLink = GetShowInfoLink(typeID, evetypes.GetName(typeID), itemID) 79 if prompt_player_fsd_dialog('ConfirmUnPlugInImplant', {'implantLink': implantLink}, uiconst.OKCANCEL) == uiconst.ID_OK: 80 PlaySound(uiconst.SOUND_REMOVE) 81 sm.GetService('godma').GetDogmaLM().DestroyImplant(itemID) 82 83 def GetDynamicHeight(self, width): 84 text = localization.GetByLabel('UI/Control/Entries/ImplantLabel', implantName=self.label, slotNum=0) 85 _, textHeight = EveLabelMedium.MeasureTextSize(text) 86 return max(32, textHeight + const.defaultPadding)