diff --git a/core/directories.py b/core/directories.py index dffd5196..2a381c14 100644 --- a/core/directories.py +++ b/core/directories.py @@ -11,6 +11,7 @@ import logging from hscommon.jobprogress import job from hscommon.path import Path from hscommon.util import FileOrPath +from hscommon.trans import tr from . import fs @@ -182,8 +183,12 @@ class Directories: """ if fileclasses is None: fileclasses = [fs.File] + file_count = 0 for path in self._dirs: for file in self._get_files(path, fileclasses=fileclasses, j=j): + file_count += 1 + if type(j) != job.NullJob: + j.set_progress(-1, tr("Collected {} files to scan").format(file_count)) yield file def get_folders(self, folderclass=None, j=job.nulljob): @@ -193,9 +198,13 @@ class Directories: """ if folderclass is None: folderclass = fs.Folder + folder_count = 0 for path in self._dirs: from_folder = folderclass(path) for folder in self._get_folders(from_folder, j): + folder_count += 1 + if type(j) != job.NullJob: + j.set_progress(-1, tr("Collected {} folders to scan").format(folder_count)) yield folder def get_state(self, path): diff --git a/hscommon/jobprogress/job.py b/hscommon/jobprogress/job.py index 98f2705e..bb94a225 100644 --- a/hscommon/jobprogress/job.py +++ b/hscommon/jobprogress/job.py @@ -139,8 +139,6 @@ class Job: self._progress = progress if self._progress > self._currmax: self._progress = self._currmax - if self._progress < 0: - self._progress = 0 self._do_update(desc) diff --git a/hscommon/jobprogress/qt.py b/hscommon/jobprogress/qt.py deleted file mode 100644 index fcf34e5f..00000000 --- a/hscommon/jobprogress/qt.py +++ /dev/null @@ -1,52 +0,0 @@ -# Created By: Virgil Dupras -# Created On: 2009-09-14 -# Copyright 2011 Hardcoded Software (http://www.hardcoded.net) -# -# This software is licensed under the "GPLv3" License as described in the "LICENSE" file, -# which should be included with this package. The terms are also available at -# http://www.gnu.org/licenses/gpl-3.0.html - -from PyQt5.QtCore import pyqtSignal, Qt, QTimer -from PyQt5.QtWidgets import QProgressDialog - -from . import performer - - -class Progress(QProgressDialog, performer.ThreadedJobPerformer): - finished = pyqtSignal(["QString"]) - - def __init__(self, parent): - flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QProgressDialog.__init__(self, "", "Cancel", 0, 100, parent, flags) - self.setModal(True) - self.setAutoReset(False) - self.setAutoClose(False) - self._timer = QTimer() - self._jobid = "" - self._timer.timeout.connect(self.updateProgress) - - def updateProgress(self): - # the values might change before setValue happens - last_progress = self.last_progress - last_desc = self.last_desc - if not self._job_running or last_progress is None: - self._timer.stop() - self.close() - if not self.job_cancelled: - self.finished.emit(self._jobid) - return - if self.wasCanceled(): - self.job_cancelled = True - return - if last_desc: - self.setLabelText(last_desc) - self.setValue(last_progress) - - def run(self, jobid, title, target, args=()): - self._jobid = jobid - self.reset() - self.setLabelText("") - self.run_threaded(target, args) - self.setWindowTitle(title) - self.show() - self._timer.start(500) diff --git a/qtlib/progress_window.py b/qtlib/progress_window.py index f8b910a8..c28a063f 100644 --- a/qtlib/progress_window.py +++ b/qtlib/progress_window.py @@ -7,6 +7,8 @@ from PyQt5.QtCore import Qt, QTimer from PyQt5.QtWidgets import QProgressDialog +from hscommon.trans import tr + class ProgressWindow: def __init__(self, parent, model): @@ -27,11 +29,15 @@ class ProgressWindow: def set_progress(self, last_progress): if self._window is not None: + if last_progress < 0: + self._window.setRange(0, 0) + else: + self._window.setRange(0, 100) self._window.setValue(last_progress) def show(self): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - self._window = QProgressDialog("", "Cancel", 0, 100, self.parent, flags) + self._window = QProgressDialog("", tr("Cancel"), 0, 100, self.parent, flags) self._window.setModal(True) self._window.setAutoReset(False) self._window.setAutoClose(False)