From 2fe5cdcf02ccae18761a884e90a9076493aab54d Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sat, 3 Aug 2013 21:28:02 -0400 Subject: [PATCH] Fixed progress under Qt which always cancelled the job --- qtlib/progress_window.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/qtlib/progress_window.py b/qtlib/progress_window.py index 0194be16..cc7057c0 100644 --- a/qtlib/progress_window.py +++ b/qtlib/progress_window.py @@ -22,9 +22,8 @@ class ProgressWindow(QProgressDialog): self.setModal(True) self.setAutoReset(False) self.setAutoClose(False) - self._timer = QTimer() + self._timer = QTimer(self) self._timer.timeout.connect(self.model.pulse) - self.canceled.connect(self.model.cancel) # --- Callbacks def refresh(self): # Labels @@ -35,10 +34,15 @@ class ProgressWindow(QProgressDialog): self.setValue(last_progress) def show(self): + self.reset() QProgressDialog.show(self) + self.canceled.connect(self.model.cancel) self._timer.start(500) def close(self): self._timer.stop() + # For some weird reason, canceled() signal is sent upon close, whether the user canceled + # or not. If we don't want a false cancellation, we have to disconnect it. + self.canceled.disconnect() QProgressDialog.close(self)