From 709570800482e5301613b82ebe512b13e156089b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 31 Mar 2022 12:11:52 +0530 Subject: [PATCH] Allow filtering authors/tags when creating virtual library based on them. Fixes #1966537 [[Enhancement] Filter when creating a Virtual library](https://bugs.launchpad.net/calibre/+bug/1966537) --- src/calibre/gui2/search_restriction_mixin.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/search_restriction_mixin.py b/src/calibre/gui2/search_restriction_mixin.py index 846b5b3e94..a74049202c 100644 --- a/src/calibre/gui2/search_restriction_mixin.py +++ b/src/calibre/gui2/search_restriction_mixin.py @@ -9,7 +9,7 @@ from gettext import pgettext from qt.core import ( QAbstractItemView, QAction, QComboBox, QDialog, QDialogButtonBox, QFrame, QGridLayout, QIcon, QLabel, QLineEdit, QListView, QMenu, QRadioButton, QSize, - QStringListModel, Qt, QTextBrowser, QVBoxLayout + QStringListModel, Qt, QTextBrowser, QVBoxLayout, QSortFilterProxyModel ) from calibre.gui2 import error_dialog, gprefs, question_dialog @@ -30,9 +30,18 @@ class SelectNames(QDialog): # {{{ self.la = la = QLabel(_('Create a Virtual library based on %s') % txt) l.addWidget(la) + self.filter = f = QLineEdit(self) + f.setPlaceholderText(_('Filter {}').format(txt)) + f.setClearButtonEnabled(True) + l.addWidget(f) + self.model = QStringListModel(sorted(names, key=sort_key)) + self.pmodel = QSortFilterProxyModel(self) + self.pmodel.setFilterCaseSensitivity(Qt.CaseSensitivity.CaseInsensitive) + f.textChanged.connect(self.pmodel.setFilterFixedString) + self.pmodel.setSourceModel(self.model) self._names = QListView(self) - self._names.setModel(self.model) + self._names.setModel(self.pmodel) self._names.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection) l.addWidget(self._names)