From 197acbf5b3f079bac28585b4fab876c5d55b74f4 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sat, 28 May 2016 21:54:25 -0400 Subject: [PATCH] qt: move scan_type preference to main window It leads to better discoverability of dupeguru's options and will make more sense after the big merge of all editions. --- qt/base/app.py | 2 +- qt/base/directories_dialog.py | 43 ++++++++++++++++++++++------------ qt/base/preferences.py | 44 +++++++++++++++++++++-------------- qt/base/preferences_dialog.py | 27 ++------------------- qt/me/preferences.py | 21 +++++++---------- qt/me/preferences_dialog.py | 42 ++++++++++++--------------------- qt/pe/preferences.py | 21 +++++++---------- qt/pe/preferences_dialog.py | 20 ++++------------ qt/se/preferences.py | 21 +++++++---------- qt/se/preferences_dialog.py | 24 ++++++------------- 10 files changed, 111 insertions(+), 154 deletions(-) diff --git a/qt/base/app.py b/qt/base/app.py index 525c0961..e0860df6 100644 --- a/qt/base/app.py +++ b/qt/base/app.py @@ -80,7 +80,7 @@ class DupeGuru(QObject): # (name, shortcut, icon, desc, func) ACTIONS = [ ('actionQuit', 'Ctrl+Q', '', tr("Quit"), self.quitTriggered), - ('actionPreferences', 'Ctrl+P', '', tr("Preferences"), self.preferencesTriggered), + ('actionPreferences', 'Ctrl+P', '', tr("Options"), self.preferencesTriggered), ('actionIgnoreList', '', '', tr("Ignore List"), self.ignoreListTriggered), ('actionShowHelp', 'F1', '', tr("dupeGuru Help"), self.showHelpTriggered), ('actionAbout', '', '', tr("About dupeGuru"), self.showAboutBoxTriggered), diff --git a/qt/base/directories_dialog.py b/qt/base/directories_dialog.py index 8de36c75..28a22c5c 100644 --- a/qt/base/directories_dialog.py +++ b/qt/base/directories_dialog.py @@ -1,16 +1,14 @@ -# Created By: Virgil Dupras -# Created On: 2009-04-25 -# 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 # http://www.gnu.org/licenses/gpl-3.0.html -from PyQt5.QtCore import QRect +from PyQt5.QtCore import QRect, Qt from PyQt5.QtWidgets import ( QWidget, QFileDialog, QHeaderView, QVBoxLayout, QHBoxLayout, QTreeView, QAbstractItemView, QSpacerItem, QSizePolicy, QPushButton, QMainWindow, QMenuBar, QMenu, QLabel, - QApplication + QApplication, QComboBox ) from PyQt5.QtGui import QPixmap, QIcon @@ -30,6 +28,9 @@ 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_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) self.directoriesDelegate = DirectoriesDelegate() self.treeView.setItemDelegate(self.directoriesDelegate) @@ -43,6 +44,8 @@ class DirectoriesDialog(QMainWindow): self._setupBindings() def _setupBindings(self): + self.showPreferencesButton.clicked.connect(self.app.actionPreferences.trigger) + self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged) self.scanButton.clicked.connect(self.scanButtonClicked) self.loadResultsButton.clicked.connect(self.actionLoadResults.trigger) self.addFolderButton.clicked.connect(self.actionAddFolder.trigger) @@ -119,6 +122,21 @@ class DirectoriesDialog(QMainWindow): self.treeView.setDragDropMode(QAbstractItemView.DropOnly) self.treeView.setUniformRowHeights(True) self.verticalLayout.addWidget(self.treeView) + hl = QHBoxLayout() + hl.setAlignment(Qt.AlignLeft) + label = QLabel(tr("Scan Type:"), self) + label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + hl.addWidget(label) + 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(): + self.scanTypeComboBox.addItem(scan_option.label) + hl.addWidget(self.scanTypeComboBox) + self.showPreferencesButton = QPushButton(tr("Options"), self.centralwidget) + self.showPreferencesButton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + hl.addWidget(self.showPreferencesButton) + self.verticalLayout.addLayout(hl) self.horizontalLayout = QHBoxLayout() self.removeFolderButton = QPushButton(self.centralwidget) self.removeFolderButton.setIcon(QIcon(QPixmap(":/minus"))) @@ -221,16 +239,11 @@ class DirectoriesDialog(QMainWindow): return self.app.model.start_scanning() + def scanTypeChanged(self, index): + scan_options = self.app.model.scanner.get_scan_options() + self.app.prefs.scan_type = scan_options[index].scan_type + self.app._update_options() + def selectionChanged(self, selected, deselected): self._updateRemoveButton() - -if __name__ == '__main__': - import sys - from . import dg_rc # NOQA - from ..testapp import TestApp - app = QApplication([]) - dgapp = TestApp() - dialog = DirectoriesDialog(None, dgapp) - dialog.show() - sys.exit(app.exec_()) diff --git a/qt/base/preferences.py b/qt/base/preferences.py index af96a063..96838f12 100644 --- a/qt/base/preferences.py +++ b/qt/base/preferences.py @@ -1,9 +1,7 @@ -# Created By: Virgil Dupras -# Created On: 2009-05-03 -# 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 PyQt5.QtWidgets import QApplication @@ -12,10 +10,12 @@ from hscommon import trans from qtlib.preferences import Preferences as PreferencesBase class Preferences(PreferencesBase): + DEFAULT_SCAN_TYPE = None # edition-specific + def _load_specific(self, settings): # load prefs specific to the dg edition pass - + def _load_values(self, settings): get = self.get_value self.filter_hardness = get('FilterHardness', self.filter_hardness) @@ -29,20 +29,20 @@ class Preferences(PreferencesBase): self.language = get('Language', self.language) if not self.language and trans.installed_lang: self.language = trans.installed_lang - + self.tableFontSize = get('TableFontSize', self.tableFontSize) self.resultWindowIsMaximized = get('ResultWindowIsMaximized', self.resultWindowIsMaximized) self.resultWindowRect = self.get_rect('ResultWindowRect', self.resultWindowRect) self.directoriesWindowRect = self.get_rect('DirectoriesWindowRect', self.directoriesWindowRect) self.recentResults = get('RecentResults', self.recentResults) self.recentFolders = get('RecentFolders', self.recentFolders) - + self._load_specific(settings) - + def _reset_specific(self): # reset prefs specific to the dg edition pass - + def reset(self): self.filter_hardness = 95 self.mix_file_kind = True @@ -53,20 +53,20 @@ class Preferences(PreferencesBase): self.destination_type = 1 self.custom_command = '' self.language = trans.installed_lang if trans.installed_lang else '' - + self.tableFontSize = QApplication.font().pointSize() self.resultWindowIsMaximized = False self.resultWindowRect = None self.directoriesWindowRect = None self.recentResults = [] self.recentFolders = [] - + self._reset_specific() - + def _save_specific(self, settings): # save prefs specific to the dg edition pass - + def _save_values(self, settings): set_ = self.set_value set_('FilterHardness', self.filter_hardness) @@ -78,13 +78,21 @@ class Preferences(PreferencesBase): set_('DestinationType', self.destination_type) set_('CustomCommand', self.custom_command) set_('Language', self.language) - + set_('TableFontSize', self.tableFontSize) set_('ResultWindowIsMaximized', self.resultWindowIsMaximized) self.set_rect('ResultWindowRect', self.resultWindowRect) self.set_rect('DirectoriesWindowRect', self.directoriesWindowRect) set_('RecentResults', self.recentResults) set_('RecentFolders', self.recentFolders) - + self._save_specific(settings) - + + # scan_type is special because we save it immediately when we set it. + @property + def scan_type(self): + return self.get_value('ScanType', self.DEFAULT_SCAN_TYPE) + + @scan_type.setter + def scan_type(self, value): + self.set_value('ScanType', value) diff --git a/qt/base/preferences_dialog.py b/qt/base/preferences_dialog.py index 82d771b1..d3b873ff 100644 --- a/qt/base/preferences_dialog.py +++ b/qt/base/preferences_dialog.py @@ -1,6 +1,4 @@ -# Created By: Virgil Dupras -# Created On: 2011-01-21 -# 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 @@ -38,18 +36,6 @@ class PreferencesDialogBase(QDialog): self.buttonBox.accepted.connect(self.accept) self.buttonBox.rejected.connect(self.reject) - def _setupScanTypeBox(self): - hl = QHBoxLayout() - label = QLabel(tr("Scan Type:"), self) - label.setMinimumSize(QSize(100, 0)) - label.setMaximumSize(QSize(100, 16777215)) - hl.addWidget(label) - self.scanTypeComboBox = QComboBox(self) - for scan_option in self.app.model.scanner.get_scan_options(): - self.scanTypeComboBox.addItem(scan_option.label) - hl.addWidget(self.scanTypeComboBox) - self.widgetsVLayout.addLayout(hl) - def _setupFilterHardnessBox(self): self.filterHardnessHLayout = QHBoxLayout() self.filterHardnessLabel = QLabel(self) @@ -126,7 +112,7 @@ class PreferencesDialogBase(QDialog): pass def _setupUi(self): - self.setWindowTitle(tr("Preferences")) + self.setWindowTitle(tr("Options")) self.resize(304, 263) self.setSizeGripEnabled(False) self.setModal(True) @@ -141,19 +127,10 @@ class PreferencesDialogBase(QDialog): self.mainVLayout.removeWidget(self.ignoreHardlinkMatches) self.ignoreHardlinkMatches.setHidden(True) - def _load_scan_type(self, prefs): - SCAN_TYPE_ORDER = [so.scan_type for so in self.app.model.scanner.get_scan_options()] - scan_type_index = SCAN_TYPE_ORDER.index(prefs.scan_type) - self.scanTypeComboBox.setCurrentIndex(scan_type_index) - def _load(self, prefs, setchecked): # Edition-specific pass - def _save_scan_type(self, prefs): - scan_options = self.app.model.scanner.get_scan_options() - prefs.scan_type = scan_options[self.scanTypeComboBox.currentIndex()].scan_type - def _save(self, prefs, ischecked): # Edition-specific pass diff --git a/qt/me/preferences.py b/qt/me/preferences.py index a142aad1..47e08903 100644 --- a/qt/me/preferences.py +++ b/qt/me/preferences.py @@ -1,9 +1,7 @@ -# Created By: Virgil Dupras -# Created On: 2009-05-17 -# 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.scanner import ScanType @@ -11,9 +9,10 @@ from core.scanner import ScanType from ..base.preferences import Preferences as PreferencesBase class Preferences(PreferencesBase): + DEFAULT_SCAN_TYPE = ScanType.Tag + def _load_specific(self, settings): get = self.get_value - self.scan_type = get('ScanType', self.scan_type) self.word_weighting = get('WordWeighting', self.word_weighting) self.match_similar = get('MatchSimilar', self.match_similar) self.scan_tag_track = get('ScanTagTrack', self.scan_tag_track) @@ -22,10 +21,9 @@ class Preferences(PreferencesBase): self.scan_tag_title = get('ScanTagTitle', self.scan_tag_title) self.scan_tag_genre = get('ScanTagGenre', self.scan_tag_genre) self.scan_tag_year = get('ScanTagYear', self.scan_tag_year) - + def _reset_specific(self): self.filter_hardness = 80 - self.scan_type = ScanType.Tag self.word_weighting = True self.match_similar = False self.scan_tag_track = False @@ -34,10 +32,9 @@ class Preferences(PreferencesBase): self.scan_tag_title = True self.scan_tag_genre = False self.scan_tag_year = False - + def _save_specific(self, settings): set_ = self.set_value - set_('ScanType', self.scan_type) set_('WordWeighting', self.word_weighting) set_('MatchSimilar', self.match_similar) set_('ScanTagTrack', self.scan_tag_track) @@ -46,4 +43,4 @@ class Preferences(PreferencesBase): set_('ScanTagTitle', self.scan_tag_title) set_('ScanTagGenre', self.scan_tag_genre) set_('ScanTagYear', self.scan_tag_year) - + diff --git a/qt/me/preferences_dialog.py b/qt/me/preferences_dialog.py index d50f5ae3..777a2e7d 100644 --- a/qt/me/preferences_dialog.py +++ b/qt/me/preferences_dialog.py @@ -1,5 +1,3 @@ -# Created By: Virgil Dupras -# Created On: 2009-04-29 # Copyright 2016 Hardcoded Software (http://www.hardcoded.net) # # This software is licensed under the "GPLv3" License as described in the "LICENSE" file, @@ -20,13 +18,7 @@ from . import preferences tr = trget('ui') class PreferencesDialog(PreferencesDialogBase): - def __init__(self, parent, app): - PreferencesDialogBase.__init__(self, parent, app) - - self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged) - def _setupPreferenceWidgets(self): - self._setupScanTypeBox() self._setupFilterHardnessBox() self.widgetsVLayout.addLayout(self.filterHardnessHLayout) self.widget = QWidget(self) @@ -72,7 +64,6 @@ class PreferencesDialog(PreferencesDialogBase): self._setupBottomPart() def _load(self, prefs, setchecked): - self._load_scan_type(prefs) setchecked(self.tagTrackBox, prefs.scan_tag_track) setchecked(self.tagArtistBox, prefs.scan_tag_artist) setchecked(self.tagAlbumBox, prefs.scan_tag_album) @@ -82,24 +73,8 @@ class PreferencesDialog(PreferencesDialogBase): setchecked(self.matchSimilarBox, prefs.match_similar) setchecked(self.wordWeightingBox, prefs.word_weighting) - def _save(self, prefs, ischecked): - self._save_scan_type(prefs) - prefs.scan_tag_track = ischecked(self.tagTrackBox) - prefs.scan_tag_artist = ischecked(self.tagArtistBox) - prefs.scan_tag_album = ischecked(self.tagAlbumBox) - prefs.scan_tag_title = ischecked(self.tagTitleBox) - prefs.scan_tag_genre = ischecked(self.tagGenreBox) - prefs.scan_tag_year = ischecked(self.tagYearBox) - prefs.match_similar = ischecked(self.matchSimilarBox) - prefs.word_weighting = ischecked(self.wordWeightingBox) - - def resetToDefaults(self): - self.load(preferences.Preferences()) - - #--- Events - def scanTypeChanged(self, index): - scan_options = self.app.model.scanner.get_scan_options() - scan_type = scan_options[self.scanTypeComboBox.currentIndex()].scan_type + # Update UI state based on selected scan type + scan_type = prefs.scan_type word_based = scan_type in ( ScanType.Filename, ScanType.Fields, ScanType.FieldsNoOrder, ScanType.Tag @@ -115,3 +90,16 @@ class PreferencesDialog(PreferencesDialogBase): self.tagGenreBox.setEnabled(tag_based) self.tagYearBox.setEnabled(tag_based) + def _save(self, prefs, ischecked): + prefs.scan_tag_track = ischecked(self.tagTrackBox) + prefs.scan_tag_artist = ischecked(self.tagArtistBox) + prefs.scan_tag_album = ischecked(self.tagAlbumBox) + prefs.scan_tag_title = ischecked(self.tagTitleBox) + prefs.scan_tag_genre = ischecked(self.tagGenreBox) + prefs.scan_tag_year = ischecked(self.tagYearBox) + prefs.match_similar = ischecked(self.matchSimilarBox) + prefs.word_weighting = ischecked(self.wordWeightingBox) + + def resetToDefaults(self): + self.load(preferences.Preferences()) + diff --git a/qt/pe/preferences.py b/qt/pe/preferences.py index bdd86904..27bc4915 100644 --- a/qt/pe/preferences.py +++ b/qt/pe/preferences.py @@ -1,9 +1,7 @@ -# Created By: Virgil Dupras -# Created On: 2009-05-17 -# 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.scanner import ScanType @@ -11,18 +9,17 @@ from core.scanner import ScanType from ..base.preferences import Preferences as PreferencesBase class Preferences(PreferencesBase): + DEFAULT_SCAN_TYPE = ScanType.FuzzyBlock + def _load_specific(self, settings): get = self.get_value - self.scan_type = get('ScanType', self.scan_type) self.match_scaled = get('MatchScaled', self.match_scaled) - + def _reset_specific(self): - self.scan_type = ScanType.FuzzyBlock self.filter_hardness = 95 self.match_scaled = False - + def _save_specific(self, settings): set_ = self.set_value - set_('ScanType', self.scan_type) set_('MatchScaled', self.match_scaled) - + diff --git a/qt/pe/preferences_dialog.py b/qt/pe/preferences_dialog.py index 0792cf42..cd513412 100644 --- a/qt/pe/preferences_dialog.py +++ b/qt/pe/preferences_dialog.py @@ -13,13 +13,7 @@ from . import preferences tr = trget('ui') class PreferencesDialog(PreferencesDialogBase): - def __init__(self, parent, app): - PreferencesDialogBase.__init__(self, parent, app) - - self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged) - def _setupPreferenceWidgets(self): - self._setupScanTypeBox() self._setupFilterHardnessBox() self.widgetsVLayout.addLayout(self.filterHardnessHLayout) self._setupAddCheckbox('matchScaledBox', tr("Match pictures of different dimensions")) @@ -37,20 +31,16 @@ class PreferencesDialog(PreferencesDialogBase): self._setupBottomPart() def _load(self, prefs, setchecked): - self._load_scan_type(prefs) setchecked(self.matchScaledBox, prefs.match_scaled) + # Update UI state based on selected scan type + scan_type = prefs.scan_type + fuzzy_scan = scan_type == ScanType.FuzzyBlock + self.filterHardnessSlider.setEnabled(fuzzy_scan) + def _save(self, prefs, ischecked): - self._save_scan_type(prefs) prefs.match_scaled = ischecked(self.matchScaledBox) def resetToDefaults(self): self.load(preferences.Preferences()) - #--- Events - def scanTypeChanged(self, index): - scan_options = self.app.model.scanner.get_scan_options() - scan_type = scan_options[self.scanTypeComboBox.currentIndex()].scan_type - fuzzy_scan = scan_type == ScanType.FuzzyBlock - self.filterHardnessSlider.setEnabled(fuzzy_scan) - diff --git a/qt/se/preferences.py b/qt/se/preferences.py index 0dca1499..1ae96082 100644 --- a/qt/se/preferences.py +++ b/qt/se/preferences.py @@ -1,9 +1,7 @@ -# Created By: Virgil Dupras -# Created On: 2009-05-24 -# 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.scanner import ScanType @@ -11,27 +9,26 @@ from core.scanner import ScanType from ..base.preferences import Preferences as PreferencesBase class Preferences(PreferencesBase): + DEFAULT_SCAN_TYPE = ScanType.Contents + def _load_specific(self, settings): get = self.get_value - self.scan_type = get('ScanType', self.scan_type) self.word_weighting = get('WordWeighting', self.word_weighting) self.match_similar = get('MatchSimilar', self.match_similar) self.ignore_small_files = get('IgnoreSmallFiles', self.ignore_small_files) self.small_file_threshold = get('SmallFileThreshold', self.small_file_threshold) - + def _reset_specific(self): self.filter_hardness = 80 - self.scan_type = ScanType.Contents self.word_weighting = True self.match_similar = False self.ignore_small_files = True self.small_file_threshold = 10 # KB - + def _save_specific(self, settings): set_ = self.set_value - set_('ScanType', self.scan_type) set_('WordWeighting', self.word_weighting) set_('MatchSimilar', self.match_similar) set_('IgnoreSmallFiles', self.ignore_small_files) set_('SmallFileThreshold', self.small_file_threshold) - + diff --git a/qt/se/preferences_dialog.py b/qt/se/preferences_dialog.py index 2c62c968..5ee5ca23 100644 --- a/qt/se/preferences_dialog.py +++ b/qt/se/preferences_dialog.py @@ -21,13 +21,7 @@ from . import preferences tr = trget('ui') class PreferencesDialog(PreferencesDialogBase): - def __init__(self, parent, app, **kwargs): - super().__init__(parent, app, **kwargs) - - self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged) - def _setupPreferenceWidgets(self): - self._setupScanTypeBox() self._setupFilterHardnessBox() self.widgetsVLayout.addLayout(self.filterHardnessHLayout) self.widget = QWidget(self) @@ -81,14 +75,19 @@ class PreferencesDialog(PreferencesDialogBase): self.resize(self.width(), 440) def _load(self, prefs, setchecked): - self._load_scan_type(prefs) setchecked(self.matchSimilarBox, prefs.match_similar) setchecked(self.wordWeightingBox, prefs.word_weighting) setchecked(self.ignoreSmallFilesBox, prefs.ignore_small_files) self.sizeThresholdEdit.setText(str(prefs.small_file_threshold)) + # Update UI state based on selected scan type + scan_type = prefs.scan_type + word_based = scan_type == ScanType.Filename + self.filterHardnessSlider.setEnabled(word_based) + self.matchSimilarBox.setEnabled(word_based) + self.wordWeightingBox.setEnabled(word_based) + def _save(self, prefs, ischecked): - self._save_scan_type(prefs) prefs.match_similar = ischecked(self.matchSimilarBox) prefs.word_weighting = ischecked(self.wordWeightingBox) prefs.ignore_small_files = ischecked(self.ignoreSmallFilesBox) @@ -97,12 +96,3 @@ class PreferencesDialog(PreferencesDialogBase): def resetToDefaults(self): self.load(preferences.Preferences()) - #--- Events - def scanTypeChanged(self, index): - scan_options = self.app.model.scanner.get_scan_options() - scan_type = scan_options[self.scanTypeComboBox.currentIndex()].scan_type - word_based = scan_type == ScanType.Filename - self.filterHardnessSlider.setEnabled(word_based) - self.matchSimilarBox.setEnabled(word_based) - self.wordWeightingBox.setEnabled(word_based) -