diff --git a/resources/images/highlight_only_off.png b/resources/images/highlight_only_off.png new file mode 100644 index 0000000000..603d60a686 Binary files /dev/null and b/resources/images/highlight_only_off.png differ diff --git a/resources/images/highlight_only_on.png b/resources/images/highlight_only_on.png new file mode 100644 index 0000000000..8d679e56e4 Binary files /dev/null and b/resources/images/highlight_only_on.png differ diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index c01e708933..ebd2acfe1d 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -196,6 +196,10 @@ class SearchBar(QWidget): # {{{ l.addWidget(x) x.setToolTip(_("Reset Quick Search")) + x = parent.highlight_only_button = QToolButton(self) + x.setIcon(QIcon(I('arrow-down.png'))) + l.addWidget(x) + x = parent.search_options_button = QToolButton(self) x.setIcon(QIcon(I('config.png'))) x.setObjectName("search_option_button") diff --git a/src/calibre/gui2/preferences/search.py b/src/calibre/gui2/preferences/search.py index db93cbd525..7bdb12ec55 100644 --- a/src/calibre/gui2/preferences/search.py +++ b/src/calibre/gui2/preferences/search.py @@ -171,10 +171,10 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): return ConfigWidgetBase.commit(self) def refresh_gui(self, gui): + gui.set_highlight_only_button_icon() if self.muc_changed: gui.tags_view.set_new_model() gui.search.search_as_you_type(config['search_as_you_type']) - gui.library_view.model().set_highlight_only(config['highlight_search_matches']) gui.search.do_search() def clear_histories(self, *args): diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 70324ffadc..359cb0b2f6 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -10,7 +10,7 @@ import re from PyQt4.Qt import QComboBox, Qt, QLineEdit, QStringList, pyqtSlot, QDialog, \ pyqtSignal, QCompleter, QAction, QKeySequence, QTimer, \ - QString + QString, QIcon from calibre.gui2 import config from calibre.gui2.dialogs.confirm_delete import confirm @@ -383,6 +383,22 @@ class SearchBoxMixin(object): # {{{ self.advanced_search_button.setStatusTip(self.advanced_search_button.toolTip()) self.clear_button.setStatusTip(self.clear_button.toolTip()) self.search_options_button.clicked.connect(self.search_options_button_clicked) + self.set_highlight_only_button_icon() + self.highlight_only_button.clicked.connect(self.highlight_only_clicked) + tt = _('Enable or disable search highlighting.') + '

' + tt += config.help('highlight_search_matches') + self.highlight_only_button.setToolTip(tt) + + def highlight_only_clicked(self, state): + config['highlight_search_matches'] = not config['highlight_search_matches'] + self.set_highlight_only_button_icon() + + def set_highlight_only_button_icon(self): + if config['highlight_search_matches']: + self.highlight_only_button.setIcon(QIcon(I('highlight_only_on.png'))) + else: + self.highlight_only_button.setIcon(QIcon(I('highlight_only_off.png'))) + self.library_view.model().set_highlight_only(config['highlight_search_matches']) def focus_search_box(self, *args): self.search.setFocus(Qt.OtherFocusReason)