mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add menu action "Reverse current search" to the search bar context menu.
Reason: it is sometimes easier to reason about searches as "I want whatever this doesn't match". In addition, most calibre search tools are "positive", returning matches. This context menu action lets you easily reverse a search, returning everything that doesn't match. NB: "Reverse" could be "Invert". I don't know which is the better word.
This commit is contained in:
parent
d7d9d466b6
commit
d77c793f64
@ -57,6 +57,12 @@ class SearchLineEdit(QLineEdit): # {{{
|
|||||||
else:
|
else:
|
||||||
menu.addAction(ac)
|
menu.addAction(ac)
|
||||||
menu.addSeparator()
|
menu.addSeparator()
|
||||||
|
ac = menu.addAction(_('Reverse 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:
|
if self.as_url is not None:
|
||||||
url = self.as_url(self.text())
|
url = self.as_url(self.text())
|
||||||
if url:
|
if url:
|
||||||
@ -64,6 +70,11 @@ class SearchLineEdit(QLineEdit): # {{{
|
|||||||
menu.addAction(_('&Clear search history')).triggered.connect(self.clear_history)
|
menu.addAction(_('&Clear search history')).triggered.connect(self.clear_history)
|
||||||
menu.exec(ev.globalPos())
|
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):
|
def paste_and_search(self):
|
||||||
self.paste()
|
self.paste()
|
||||||
ev = QKeyEvent(QEvent.Type.KeyPress, Qt.Key.Key_Enter, Qt.KeyboardModifier.NoModifier)
|
ev = QKeyEvent(QEvent.Type.KeyPress, Qt.Key.Key_Enter, Qt.KeyboardModifier.NoModifier)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user