1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2025-03-10 05:34:36 +00:00

Fix Restore Default Preferences button

* When clicking the "Restore Default" in the preferences dialog, only affect the preferences displayed in the current tab. The hidden tab should not be affected by this button.
This commit is contained in:
glubsy 2020-07-20 05:04:25 +02:00
parent 3539263437
commit 298f659f6e
4 changed files with 43 additions and 27 deletions

View File

@ -76,7 +76,7 @@ class PreferencesDialog(PreferencesDialogBase):
self.widgetsVLayout.addWidget(self.debugModeBox) self.widgetsVLayout.addWidget(self.debugModeBox)
self._setupBottomPart() self._setupBottomPart()
def _load(self, prefs, setchecked): def _load(self, prefs, setchecked, section):
setchecked(self.tagTrackBox, prefs.scan_tag_track) setchecked(self.tagTrackBox, prefs.scan_tag_track)
setchecked(self.tagArtistBox, prefs.scan_tag_artist) setchecked(self.tagArtistBox, prefs.scan_tag_artist)
setchecked(self.tagAlbumBox, prefs.scan_tag_album) setchecked(self.tagAlbumBox, prefs.scan_tag_album)

View File

@ -45,7 +45,7 @@ class PreferencesDialog(PreferencesDialogBase):
self.widgetsVLayout.addWidget(self.cacheTypeRadio) self.widgetsVLayout.addWidget(self.cacheTypeRadio)
self._setupBottomPart() self._setupBottomPart()
def _load(self, prefs, setchecked): def _load(self, prefs, setchecked, section):
setchecked(self.matchScaledBox, prefs.match_scaled) setchecked(self.matchScaledBox, prefs.match_scaled)
self.cacheTypeRadio.selected_index = ( self.cacheTypeRadio.selected_index = (
1 if prefs.picture_cache_type == "shelve" else 0 1 if prefs.picture_cache_type == "shelve" else 0

View File

@ -27,6 +27,7 @@ from PyQt5.QtWidgets import (
from hscommon.trans import trget from hscommon.trans import trget
from qtlib.util import horizontalWrap from qtlib.util import horizontalWrap
from qtlib.preferences import get_langnames from qtlib.preferences import get_langnames
from enum import Flag, auto
from .preferences import Preferences 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): class PreferencesDialogBase(QDialog):
def __init__(self, parent, app, **kwargs): def __init__(self, parent, app, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
@ -202,7 +210,7 @@ class PreferencesDialogBase(QDialog):
self.tabwidget.addTab(self.page_display, "Display") self.tabwidget.addTab(self.page_display, "Display")
self.displayVLayout.addStretch(0) self.displayVLayout.addStretch(0)
def _load(self, prefs, setchecked): def _load(self, prefs, setchecked, section):
# Edition-specific # Edition-specific
pass pass
@ -210,29 +218,31 @@ class PreferencesDialogBase(QDialog):
# Edition-specific # Edition-specific
pass pass
def load(self, prefs=None): def load(self, prefs=None, section=Sections.ALL):
if prefs is None: if prefs is None:
prefs = self.app.prefs 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 = lambda cb, b: cb.setCheckState(Qt.Checked if b else Qt.Unchecked)
setchecked(self.mixFileKindBox, prefs.mix_file_kind) if section & Sections.GENERAL:
setchecked(self.useRegexpBox, prefs.use_regexp) self.filterHardnessSlider.setValue(prefs.filter_hardness)
setchecked(self.removeEmptyFoldersBox, prefs.remove_empty_folders) self.filterHardnessLabel.setNum(prefs.filter_hardness)
setchecked(self.ignoreHardlinkMatches, prefs.ignore_hardlink_matches) setchecked(self.mixFileKindBox, prefs.mix_file_kind)
setchecked(self.debugModeBox, prefs.debug_mode) setchecked(self.useRegexpBox, prefs.use_regexp)
setchecked(self.reference_bold_font, prefs.reference_bold_font) setchecked(self.removeEmptyFoldersBox, prefs.remove_empty_folders)
setchecked(self.details_dialog_titlebar_enabled , prefs.details_dialog_titlebar_enabled) setchecked(self.ignoreHardlinkMatches, prefs.ignore_hardlink_matches)
setchecked(self.details_dialog_vertical_titlebar, prefs.details_dialog_vertical_titlebar) setchecked(self.debugModeBox, prefs.debug_mode)
self.copyMoveDestinationComboBox.setCurrentIndex(prefs.destination_type) self.copyMoveDestinationComboBox.setCurrentIndex(prefs.destination_type)
self.customCommandEdit.setText(prefs.custom_command) self.customCommandEdit.setText(prefs.custom_command)
self.fontSizeSpinBox.setValue(prefs.tableFontSize) if section & Sections.DISPLAY:
try: setchecked(self.reference_bold_font, prefs.reference_bold_font)
langindex = self.supportedLanguages.index(self.app.prefs.language) setchecked(self.details_dialog_titlebar_enabled , prefs.details_dialog_titlebar_enabled)
except ValueError: setchecked(self.details_dialog_vertical_titlebar, prefs.details_dialog_vertical_titlebar)
langindex = 0 self.fontSizeSpinBox.setValue(prefs.tableFontSize)
self.languageComboBox.setCurrentIndex(langindex) try:
self._load(prefs, setchecked) langindex = self.supportedLanguages.index(self.app.prefs.language)
except ValueError:
langindex = 0
self.languageComboBox.setCurrentIndex(langindex)
self._load(prefs, setchecked, section)
def save(self): def save(self):
prefs = self.app.prefs prefs = self.app.prefs
@ -262,11 +272,17 @@ class PreferencesDialogBase(QDialog):
self.app.prefs.language = lang self.app.prefs.language = lang
self._save(prefs, ischecked) self._save(prefs, ischecked)
def resetToDefaults(self): def resetToDefaults(self, section_to_update):
self.load(Preferences()) self.load(Preferences(), section_to_update)
# --- Events # --- Events
def buttonClicked(self, button): def buttonClicked(self, button):
role = self.buttonBox.buttonRole(button) role = self.buttonBox.buttonRole(button)
if role == QDialogButtonBox.ResetRole: 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)

View File

@ -85,7 +85,7 @@ class PreferencesDialog(PreferencesDialogBase):
self.widgetsVLayout.addWidget(self.widget) self.widgetsVLayout.addWidget(self.widget)
self._setupBottomPart() self._setupBottomPart()
def _load(self, prefs, setchecked): def _load(self, prefs, setchecked, section):
setchecked(self.matchSimilarBox, prefs.match_similar) setchecked(self.matchSimilarBox, prefs.match_similar)
setchecked(self.wordWeightingBox, prefs.word_weighting) setchecked(self.wordWeightingBox, prefs.word_weighting)
setchecked(self.ignoreSmallFilesBox, prefs.ignore_small_files) setchecked(self.ignoreSmallFilesBox, prefs.ignore_small_files)