timeLeftCounters.py (4090B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\login\charSelection\timeLeftCounters.py 2 import carbonui.const as uiconst 3 import localization 4 import blue 5 from carbonui.primitives.fill import Fill 6 from carbonui.primitives.sprite import Sprite 7 from carbonui.util.various_unsorted import IsUnder 8 from carbonui.primitives.container import Container 9 import eve.client.script.ui.login.charSelection.characterSelectionUtils as csUtil 10 import eve.client.script.ui.login.charSelection.characterSelectionColors as csColors 11 from carbonui.uicore import uicore 12 from eve.client.script.ui.control import eveLabel 13 from carbonui.control.button import Button 14 15 class CountDownCont(Container): 16 17 def ApplyAttributes(self, attributes): 18 Container.ApplyAttributes(self, attributes) 19 self.subscriptionTimers = attributes.timers 20 self.trainingEndTimes = self.subscriptionTimers.trainingEndTimes 21 Fill(bgParent=self, color=csColors.SUBSCRIPTION_BORDER_FILL) 22 if self.trainingEndTimes: 23 trainingSlotNumber = 2 24 iconPath = 'res:/UI/Texture/classes/CharacterSelection/skillbook_timer.png' 25 for endTime in self.trainingEndTimes: 26 hintMessage = 'UI/CharacterSelection/QueueExpiryHint%d' % trainingSlotNumber 27 timer = CountDownTimer(parent=self, endTime=endTime.trainingEnds, iconPath=iconPath, callback=self.GoToAccountMgmt, hintMessage=hintMessage) 28 trainingSlotNumber += 1 29 30 def GoToAccountMgmt(self, *args): 31 uicore.cmd.GetCommandAndExecute('OpenAccountManagement', origin='characterSelection') 32 33 34 class CountDownTimer(Container): 35 default_align = uiconst.TOLEFT 36 default_state = uiconst.UI_NORMAL 37 default_width = 72 38 default_height = 64 39 default_padLeft = 4 40 default_padTop = 4 41 default_padBottom = 4 42 default_padRight = 4 43 44 def ApplyAttributes(self, attributes): 45 Container.ApplyAttributes(self, attributes) 46 endTime = attributes.endTime 47 iconPath = attributes.iconPath 48 addButton = attributes.get('addButton', False) 49 self.callback = attributes.get('callback', None) 50 hintMessage = attributes.get('hintMessage', None) 51 if hintMessage: 52 self.hint = localization.GetByLabel(hintMessage, endTime=endTime) 53 self.highlight = Fill(bgParent=self, color=(0.8, 0.8, 0.8, 0.2)) 54 self.highlight.display = False 55 icon = Sprite(parent=self, pos=(0, 0, 32, 32), align=uiconst.CENTERLEFT, texturePath=iconPath, state=uiconst.UI_DISABLED) 56 now = blue.os.GetWallclockTime() 57 timeLeft = max(0, endTime - now) 58 timeLeftText = localization.formatters.FormatTimeIntervalWritten(long(timeLeft), showFrom='day', showTo='day') 59 self.label = eveLabel.EveLabelLarge(parent=self, pos=(8, 0, 0, 0), align=uiconst.CENTERRIGHT, text=timeLeftText, state=uiconst.UI_DISABLED) 60 if timeLeft < csUtil.WARNING_TIME: 61 self.label.SetRGBA(1, 0, 0, 1) 62 self.width = icon.width + self.label.textwidth + self.label.left + 4 63 if self.callback: 64 self.OnClick = self.callback 65 if addButton: 66 btnText = attributes.get('btnText', '') 67 self.AddButton(btnText=btnText) 68 69 def AddButton(self, btnText = ''): 70 buyBtn = Button(name='buyBtn', label=btnText, parent=self, align=uiconst.CENTERRIGHT, func=self.callback, pos=(4, 0, 0, 0)) 71 btnMouseExit = buyBtn.OnMouseExit 72 buyBtn.OnMouseExit = (self.OnButtonMouseExit, btnMouseExit) 73 self.label.left += buyBtn.width + 8 74 self.width += buyBtn.width 75 76 def OnMouseEnter(self, *args): 77 self.highlight.display = True 78 79 def OnMouseExit(self, *args): 80 if not IsUnder(uicore.uilib.mouseOver, self): 81 self.highlight.display = False 82 83 def OnButtonMouseExit(self, btnMouseExitFunction): 84 if uicore.uilib.mouseOver != self: 85 self.OnMouseExit() 86 btnMouseExitFunction() 87 88 def OnClick(self, *args): 89 if self.callback: 90 self.callback()