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