diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 3b7c801df0..e307a33430 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -57,6 +57,12 @@ class SearchLineEdit(QLineEdit): # {{{ else: menu.addAction(ac) menu.addSeparator() + ac = menu.addAction(_('Invert current search')) + ac.setEnabled(bool(self.text())) + ac.setIcon(QIcon.ic('search.png')) + ac.triggered.connect(self.reverse_search) + menu.addAction(ac) + menu.addSeparator() if self.as_url is not None: url = self.as_url(self.text()) if url: @@ -64,6 +70,11 @@ class SearchLineEdit(QLineEdit): # {{{ menu.addAction(_('&Clear search history')).triggered.connect(self.clear_history) menu.exec(ev.globalPos()) + def reverse_search(self): + self.setText(f'NOT ( {self.text()} )') + ev = QKeyEvent(QEvent.Type.KeyPress, Qt.Key.Key_Enter, Qt.KeyboardModifier.NoModifier) + self.keyPressEvent(ev) + def paste_and_search(self): self.paste() ev = QKeyEvent(QEvent.Type.KeyPress, Qt.Key.Key_Enter, Qt.KeyboardModifier.NoModifier)