layered progress windows

This commit is contained in:
Damien Elmes 2009-03-04 20:50:10 +09:00
parent 6a8a88dfc6
commit d53ac03b7b

View file

@ -2017,7 +2017,7 @@ day = :d""", d=yesterday)
addHook("dbProgress", self.onDbProgress) addHook("dbProgress", self.onDbProgress)
addHook("dbFinished", self.onDbFinished) addHook("dbFinished", self.onDbFinished)
self.progressParent = None self.progressParent = None
self.progressWin = None self.progressWins = []
self.busyCursor = False self.busyCursor = False
self.mainThread = QThread.currentThread() self.mainThread = QThread.currentThread()
@ -2029,20 +2029,25 @@ day = :d""", d=yesterday)
return return
self.setBusy() self.setBusy()
parent = self.progressParent or self.app.activeWindow() or self parent = self.progressParent or self.app.activeWindow() or self
self.progressWin = ui.utils.ProgressWin(parent, max, min, title) if self.progressWins:
parent = self.progressWins[-1]
p = ui.utils.ProgressWin(parent, max, min, title)
self.progressWins.append(ui.utils.ProgressWin(parent, max, min, title))
def onUpdateProgress(self, label=None, value=None): def onUpdateProgress(self, label=None, value=None):
if self.mainThread != QThread.currentThread(): if self.mainThread != QThread.currentThread():
return return
if self.progressWin: if self.progressWins:
self.progressWin.update(label, value) self.progressWins[-1].update(label, value)
self.app.processEvents()
def onFinishProgress(self): def onFinishProgress(self):
if self.mainThread != QThread.currentThread(): if self.mainThread != QThread.currentThread():
return return
if self.progressWin: if self.progressWins:
self.progressWin.finish() p = self.progressWins.pop()
self.progressWin = None p.finish()
if not self.progressWins:
self.unsetBusy() self.unsetBusy()
def onDbProgress(self): def onDbProgress(self):
@ -2054,7 +2059,7 @@ day = :d""", d=yesterday)
def onDbFinished(self): def onDbFinished(self):
if self.mainThread != QThread.currentThread(): if self.mainThread != QThread.currentThread():
return return
if not self.progressWin: if not self.progressWins:
self.unsetBusy() self.unsetBusy()
def setBusy(self): def setBusy(self):