mirror of
https://github.com/arsenetar/dupeguru.git
synced 2026-01-22 14:41:39 +00:00
Instantiate Scanner on-the-fly
Previously, it would be instantiated on startup. This will make our job easier for an upcoming SE/ME/PE merge.
This commit is contained in:
@@ -89,7 +89,7 @@ class DupeGuru(QObject):
|
||||
createActions(ACTIONS, self)
|
||||
|
||||
def _update_options(self):
|
||||
self.model.scanner.mix_file_kind = self.prefs.mix_file_kind
|
||||
self.model.options['mix_file_kind'] = self.prefs.mix_file_kind
|
||||
self.model.options['escape_filter_regexp'] = not self.prefs.use_regexp
|
||||
self.model.options['clean_empty_dirs'] = self.prefs.remove_empty_folders
|
||||
self.model.options['ignore_hardlink_matches'] = self.prefs.ignore_hardlink_matches
|
||||
|
||||
@@ -28,7 +28,7 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.lastAddedFolder = platform.INITIAL_FOLDER_IN_DIALOGS
|
||||
self.recentFolders = Recent(self.app, 'recentFolders')
|
||||
self._setupUi()
|
||||
SCAN_TYPE_ORDER = [so.scan_type for so in self.app.model.scanner.get_scan_options()]
|
||||
SCAN_TYPE_ORDER = [so.scan_type for so in self.app.model.SCANNER_CLASS.get_scan_options()]
|
||||
scan_type_index = SCAN_TYPE_ORDER.index(self.app.prefs.scan_type)
|
||||
self.scanTypeComboBox.setCurrentIndex(scan_type_index)
|
||||
self.directoriesModel = DirectoriesModel(self.app.model.directory_tree, view=self.treeView)
|
||||
@@ -130,7 +130,7 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.scanTypeComboBox = QComboBox(self)
|
||||
self.scanTypeComboBox.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed))
|
||||
self.scanTypeComboBox.setMaximumWidth(400)
|
||||
for scan_option in self.app.model.scanner.get_scan_options():
|
||||
for scan_option in self.app.model.SCANNER_CLASS.get_scan_options():
|
||||
self.scanTypeComboBox.addItem(scan_option.label)
|
||||
hl.addWidget(self.scanTypeComboBox)
|
||||
self.showPreferencesButton = QPushButton(tr("Options"), self.centralwidget)
|
||||
@@ -240,7 +240,7 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.app.model.start_scanning()
|
||||
|
||||
def scanTypeChanged(self, index):
|
||||
scan_options = self.app.model.scanner.get_scan_options()
|
||||
scan_options = self.app.model.SCANNER_CLASS.get_scan_options()
|
||||
self.app.prefs.scan_type = scan_options[index].scan_type
|
||||
self.app._update_options()
|
||||
|
||||
|
||||
26
qt/me/app.py
26
qt/me/app.py
@@ -1,9 +1,7 @@
|
||||
# Created By: Virgil Dupras
|
||||
# Created On: 2009-05-21
|
||||
# Copyright 2015 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
|
||||
# Copyright 2016 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 core_me import __appname__
|
||||
@@ -20,18 +18,18 @@ class DupeGuru(DupeGuruBase):
|
||||
EDITION = 'me'
|
||||
LOGO_NAME = 'logo_me'
|
||||
NAME = __appname__
|
||||
|
||||
|
||||
DETAILS_DIALOG_CLASS = DetailsDialog
|
||||
RESULT_MODEL_CLASS = ResultsModel
|
||||
PREFERENCES_CLASS = Preferences
|
||||
PREFERENCES_DIALOG_CLASS = PreferencesDialog
|
||||
|
||||
|
||||
def _update_options(self):
|
||||
DupeGuruBase._update_options(self)
|
||||
self.model.scanner.min_match_percentage = self.prefs.filter_hardness
|
||||
self.model.scanner.scan_type = self.prefs.scan_type
|
||||
self.model.scanner.word_weighting = self.prefs.word_weighting
|
||||
self.model.scanner.match_similar_words = self.prefs.match_similar
|
||||
self.model.options['min_match_percentage'] = self.prefs.filter_hardness
|
||||
self.model.options['scan_type'] = self.prefs.scan_type
|
||||
self.model.options['word_weighting'] = self.prefs.word_weighting
|
||||
self.model.options['match_similar_words'] = self.prefs.match_similar
|
||||
scanned_tags = set()
|
||||
if self.prefs.scan_tag_track:
|
||||
scanned_tags.add('track')
|
||||
@@ -45,5 +43,5 @@ class DupeGuru(DupeGuruBase):
|
||||
scanned_tags.add('genre')
|
||||
if self.prefs.scan_tag_year:
|
||||
scanned_tags.add('year')
|
||||
self.model.scanner.scanned_tags = scanned_tags
|
||||
|
||||
self.model.options['scanned_tags'] = scanned_tags
|
||||
|
||||
|
||||
28
qt/pe/app.py
28
qt/pe/app.py
@@ -1,9 +1,7 @@
|
||||
# Created By: Virgil Dupras
|
||||
# Created On: 2009-04-25
|
||||
# Copyright 2015 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
|
||||
# Copyright 2016 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
|
||||
|
||||
import logging
|
||||
@@ -34,7 +32,7 @@ class File(PhotoBase):
|
||||
except EnvironmentError:
|
||||
logging.warning("Could not read image '%s'", str(self.path))
|
||||
return (0, 0)
|
||||
|
||||
|
||||
def _plat_get_blocks(self, block_count_per_side, orientation):
|
||||
image = QImage(str(self.path))
|
||||
image = image.convertToFormat(QImage.Format_RGB888)
|
||||
@@ -63,30 +61,30 @@ class File(PhotoBase):
|
||||
t.rotate(270)
|
||||
image = image.transformed(t)
|
||||
return getblocks(image, block_count_per_side)
|
||||
|
||||
|
||||
|
||||
class DupeGuru(DupeGuruBase):
|
||||
MODELCLASS = DupeGuruModel
|
||||
EDITION = 'pe'
|
||||
LOGO_NAME = 'logo_pe'
|
||||
NAME = __appname__
|
||||
|
||||
|
||||
DETAILS_DIALOG_CLASS = DetailsDialog
|
||||
RESULT_WINDOW_CLASS = ResultWindow
|
||||
RESULT_MODEL_CLASS = ResultsModel
|
||||
PREFERENCES_CLASS = Preferences
|
||||
PREFERENCES_DIALOG_CLASS = PreferencesDialog
|
||||
|
||||
|
||||
def _setup(self):
|
||||
self.model.directories.fileclasses = [File]
|
||||
DupeGuruBase._setup(self)
|
||||
self.directories_dialog.menuFile.insertAction(
|
||||
self.directories_dialog.actionLoadResults, self.resultWindow.actionClearPictureCache
|
||||
)
|
||||
|
||||
|
||||
def _update_options(self):
|
||||
DupeGuruBase._update_options(self)
|
||||
self.model.scanner.scan_type = self.prefs.scan_type
|
||||
self.model.scanner.match_scaled = self.prefs.match_scaled
|
||||
self.model.scanner.threshold = self.prefs.filter_hardness
|
||||
|
||||
self.model.options['scan_type'] = self.prefs.scan_type
|
||||
self.model.options['match_scaled'] = self.prefs.match_scaled
|
||||
self.model.options['threshold'] = self.prefs.filter_hardness
|
||||
|
||||
|
||||
14
qt/se/app.py
14
qt/se/app.py
@@ -1,6 +1,4 @@
|
||||
# Created By: Virgil Dupras
|
||||
# Created On: 2009-05-24
|
||||
# Copyright 2015 Hardcoded Software (http://www.hardcoded.net)
|
||||
# Copyright 2016 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
|
||||
@@ -43,10 +41,10 @@ class DupeGuru(DupeGuruBase):
|
||||
|
||||
def _update_options(self):
|
||||
DupeGuruBase._update_options(self)
|
||||
self.model.scanner.min_match_percentage = self.prefs.filter_hardness
|
||||
self.model.scanner.scan_type = self.prefs.scan_type
|
||||
self.model.scanner.word_weighting = self.prefs.word_weighting
|
||||
self.model.scanner.match_similar_words = self.prefs.match_similar
|
||||
self.model.options['min_match_percentage'] = self.prefs.filter_hardness
|
||||
self.model.options['scan_type'] = self.prefs.scan_type
|
||||
self.model.options['word_weighting'] = self.prefs.word_weighting
|
||||
self.model.options['match_similar_words'] = self.prefs.match_similar
|
||||
threshold = self.prefs.small_file_threshold if self.prefs.ignore_small_files else 0
|
||||
self.model.scanner.size_threshold = threshold * 1024 # threshold is in KB. the scanner wants bytes
|
||||
self.model.options['size_threshold'] = threshold * 1024 # threshold is in KB. the scanner wants bytes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user