diff --git a/src/calibre/gui2/preferences/__init__.py b/src/calibre/gui2/preferences/__init__.py index 98e0285464..3169cafffa 100644 --- a/src/calibre/gui2/preferences/__init__.py +++ b/src/calibre/gui2/preferences/__init__.py @@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en' import textwrap from PyQt5.Qt import (QWidget, pyqtSignal, QCheckBox, QAbstractSpinBox, - QLineEdit, QComboBox, Qt, QIcon, QDialog, QVBoxLayout, + QLineEdit, QComboBox, Qt, QIcon, QDialog, QVBoxLayout, QRadioButton, QDialogButtonBox) from calibre.customize.ui import preferences_plugins @@ -101,6 +101,9 @@ class Setting(object): if isinstance(self.gui_obj, QCheckBox): self.datatype = 'bool' self.gui_obj.stateChanged.connect(self.changed) + elif isinstance(self.gui_obj, QRadioButton): + self.datatype = 'bool' + self.gui_obj.toggled.connect(self.changed) elif isinstance(self.gui_obj, QAbstractSpinBox): self.datatype = 'number' self.gui_obj.valueChanged.connect(self.changed) diff --git a/src/calibre/gui2/preferences/search.py b/src/calibre/gui2/preferences/search.py index 5e879a8081..2cff7a9fca 100644 --- a/src/calibre/gui2/preferences/search.py +++ b/src/calibre/gui2/preferences/search.py @@ -7,13 +7,11 @@ __docformat__ = 'restructuredtext en' from PyQt5.Qt import QApplication -from calibre.gui2.preferences import ConfigWidgetBase, test_widget, \ - CommaSeparatedList, AbortCommit +from calibre.gui2.preferences import ConfigWidgetBase, test_widget, CommaSeparatedList from calibre.gui2.preferences.search_ui import Ui_Form from calibre.gui2 import config, error_dialog, gprefs from calibre.utils.config import prefs from calibre.utils.icu import sort_key -from calibre.library.caches import set_use_primary_find_in_search class ConfigWidget(ConfigWidgetBase, Ui_Form): @@ -102,12 +100,6 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): self.muc_changed = False self.opt_grouped_search_make_user_categories.lineEdit().editingFinished.connect( self.muc_box_changed) - self.opt_case_sensitive.toggled.connect(self.case_sensitive_toggled) - self.case_sensitive_toggled() - - def case_sensitive_toggled(self): - if self.opt_case_sensitive.isChecked(): - self.opt_use_primary_find_in_search.setChecked(False) def set_similar_fields(self, initial=False): self.set_similar('similar_authors_search_key', initial=initial) @@ -218,11 +210,6 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): self.gst_value.blockSignals(False) def commit(self): - if self.opt_case_sensitive.isChecked() and self.opt_use_primary_find_in_search.isChecked(): - error_dialog(self, _('Incompatible options'), _( - 'The option to have un-accented characters match accented characters has no effect' - ' if you also turn on case-sensitive searching. So only turn on one of those options'), show=True) - raise AbortCommit() if self.gst_changed: self.db.new_api.set_pref('grouped_search_terms', self.gst) self.db.field_metadata.add_grouped_search_terms(self.gst) @@ -237,7 +224,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): return ConfigWidgetBase.commit(self) def refresh_gui(self, gui): - set_use_primary_find_in_search(prefs['use_primary_find_in_search']) + gui.current_db.new_api.clear_caches() # Clear the search cache gui.set_highlight_only_button_icon() if self.muc_changed: gui.tags_view.recount() diff --git a/src/calibre/gui2/preferences/search.ui b/src/calibre/gui2/preferences/search.ui index c00612777a..69a5e3029e 100644 --- a/src/calibre/gui2/preferences/search.ui +++ b/src/calibre/gui2/preferences/search.ui @@ -307,14 +307,14 @@ to be shown as user categories - + Case sensitive searching - + Unaccented characters match accented characters diff --git a/src/calibre/utils/config_base.py b/src/calibre/utils/config_base.py index bfc8d7b92f..8baf932b94 100644 --- a/src/calibre/utils/config_base.py +++ b/src/calibre/utils/config_base.py @@ -440,7 +440,8 @@ def create_global_prefs(conf_obj=None): 'libraries. Note that this option will have no effect if you turn ' 'on case-sensitive searching')%u'\xf1') c.add_opt('case_sensitive', default=False, help=_( - 'Make searches case-sensitive')) + 'Make searches case-sensitive. Note that turning on case-sensitive searches disables matching of ' + 'accented characters by their unaccented versions.')) c.add_opt('migrated', default=False, help='For Internal use. Don\'t modify.') return c