diff --git a/qt/me/preferences_dialog.py b/qt/me/preferences_dialog.py index 4dd8b455..462e5682 100644 --- a/qt/me/preferences_dialog.py +++ b/qt/me/preferences_dialog.py @@ -76,7 +76,7 @@ class PreferencesDialog(PreferencesDialogBase): self.widgetsVLayout.addWidget(self.debugModeBox) self._setupBottomPart() - def _load(self, prefs, setchecked): + def _load(self, prefs, setchecked, section): setchecked(self.tagTrackBox, prefs.scan_tag_track) setchecked(self.tagArtistBox, prefs.scan_tag_artist) setchecked(self.tagAlbumBox, prefs.scan_tag_album) diff --git a/qt/pe/preferences_dialog.py b/qt/pe/preferences_dialog.py index c220d317..05626582 100644 --- a/qt/pe/preferences_dialog.py +++ b/qt/pe/preferences_dialog.py @@ -45,7 +45,7 @@ class PreferencesDialog(PreferencesDialogBase): self.widgetsVLayout.addWidget(self.cacheTypeRadio) self._setupBottomPart() - def _load(self, prefs, setchecked): + def _load(self, prefs, setchecked, section): setchecked(self.matchScaledBox, prefs.match_scaled) self.cacheTypeRadio.selected_index = ( 1 if prefs.picture_cache_type == "shelve" else 0 diff --git a/qt/preferences_dialog.py b/qt/preferences_dialog.py index 2d9798a0..6ade467c 100644 --- a/qt/preferences_dialog.py +++ b/qt/preferences_dialog.py @@ -27,6 +27,7 @@ from PyQt5.QtWidgets import ( from hscommon.trans import trget from qtlib.util import horizontalWrap from qtlib.preferences import get_langnames +from enum import Flag, auto from .preferences import Preferences @@ -52,6 +53,13 @@ SUPPORTED_LANGUAGES = [ ] +class Sections(Flag): + """Filter blocks of preferences when reset or loaded""" + GENERAL = auto() + DISPLAY = auto() + ALL = GENERAL | DISPLAY + + class PreferencesDialogBase(QDialog): def __init__(self, parent, app, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint @@ -202,7 +210,7 @@ class PreferencesDialogBase(QDialog): self.tabwidget.addTab(self.page_display, "Display") self.displayVLayout.addStretch(0) - def _load(self, prefs, setchecked): + def _load(self, prefs, setchecked, section): # Edition-specific pass @@ -210,29 +218,31 @@ class PreferencesDialogBase(QDialog): # Edition-specific pass - def load(self, prefs=None): + def load(self, prefs=None, section=Sections.ALL): if prefs is None: prefs = self.app.prefs - self.filterHardnessSlider.setValue(prefs.filter_hardness) - self.filterHardnessLabel.setNum(prefs.filter_hardness) setchecked = lambda cb, b: cb.setCheckState(Qt.Checked if b else Qt.Unchecked) - setchecked(self.mixFileKindBox, prefs.mix_file_kind) - setchecked(self.useRegexpBox, prefs.use_regexp) - setchecked(self.removeEmptyFoldersBox, prefs.remove_empty_folders) - setchecked(self.ignoreHardlinkMatches, prefs.ignore_hardlink_matches) - setchecked(self.debugModeBox, prefs.debug_mode) - setchecked(self.reference_bold_font, prefs.reference_bold_font) - setchecked(self.details_dialog_titlebar_enabled , prefs.details_dialog_titlebar_enabled) - setchecked(self.details_dialog_vertical_titlebar, prefs.details_dialog_vertical_titlebar) - self.copyMoveDestinationComboBox.setCurrentIndex(prefs.destination_type) - self.customCommandEdit.setText(prefs.custom_command) - self.fontSizeSpinBox.setValue(prefs.tableFontSize) - try: - langindex = self.supportedLanguages.index(self.app.prefs.language) - except ValueError: - langindex = 0 - self.languageComboBox.setCurrentIndex(langindex) - self._load(prefs, setchecked) + if section & Sections.GENERAL: + self.filterHardnessSlider.setValue(prefs.filter_hardness) + self.filterHardnessLabel.setNum(prefs.filter_hardness) + setchecked(self.mixFileKindBox, prefs.mix_file_kind) + setchecked(self.useRegexpBox, prefs.use_regexp) + setchecked(self.removeEmptyFoldersBox, prefs.remove_empty_folders) + setchecked(self.ignoreHardlinkMatches, prefs.ignore_hardlink_matches) + setchecked(self.debugModeBox, prefs.debug_mode) + self.copyMoveDestinationComboBox.setCurrentIndex(prefs.destination_type) + self.customCommandEdit.setText(prefs.custom_command) + if section & Sections.DISPLAY: + setchecked(self.reference_bold_font, prefs.reference_bold_font) + setchecked(self.details_dialog_titlebar_enabled , prefs.details_dialog_titlebar_enabled) + setchecked(self.details_dialog_vertical_titlebar, prefs.details_dialog_vertical_titlebar) + self.fontSizeSpinBox.setValue(prefs.tableFontSize) + try: + langindex = self.supportedLanguages.index(self.app.prefs.language) + except ValueError: + langindex = 0 + self.languageComboBox.setCurrentIndex(langindex) + self._load(prefs, setchecked, section) def save(self): prefs = self.app.prefs @@ -262,11 +272,17 @@ class PreferencesDialogBase(QDialog): self.app.prefs.language = lang self._save(prefs, ischecked) - def resetToDefaults(self): - self.load(Preferences()) + def resetToDefaults(self, section_to_update): + self.load(Preferences(), section_to_update) # --- Events def buttonClicked(self, button): role = self.buttonBox.buttonRole(button) if role == QDialogButtonBox.ResetRole: - self.resetToDefaults() + current_tab = self.tabwidget.currentWidget() + section_to_update = Sections.ALL + if current_tab is self.page_general: + section_to_update = Sections.GENERAL + if current_tab is self.page_display: + section_to_update = Sections.DISPLAY + self.resetToDefaults(section_to_update) diff --git a/qt/se/preferences_dialog.py b/qt/se/preferences_dialog.py index 994e8b54..0424afcc 100644 --- a/qt/se/preferences_dialog.py +++ b/qt/se/preferences_dialog.py @@ -85,7 +85,7 @@ class PreferencesDialog(PreferencesDialogBase): self.widgetsVLayout.addWidget(self.widget) self._setupBottomPart() - def _load(self, prefs, setchecked): + def _load(self, prefs, setchecked, section): setchecked(self.matchSimilarBox, prefs.match_similar) setchecked(self.wordWeightingBox, prefs.word_weighting) setchecked(self.ignoreSmallFilesBox, prefs.ignore_small_files)