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

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()