From db8742a39316648c5f94b1dc26f0f50268a7f2c3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 8 Jul 2016 11:51:56 +0530 Subject: [PATCH] Book details panel: Pick the color used for links from the current system color theme --- resources/templates/book_details.css | 3 ++- src/calibre/gui2/book_details.py | 13 +++++++++++-- src/calibre/gui2/dialogs/book_info.py | 9 +-------- src/calibre/gui2/viewer/ui.py | 5 ++--- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/resources/templates/book_details.css b/resources/templates/book_details.css index 6c06296cb1..b84c3d6743 100644 --- a/resources/templates/book_details.css +++ b/resources/templates/book_details.css @@ -1,6 +1,7 @@ a { text-decoration: none; - color: blue + /* LINK_COLOR below will be replaced with the link color defined by the current color theme */ + color: LINK_COLOR } a:hover { diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index 62e1670a91..6d0775544d 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -25,6 +25,16 @@ from calibre.gui2 import (config, open_url, pixmap_to_data, gprefs, rating_font, from calibre.utils.config import tweaks from calibre.utils.localization import is_rtl +_css = None +def css(): + global _css + if _css is None: + _css = P('templates/book_details.css', data=True).decode('utf-8') + col = QApplication.instance().palette().color(QPalette.Link).name() + _css = _css.replace('LINK_COLOR', col) + return _css + + def render_html(mi, css, vertical, widget, all_fields=False, render_data_func=None): # {{{ table, comment_fields = (render_data_func or render_data)(mi, all_fields=all_fields, use_roman_numbers=config['use_roman_numerals_for_series_number']) @@ -422,7 +432,6 @@ class BookInfo(QWebView): self.setAcceptDrops(False) palette.setBrush(QPalette.Base, Qt.transparent) self.page().setPalette(palette) - self.css = P('templates/book_details.css', data=True).decode('utf-8') for x, icon in [ ('remove_format', 'trash.png'), ('save_format', 'save.png'), ('restore_format', 'edit-undo.png'), ('copy_link','edit-copy.png'), @@ -485,7 +494,7 @@ class BookInfo(QWebView): self.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) def show_data(self, mi): - html = render_html(mi, self.css, self.vertical, self.parent()) + html = render_html(mi, css(), self.vertical, self.parent()) self.setHtml(html) def mouseDoubleClickEvent(self, ev): diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py index 4ace1e128d..ded291d1bc 100644 --- a/src/calibre/gui2/dialogs/book_info.py +++ b/src/calibre/gui2/dialogs/book_info.py @@ -14,16 +14,9 @@ from PyQt5.QtWebKitWidgets import QWebView from calibre.gui2 import gprefs, NO_URL_FORMATTING from calibre import fit_image -from calibre.gui2.book_details import render_html, details_context_menu_event +from calibre.gui2.book_details import render_html, details_context_menu_event, css from calibre.gui2.widgets import CoverView -_css = None -def css(): - global _css - if _css is None: - _css = P('templates/book_details.css', data=True).decode('utf-8') - return _css - class Details(QWebView): def __init__(self, book_info, parent=None): diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index 00829142c3..4a0d11e997 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -75,21 +75,20 @@ class Metadata(QWebView): # {{{ palette = self.palette() palette.setBrush(QPalette.Base, Qt.transparent) self.page().setPalette(palette) - self.css = P('templates/book_details.css', data=True).decode('utf-8') self.setVisible(False) def update_layout(self): self.setGeometry(0, 0, self.parent().width(), self.parent().height()) def show_opf(self, opf, ext=''): - from calibre.gui2.book_details import render_html + from calibre.gui2.book_details import render_html, css from calibre.ebooks.metadata.book.render import mi_to_html def render_data(mi, use_roman_numbers=True, all_fields=False): return mi_to_html(mi, use_roman_numbers=use_roman_numbers, rating_font=rating_font(), rtl=is_rtl()) mi = opf.to_book_metadata() - html = render_html(mi, self.css, True, self, render_data_func=render_data) + html = render_html(mi, css(), True, self, render_data_func=render_data) self.setHtml(html) def setVisible(self, x):