diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py index 3dbf4b94df..3538f019ab 100644 --- a/src/calibre/gui2/add.py +++ b/src/calibre/gui2/add.py @@ -451,7 +451,8 @@ class Saver(QObject): # {{{ self.callback_called = False self.rq = Queue() self.ids = [x for x in map(db.id, [r.row() for r in rows]) if x is not None] - self.pd.set_max(len(self.ids)) + self.pd_max = len(self.ids) + self.pd.set_max(0) self.pd.value = 0 self.failures = set([]) @@ -510,6 +511,8 @@ class Saver(QObject): # {{{ id, title, ok, tb = self.rq.get_nowait() except Empty: return + if self.pd.max != self.pd_max: + self.pd.max = self.pd_max self.pd.value += 1 self.ids.remove(id) if not isinstance(title, unicode): diff --git a/src/calibre/gui2/dialogs/progress.py b/src/calibre/gui2/dialogs/progress.py index 553ee4b03b..552172e4b2 100644 --- a/src/calibre/gui2/dialogs/progress.py +++ b/src/calibre/gui2/dialogs/progress.py @@ -53,6 +53,13 @@ class ProgressDialog(QDialog, Ui_Dialog): def set_max(self, max): self.bar.setMaximum(max) + @dynamic_property + def max(self): + def fget(self): return self.bar.maximum() + def fset(self, val): self.bar.setMaximum(val) + return property(fget=fget, fset=fset) + + def _canceled(self, *args): self.canceled = True self.button_box.setDisabled(True)