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

progressWnd.py (5834B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\progressWnd.py
      2 import types
      3 import blue
      4 import localization
      5 import utillib
      6 from carbon.common.script.util.format import FmtDate
      7 from carbonui import uiconst
      8 from carbonui.window.underlay import WindowUnderlay
      9 from carbonui.primitives.containerAutoSize import ContainerAutoSize
     10 from carbonui.uicore import uicore
     11 from carbonui.button.group import ButtonGroup
     12 from eve.client.script.ui.control.eveLabel import EveLabelMedium, EveCaptionMedium
     13 from carbonui.control.progressBar import ProgressBar
     14 from eve.common.lib import appConst as const
     15 
     16 class ProgressWnd(ContainerAutoSize):
     17     default_width = 320
     18     default_height = 87
     19     default_windowID = 'progresswindow'
     20     default_state = uiconst.UI_PICKCHILDREN
     21     default_align = uiconst.CENTER
     22     default_clipChildren = True
     23     default_padBottom = -4
     24 
     25     def ApplyAttributes(self, attributes):
     26         ContainerAutoSize.ApplyAttributes(self, attributes)
     27         self.abortbtn = None
     28         self.abortbtnpar = None
     29         self.confirmbtn = None
     30         self.abortconfirmbtnpar = None
     31         self.sr.readprogress = utillib.KeyVal(text='', prev=0)
     32         self.caption = EveCaptionMedium(name='caption', parent=self, align=uiconst.TOTOP, padding=(25, 0, 25, 0), top=12, idx=0, state=uiconst.UI_DISABLED)
     33         self.progressText = EveLabelMedium(parent=self, width=270, left=2, top=4, state=uiconst.UI_NORMAL, align=uiconst.TOTOP, padding=(25, 0, 25, 0))
     34         self.progressBar = ProgressBar(parent=self, height=10, padding=(25, 10, 25, 10), align=uiconst.TOTOP)
     35         WindowUnderlay(bgParent=self)
     36 
     37     def SetAbortFunc(self, func):
     38         args = None
     39         if type(func) == types.TupleType:
     40             func, args = func
     41         if self.abortbtnpar is None:
     42             if func is None:
     43                 return
     44             self.abortbtnpar = ButtonGroup(parent=self, align=uiconst.TOTOP, btns=[[localization.GetByLabel('UI/Commands/Abort'),
     45               func,
     46               args,
     47               66]])
     48             self.abortbtn = self.abortbtnpar.buttons[0]
     49         if func is None:
     50             self.abortbtnpar.state = uiconst.UI_HIDDEN
     51         else:
     52             self.abortbtnpar.state = uiconst.UI_NORMAL
     53             self.abortbtn.OnClick = (func, args)
     54 
     55     def SetAbortConfirmFunc(self, abortFunc, confirmFunc):
     56         abortArgs = None
     57         confirmArgs = None
     58         if type(abortFunc) == types.TupleType:
     59             abortFunc, abortArgs = abortFunc
     60         if type(confirmFunc) == types.TupleType:
     61             confirmFunc, confirmArgs = confirmFunc
     62         if self.abortconfirmbtnpar is None:
     63             btns = ((localization.GetByLabel('UI/Common/Yes'),
     64               self.Confirm,
     65               (),
     66               None,
     67               0,
     68               1,
     69               0), (localization.GetByLabel('UI/Common/No'),
     70               self.Abort,
     71               (),
     72               None,
     73               0,
     74               0,
     75               1))
     76             self.abortconfirmbtnpar = ButtonGroup(parent=self, btns=btns, align=uiconst.TOTOP)
     77             self.confirmbtn = self.abortconfirmbtnpar.buttons[0]
     78             self.abortbtn = self.abortconfirmbtnpar.buttons[1]
     79         uicore.registry.AddModalWindow(self)
     80 
     81     def Abort(self, *args):
     82         if self.sr.Get('abortFunc', None) is not None:
     83             abortFunc = self.sr.Get('abortFunc', None)
     84             if type(abortFunc) == types.TupleType:
     85                 abortFunc, abortArgs = abortFunc
     86                 abortFunc(*abortArgs)
     87             else:
     88                 abortFunc()
     89         uicore.registry.RemoveModalWindow(self)
     90         self.Close()
     91 
     92     def Confirm(self, *args):
     93         if self.sr.Get('confirmFunc', None) is not None:
     94             confirmFunc = self.sr.Get('confirmFunc', None)
     95             if type(confirmFunc) == types.TupleType:
     96                 confirmFunc, confirmArgs = confirmFunc
     97                 confirmFunc(*confirmArgs)
     98             else:
     99                 confirmFunc()
    100         uicore.registry.RemoveModalWindow(self)
    101         self.Close()
    102 
    103     def SetModalResult(self, modalResult, *args):
    104         if modalResult in (uiconst.ID_CANCEL, uiconst.ID_NONE):
    105             self.Abort()
    106 
    107     def CountDown(self, startTime, duration):
    108         while True and not self.destroyed:
    109             dt = blue.os.TimeDiffInMs(startTime, blue.os.GetWallclockTimeNow())
    110             if dt > duration:
    111                 break
    112             self.progressText.text = FmtDate(long((duration - dt) * 10000) + const.SEC)
    113             blue.pyos.synchro.SleepWallclock(10)
    114 
    115         if not self.destroyed:
    116             self.progressText.text = FmtDate(long(0))
    117             self.Abort()
    118 
    119     def SetReadProgress(self, have, need):
    120         if self is None or self.destroyed:
    121             return
    122         if not self.sr.readprogress.text:
    123             return
    124         strng = localization.GetByLabel('UI/Shared/ReadProgress', text=self.sr.readprogress.text, done=have + self.sr.readprogress.prev, total=need + self.sr.readprogress.prev)
    125         if have == need:
    126             self.sr.readprogress.prev += have
    127         if self.progressText.text != strng:
    128             self.progressText.text = strng
    129             sm.services['loading'].LogWarn('Setting progress text to: ', strng)
    130             blue.pyos.synchro.Yield()
    131         else:
    132             sm.services['loading'].LogWarn('Not setting progress text to: ', strng)
    133 
    134     def SetStatus(self, title, strng, portion = None, total = None, abortFunc = None, animate = 1):
    135         self._SetCaption(title)
    136         self.SetAbortFunc(abortFunc)
    137         self.sr.readprogress = utillib.KeyVal(text=strng, prev=0)
    138         if self.progressText.text != strng:
    139             self.progressText.text = strng
    140         return 0
    141 
    142     def _SetCaption(self, title):
    143         self.caption.text = ['<center>', title]