From 2d76655ddc91a3330d5ea12124b152e4381f2052 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 18 Apr 2014 17:00:50 +0530 Subject: [PATCH] Spell check dialog: Allow sorting words case sensitively --- src/calibre/gui2/tweak_book/__init__.py | 1 + src/calibre/gui2/tweak_book/spell.py | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/tweak_book/__init__.py b/src/calibre/gui2/tweak_book/__init__.py index dbc3236727..c07d2baecb 100644 --- a/src/calibre/gui2/tweak_book/__init__.py +++ b/src/calibre/gui2/tweak_book/__init__.py @@ -45,6 +45,7 @@ d['pretty_print_on_open'] = False d['disable_completion_popup_for_search'] = False d['saved_searches'] = [] d['insert_tag_mru'] = ['p', 'div', 'li', 'h1', 'h2', 'h3', 'h4', 'em', 'strong', 'td', 'tr'] +d['spell_check_case_sensitive_sort'] = False del d diff --git a/src/calibre/gui2/tweak_book/spell.py b/src/calibre/gui2/tweak_book/spell.py index 4e4b66bd19..eb2d94df1a 100644 --- a/src/calibre/gui2/tweak_book/spell.py +++ b/src/calibre/gui2/tweak_book/spell.py @@ -584,8 +584,9 @@ class WordsModel(QAbstractTableModel): def sort_key(self, col): if col == 0: + f = (lambda x: x) if tprefs['spell_check_case_sensitive_sort'] else primary_sort_key def key(w): - return primary_sort_key(w[0]) + return f(w[0]) elif col == 1: def key(w): return len(self.words[w]) @@ -807,12 +808,22 @@ class SpellCheck(Dialog): l.addWidget(sl) hh.setSectionHidden(3, m.show_only_misspelt) - self.show_only_misspelled = om = QCheckBox(_('Show only misspelled words')) + self.show_only_misspelled = om = QCheckBox(_('Show &only misspelled words')) om.setChecked(m.show_only_misspelt) om.stateChanged.connect(self.update_show_only_misspelt) + self.case_sensitive_sort = cs = QCheckBox(_('Case &sensitive sort')) + cs.setChecked(tprefs['spell_check_case_sensitive_sort']) + cs.stateChanged.connect(self.sort_type_changed) self.hb = h = QHBoxLayout() self.summary = s = QLabel('') - self.main.l.addLayout(h), h.addWidget(s), h.addWidget(om), h.addStretch(10) + self.main.l.addLayout(h), h.addWidget(s), h.addWidget(om), h.addWidget(cs), h.addStretch(1) + + def sort_type_changed(self): + tprefs['spell_check_case_sensitive_sort'] = bool(self.case_sensitive_sort.isChecked()) + if self.words_model.sort_on[0] == 0: + with self: + hh = self.words_view.horizontalHeader() + self.words_view.sortByColumn(hh.sortIndicatorSection(), hh.sortIndicatorOrder()) def show_next_occurrence(self): self.word_activated(self.words_view.currentIndex())