diff --git a/src/calibre/gui2/search_restriction_mixin.py b/src/calibre/gui2/search_restriction_mixin.py index 119cf34d14..a09927be5d 100644 --- a/src/calibre/gui2/search_restriction_mixin.py +++ b/src/calibre/gui2/search_restriction_mixin.py @@ -8,7 +8,7 @@ from functools import partial from PyQt4.Qt import ( Qt, QMenu, QPoint, QIcon, QDialog, QGridLayout, QLabel, QLineEdit, - QDialogButtonBox, QSize) + QDialogButtonBox, QSize, QVBoxLayout, QListWidget, QStringList) from calibre.gui2 import error_dialog, question_dialog from calibre.gui2.widgets import ComboBoxWithHelp @@ -16,6 +16,34 @@ from calibre.utils.icu import sort_key from calibre.utils.pyparsing import ParseException from calibre.utils.search_query_parser import saved_searches +class SelectNames(QDialog): # {{{ + + def __init__(self, names, txt, parent=None): + QDialog.__init__(self, parent) + self.l = l = QVBoxLayout(self) + self.setLayout(l) + + self.la = la = QLabel(_('Create a Virtual Library based on %s') % txt) + l.addWidget(la) + + self._names = QListWidget(self) + self._names.addItems(QStringList(sorted(names, key=sort_key))) + self._names.setSelectionMode(self._names.ExtendedSelection) + l.addWidget(self._names) + + self.bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + self.bb.accepted.connect(self.accept) + self.bb.rejected.connect(self.reject) + l.addWidget(self.bb) + + self.resize(self.sizeHint()) + + @property + def names(self): + for item in self._names.selectedItems(): + yield unicode(item.data(Qt.DisplayRole).toString()) +# }}} + class CreateVirtualLibrary(QDialog): # {{{ def __init__(self, gui, existing_names): @@ -42,6 +70,16 @@ class CreateVirtualLibrary(QDialog): # {{{ gl.addWidget(self.vl_text, 1, 1) self.vl_text.setText(self.build_full_search_string()) + self.sl = sl = QLabel('
'+_('Create a virtual library based on: ')+ + ('{0}, ' + '{1}, ' + '{2}, ' + '{3}.').format(_('Authors'), _('Tags'), _('Publishers'), _('Series'))) + sl.setWordWrap(True) + sl.setTextInteractionFlags(Qt.LinksAccessibleByMouse) + sl.linkActivated.connect(self.link_activated) + gl.addWidget(sl, 2, 0, 1, 2) + self.hl = hl = QLabel(_('''