mirror of
				https://github.com/arsenetar/dupeguru.git
				synced 2025-09-11 17:58:17 +00:00 
			
		
		
		
	Provide more feedback during scans
- Add output for number of collected files / folders - Update to allow indeterminate progress bar - Remove unused hscommon\jobprogress\qt.py
This commit is contained in:
		
							parent
							
								
									b0baa5bfd6
								
							
						
					
					
						commit
						4c3dfe2f1f
					
				| @ -11,6 +11,7 @@ import logging | |||||||
| from hscommon.jobprogress import job | from hscommon.jobprogress import job | ||||||
| from hscommon.path import Path | from hscommon.path import Path | ||||||
| from hscommon.util import FileOrPath | from hscommon.util import FileOrPath | ||||||
|  | from hscommon.trans import tr | ||||||
| 
 | 
 | ||||||
| from . import fs | from . import fs | ||||||
| 
 | 
 | ||||||
| @ -182,8 +183,12 @@ class Directories: | |||||||
|         """ |         """ | ||||||
|         if fileclasses is None: |         if fileclasses is None: | ||||||
|             fileclasses = [fs.File] |             fileclasses = [fs.File] | ||||||
|  |         file_count = 0 | ||||||
|         for path in self._dirs: |         for path in self._dirs: | ||||||
|             for file in self._get_files(path, fileclasses=fileclasses, j=j): |             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 |                 yield file | ||||||
| 
 | 
 | ||||||
|     def get_folders(self, folderclass=None, j=job.nulljob): |     def get_folders(self, folderclass=None, j=job.nulljob): | ||||||
| @ -193,9 +198,13 @@ class Directories: | |||||||
|         """ |         """ | ||||||
|         if folderclass is None: |         if folderclass is None: | ||||||
|             folderclass = fs.Folder |             folderclass = fs.Folder | ||||||
|  |         folder_count = 0 | ||||||
|         for path in self._dirs: |         for path in self._dirs: | ||||||
|             from_folder = folderclass(path) |             from_folder = folderclass(path) | ||||||
|             for folder in self._get_folders(from_folder, j): |             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 |                 yield folder | ||||||
| 
 | 
 | ||||||
|     def get_state(self, path): |     def get_state(self, path): | ||||||
|  | |||||||
| @ -139,8 +139,6 @@ class Job: | |||||||
|         self._progress = progress |         self._progress = progress | ||||||
|         if self._progress > self._currmax: |         if self._progress > self._currmax: | ||||||
|             self._progress = self._currmax |             self._progress = self._currmax | ||||||
|         if self._progress < 0: |  | ||||||
|             self._progress = 0 |  | ||||||
|         self._do_update(desc) |         self._do_update(desc) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -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) |  | ||||||
| @ -7,6 +7,8 @@ | |||||||
| from PyQt5.QtCore import Qt, QTimer | from PyQt5.QtCore import Qt, QTimer | ||||||
| from PyQt5.QtWidgets import QProgressDialog | from PyQt5.QtWidgets import QProgressDialog | ||||||
| 
 | 
 | ||||||
|  | from hscommon.trans import tr | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| class ProgressWindow: | class ProgressWindow: | ||||||
|     def __init__(self, parent, model): |     def __init__(self, parent, model): | ||||||
| @ -27,11 +29,15 @@ class ProgressWindow: | |||||||
| 
 | 
 | ||||||
|     def set_progress(self, last_progress): |     def set_progress(self, last_progress): | ||||||
|         if self._window is not None: |         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) |             self._window.setValue(last_progress) | ||||||
| 
 | 
 | ||||||
|     def show(self): |     def show(self): | ||||||
|         flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint |         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.setModal(True) | ||||||
|         self._window.setAutoReset(False) |         self._window.setAutoReset(False) | ||||||
|         self._window.setAutoClose(False) |         self._window.setAutoClose(False) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user