From 9d55e3aa9e54707dd66ad22971e87f7995b0c645 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 20 May 2017 12:26:31 +0530 Subject: [PATCH] Book details panel: Allow right clicking on author names to search for them in calibre. Allow clicking on language names to search for them in calibre. Fixes #1692084 [Choice to show author in library](https://bugs.launchpad.net/calibre/+bug/1692084) --- src/calibre/ebooks/metadata/book/render.py | 2 ++ src/calibre/gui2/book_details.py | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/calibre/ebooks/metadata/book/render.py b/src/calibre/ebooks/metadata/book/render.py index 2ff4ebcaa7..b6f340f7ca 100644 --- a/src/calibre/ebooks/metadata/book/render.py +++ b/src/calibre/ebooks/metadata/book/render.py @@ -227,6 +227,8 @@ def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers= if not mi.languages: continue names = filter(None, map(calibre_langcode_to_name, mi.languages)) + names = ['%s' % (search_href('languages', n), _( + 'Search calibre for books with the language: {}').format(n), n) for n in names] ans.append((field, row % (name, u', '.join(names)))) elif field == 'publisher': if not mi.publisher: diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index c123888b82..0bb5073594 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -237,6 +237,9 @@ def details_context_menu_event(view, ev, book_info): # {{{ menu.sia = sia = create_search_internet_menu(book_info.search_internet, author) menu.addMenu(sia) search_internet_added = True + if hasattr(book_info, 'search_requested'): + menu.addAction(_('Search calibre for %s') % author, + lambda : book_info.search_requested('authors:"={}"'.format(author.replace('"', r'\"')))) if data: try: field, value, book_id = cPickle.loads(unhexlify(data)) @@ -757,6 +760,7 @@ class BookDetails(QWidget): # {{{ self._layout.addWidget(self.cover_view) self.book_info = BookInfo(vertical, self) self.book_info.search_internet = self.search_internet + self.book_info.search_requested = self.search_requested.emit self._layout.addWidget(self.book_info) self.book_info.link_clicked.connect(self.handle_click) self.book_info.remove_format.connect(self.remove_specific_format)