baseSkillEntry.py (6696B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillPlan\skillQueuePanel\baseSkillEntry.py 2 import dogma.data as dogma_data 3 import localization 4 from carbonui import uiconst 5 from carbonui.control.scrollentries import SE_BaseClassCore 6 from carbonui.primitives.container import Container 7 from carbonui.primitives.containerAutoSize import ContainerAutoSize 8 from carbonui.primitives.fill import Fill 9 from eve.client.script.ui.control.eveLabel import EveLabelLarge 10 from eve.client.script.ui.control.eveWindowUnderlay import ListEntryUnderlay 11 from eve.client.script.ui.control.skillBar.skillBar import SkillBar 12 from eve.common.lib import appConst 13 from localization.formatters.timeIntervalFormatters import FormatTimeIntervalShortWritten 14 BLUE_COLOR = (0.0, 0.52, 0.67, 1.0) 15 LIGHTBLUE_COLOR = (0.6, 0.8, 0.87, 1.0) 16 WHITE_COLOR = (1.0, 1.0, 1.0, 0.5) 17 18 class BaseSkillEntry(SE_BaseClassCore): 19 __guid__ = 'listentry.BaseSkillEntry' 20 __nonpersistvars__ = ['selection', 'id'] 21 lasttime = None 22 lastprogress = None 23 lastrate = None 24 timer = None 25 totalpoints = None 26 hilitePartiallyTrained = None 27 blueColor = BLUE_COLOR 28 lightBlueColor = LIGHTBLUE_COLOR 29 whiteColor = WHITE_COLOR 30 skillPointsText = '' 31 rank = 0.0 32 default_highlightClass = ListEntryUnderlay 33 34 def _OnClose(self, *args, **kw): 35 super(BaseSkillEntry, self)._OnClose(*args, **kw) 36 self.timer = None 37 38 def ApplyAttributes(self, attributes): 39 super(BaseSkillEntry, self).ApplyAttributes(attributes) 40 self.inTrainingHilite = None 41 self.timeLeftContainer = ContainerAutoSize(name='TimeLeftCont', parent=self, align=uiconst.TORIGHT, padding=(4, 0, 20, 0)) 42 self.textCont = Container(name='textCont', parent=self, align=uiconst.TOALL, padLeft=77, clipChildren=1) 43 self.nameLevelLabel = None 44 self.CheckConstructNameLevelLabel() 45 self.timeLeftText = None 46 self.endOfTraining = None 47 self.skillBarInitialized = False 48 self.skill_service = sm.GetService('skills') 49 50 def CheckConstructNameLevelLabel(self): 51 if not self.nameLevelLabel: 52 cont = ContainerAutoSize(parent=self.textCont, align=uiconst.TOLEFT) 53 self.nameLevelLabel = EveLabelLarge(name='nameLevelLabel', text='', parent=cont, state=uiconst.UI_DISABLED, maxLines=1, align=uiconst.CENTERLEFT) 54 55 def CheckConstructInTrainingHiglight(self): 56 if not self.inTrainingHilite: 57 self.inTrainingHilite = Fill(parent=self, name='inTrainingHilite', padTop=1, padBottom=1, color=self.blueColor, opacity=0.15, state=uiconst.UI_HIDDEN) 58 59 def Load(self, node): 60 self.sr.node = node 61 self.sr.node.meetRequirements = False 62 self.lasttime = None 63 self.lastsecs = None 64 self.lastpoints = None 65 self.timer = None 66 self.endOfTraining = None 67 data = node 68 self.rec = data.skill 69 trainedSkillLevel = data.skill.trainedSkillLevel or 0 70 trainedSkillPoints = data.skill.trainedSkillPoints or 0 71 if not self.skillBarInitialized: 72 self.skillBarInitialized = True 73 SkillBar(parent=self, align=uiconst.CENTERLEFT, left=2, state=uiconst.UI_DISABLED, skillID=self.rec.typeID, overrideLevel=node.trainToLevel, requiredLevel=node.trainToLevel) 74 if trainedSkillLevel < 5: 75 duration = long(self.skill_service.GetRawTrainingTimeForSkillLevel(self.rec.typeID, trainedSkillLevel + 1)) 76 self.timeLeftText = EveLabelLarge(parent=self.timeLeftContainer, align=uiconst.CENTERRIGHT, text=self._GetTimeLeftText(duration)) 77 self.skillPointsText = '' 78 self.rank = 0.0 79 if data.trained: 80 self.rank = int(data.skill.skillRank + 0.4) 81 spHi = sm.GetService('skills').SkillpointsNextLevel(data.skill.typeID) or 0.0 82 if trainedSkillLevel >= 5: 83 self.skillPointsText = localization.GetByLabel('UI/SkillQueue/Skills/SkillPointsValue', skillPoints=int(trainedSkillPoints)) 84 else: 85 self.skillPointsText = localization.GetByLabel('UI/SkillQueue/Skills/SkillPointsAndNextLevelValues', skillPoints=int(trainedSkillPoints), skillPointsToNextLevel=int(spHi + 0.5)) 86 self.sr.node.meetRequirements = True 87 self.hint = None 88 else: 89 self.sr.node.meetRequirements = sm.GetService('skills').IsSkillRequirementMet(data.invtype) 90 if self.sr.node.meetRequirements: 91 tappend = localization.GetByLabel('UI/SkillQueue/Skills/SkillRequirementsMet') 92 else: 93 tappend = localization.GetByLabel('UI/SkillQueue/Skills/SkillRequirementsNotMet') 94 self.skillPointsText = tappend 95 self.hint = tappend 96 for each in dogma_data.get_type_attributes(data.invtype): 97 if each.attributeID == const.attributeSkillTimeConstant: 98 self.rank = int(each.value) 99 100 if data.Get('inTraining', 0): 101 self.CheckConstructInTrainingHiglight() 102 self.inTrainingHilite.state = uiconst.UI_DISABLED 103 elif self.inTrainingHilite: 104 self.inTrainingHilite.Hide() 105 if data.Get('selected', 0): 106 self.Select() 107 else: 108 self.Deselect() 109 110 def _GetTimeLeftText(self, duration): 111 if duration > appConst.DAY: 112 showTo = 'hour' 113 elif duration > appConst.HOUR: 114 showTo = 'minute' 115 else: 116 showTo = 'second' 117 return FormatTimeIntervalShortWritten(duration, showFrom='day', showTo=showTo) 118 119 def OnSkillpointChange(self, skillPoints = None): 120 if self.destroyed: 121 return 122 skill = self.rec 123 self.CheckConstructNameLevelLabel() 124 self.nameLevelLabel.text = localization.GetByLabel('UI/SkillQueue/Skills/SkillNameAndRankValue', skill=skill.typeID, rank=int(skill.skillRank + 0.4)) 125 126 def OnMouseEnter(self, *args): 127 if hasattr(self, 'rec') and not sm.GetService('skills').HasSkill(self.rec.typeID): 128 return 129 super(BaseSkillEntry, self).OnMouseEnter(*args) 130 131 def ShowInfo(self, *args): 132 sm.GetService('info').ShowInfo(self.rec.typeID, None) 133 134 def SetTimeLeft(self, timeLeft): 135 if not self.destroyed and self.timeLeftText: 136 if timeLeft is None: 137 timeLeftText = '' 138 elif timeLeft <= 0: 139 timeLeftText = localization.GetByLabel('UI/SkillQueue/Skills/CompletionImminent') 140 else: 141 timeLeftText = self._GetTimeLeftText(long(timeLeft)) 142 self.timeLeftText.text = timeLeftText