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]