mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add a template button to Pref / L&F / book details. Add necessary code for the tester to evaluate the template.
This commit is contained in:
parent
2242151ea6
commit
d7cc86be2e
@ -7,14 +7,17 @@ __docformat__ = 'restructuredtext en'
|
|||||||
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from qt.core import QAbstractListModel, QComboBox, QFormLayout, QIcon, QItemSelectionModel, QLineEdit, Qt, QVBoxLayout, QWidget, pyqtSignal
|
from qt.core import QAbstractListModel, QComboBox, QDialog, QFormLayout, QHBoxLayout, QIcon, QItemSelectionModel, QLineEdit, Qt, QToolButton, QVBoxLayout, QWidget, pyqtSignal
|
||||||
|
|
||||||
from calibre.ebooks.metadata.book.render import DEFAULT_AUTHOR_LINK
|
from calibre.ebooks.metadata.book.render import DEFAULT_AUTHOR_LINK
|
||||||
|
from calibre.ebooks.metadata.search_internet import qquote
|
||||||
from calibre.gui2 import choose_files, choose_save_file, error_dialog
|
from calibre.gui2 import choose_files, choose_save_file, error_dialog
|
||||||
from calibre.gui2.book_details import get_field_list
|
from calibre.gui2.book_details import get_field_list
|
||||||
|
from calibre.gui2.dialogs.template_dialog import TemplateDialog
|
||||||
from calibre.gui2.preferences import LazyConfigWidgetBase
|
from calibre.gui2.preferences import LazyConfigWidgetBase
|
||||||
from calibre.gui2.preferences.coloring import EditRules
|
from calibre.gui2.preferences.coloring import EditRules
|
||||||
from calibre.gui2.ui import get_gui
|
from calibre.gui2.ui import get_gui
|
||||||
|
from calibre.utils.formatter import EvalFormatter
|
||||||
|
|
||||||
|
|
||||||
class DefaultAuthorLink(QWidget):
|
class DefaultAuthorLink(QWidget):
|
||||||
@ -44,6 +47,7 @@ class DefaultAuthorLink(QWidget):
|
|||||||
]:
|
]:
|
||||||
c.addItem(text, data)
|
c.addItem(text, data)
|
||||||
l.addRow(_('Clicking on &author names should:'), c)
|
l.addRow(_('Clicking on &author names should:'), c)
|
||||||
|
ul = QHBoxLayout()
|
||||||
self.custom_url = u = QLineEdit(self)
|
self.custom_url = u = QLineEdit(self)
|
||||||
u.setToolTip(_(
|
u.setToolTip(_(
|
||||||
'Enter the URL to search. It should contain the string {0}'
|
'Enter the URL to search. It should contain the string {0}'
|
||||||
@ -51,8 +55,14 @@ class DefaultAuthorLink(QWidget):
|
|||||||
'\n{1}').format('{author}', 'https://en.wikipedia.org/w/index.php?search={author}'))
|
'\n{1}').format('{author}', 'https://en.wikipedia.org/w/index.php?search={author}'))
|
||||||
u.textChanged.connect(self.changed_signal)
|
u.textChanged.connect(self.changed_signal)
|
||||||
u.setPlaceholderText(_('Enter the URL'))
|
u.setPlaceholderText(_('Enter the URL'))
|
||||||
|
ul.addWidget(u)
|
||||||
|
u = self.custom_url_button = QToolButton()
|
||||||
|
u.setIcon(QIcon.ic('edit_input.png'))
|
||||||
|
u.setToolTip(_('Click this button to open the template tester'))
|
||||||
|
u.clicked.connect(self.open_template_tester)
|
||||||
|
ul.addWidget(u)
|
||||||
c.currentIndexChanged.connect(self.current_changed)
|
c.currentIndexChanged.connect(self.current_changed)
|
||||||
l.addRow(u)
|
l.addRow(ul)
|
||||||
self.current_changed()
|
self.current_changed()
|
||||||
c.currentIndexChanged.connect(self.changed_signal)
|
c.currentIndexChanged.connect(self.changed_signal)
|
||||||
|
|
||||||
@ -71,9 +81,29 @@ class DefaultAuthorLink(QWidget):
|
|||||||
self.custom_url.setText(val)
|
self.custom_url.setText(val)
|
||||||
self.choices.setCurrentIndex(i)
|
self.choices.setCurrentIndex(i)
|
||||||
|
|
||||||
|
def open_template_tester(self):
|
||||||
|
gui = get_gui()
|
||||||
|
db = gui.current_db.new_api
|
||||||
|
lv = gui.library_view
|
||||||
|
rows = lv.selectionModel().selectedRows()
|
||||||
|
if not rows:
|
||||||
|
vals = [{'author': qquote(_('Author')), 'title': _('Title'), 'author_sort': _('Author sort')}]
|
||||||
|
else:
|
||||||
|
vals = []
|
||||||
|
for row in rows:
|
||||||
|
book_id = lv.model().id(row)
|
||||||
|
mi = db.new_api.get_proxy_metadata(book_id)
|
||||||
|
vals.append({'author': qquote(mi.authors[0]),
|
||||||
|
'title': qquote(mi.title),
|
||||||
|
'author_sort': qquote(mi.author_sort_map.get(mi.authors[0]))})
|
||||||
|
d = TemplateDialog(parent=self, text=self.custom_url.text(), mi=vals, formatter=EvalFormatter)
|
||||||
|
if d.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
self.custom_url.setText(d.rule[1])
|
||||||
|
|
||||||
def current_changed(self):
|
def current_changed(self):
|
||||||
k = self.choices.currentData()
|
k = self.choices.currentData()
|
||||||
self.custom_url.setVisible(k == 'url')
|
self.custom_url.setVisible(k == 'url')
|
||||||
|
self.custom_url_button.setVisible(k == 'url')
|
||||||
|
|
||||||
def restore_defaults(self):
|
def restore_defaults(self):
|
||||||
self.value = DEFAULT_AUTHOR_LINK
|
self.value = DEFAULT_AUTHOR_LINK
|
||||||
|
Loading…
x
Reference in New Issue
Block a user