From ff086a69bbbf587fea5deaa724330be1f232d9cf Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 29 Jul 2020 23:10:23 +0530 Subject: [PATCH] Edit book: In dark mode, make the preview panel also dark. Fixes #1888071 [[Enhancement] Make Editor file preview background color customizable](https://bugs.launchpad.net/calibre/+bug/1888071) --- resources/dark_mode.css | 64 ++++++++++++++++++++++++++ src/calibre/gui2/palette.py | 12 ++--- src/calibre/gui2/tweak_book/preview.py | 39 +++++++++++++++- 3 files changed, 108 insertions(+), 7 deletions(-) create mode 100644 resources/dark_mode.css diff --git a/resources/dark_mode.css b/resources/dark_mode.css new file mode 100644 index 0000000000..00a8290a86 --- /dev/null +++ b/resources/dark_mode.css @@ -0,0 +1,64 @@ +/* + * dark_mode.css + * Copyright (C) 2020 Kovid Goyal + * + * Distributed under terms of the MIT license. + */ + +::-webkit-scrollbar { + background: #2B2B2B; + width: 14px; +} + +::-webkit-scrollbar-button { + background: #4B4B4B; + border: 1px solid #4B4B4B; + border-radius: 0; + height: 14px; + width: 14px; +} + +::-webkit-scrollbar-thumb { + background: #666666; + border: 1px solid #959595; + border-radius: 2px; +} +::-webkit-scrollbar-thumb:hover { + background: #929292; +} +::-webkit-scrollbar-thumb:active { + background: #929292; +} +::-webkit-scrollbar-thumb:vertical { + min-height: 40px; +} +::-webkit-scrollbar-track { + background: #4B4B4B; + border: 2px solid #4B4B4B; + border-radius: 0; +} +::-webkit-scrollbar-track:hover { + background: #666666; +} +::-webkit-scrollbar-track:active { + background: #333333; +} +::-webkit-scrollbar-corner { + background: #999999; +} + +::-webkit-scrollbar-button:vertical:start { + width: 14px; + height: 14px; + background-repeat: no-repeat; + background-position: center; + background-image: url(data:image/png;base64,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) +} + +::-webkit-scrollbar-button:vertical:end { + width: 14px; + height: 14px; + background-repeat: no-repeat; + background-position: center; + background-image: url(data:image/png;base64,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) +} diff --git a/src/calibre/gui2/palette.py b/src/calibre/gui2/palette.py index 5989013368..b4971b6af0 100644 --- a/src/calibre/gui2/palette.py +++ b/src/calibre/gui2/palette.py @@ -9,23 +9,23 @@ from calibre.constants import dark_link_color dark_link_color = QColor(dark_link_color) +dark_color = QColor(45,45,45) +dark_text_color = QColor('#eee') def dark_palette(): p = QPalette() - dark_color = QColor(45,45,45) disabled_color = QColor(127,127,127) - text_color = QColor('#eee') p.setColor(p.Window, dark_color) - p.setColor(p.WindowText, text_color) + p.setColor(p.WindowText, dark_text_color) p.setColor(p.Base, QColor(18,18,18)) p.setColor(p.AlternateBase, dark_color) p.setColor(p.ToolTipBase, dark_color) - p.setColor(p.ToolTipText, text_color) - p.setColor(p.Text, text_color) + p.setColor(p.ToolTipText, dark_text_color) + p.setColor(p.Text, dark_text_color) p.setColor(p.Disabled, p.Text, disabled_color) p.setColor(p.Button, dark_color) - p.setColor(p.ButtonText, text_color) + p.setColor(p.ButtonText, dark_text_color) p.setColor(p.Disabled, p.ButtonText, disabled_color) p.setColor(p.BrightText, Qt.red) p.setColor(p.Link, dark_link_color) diff --git a/src/calibre/gui2/tweak_book/preview.py b/src/calibre/gui2/tweak_book/preview.py index e6804113ef..3f48d57f69 100644 --- a/src/calibre/gui2/tweak_book/preview.py +++ b/src/calibre/gui2/tweak_book/preview.py @@ -3,6 +3,7 @@ # License: GPLv3 Copyright: 2015, Kovid Goyal from __future__ import absolute_import, division, print_function, unicode_literals +import json import textwrap import time from collections import defaultdict @@ -24,7 +25,8 @@ from calibre.constants import ( ) from calibre.ebooks.oeb.base import OEB_DOCS, XHTML_MIME, serialize from calibre.ebooks.oeb.polish.parsing import parse -from calibre.gui2 import NO_URL_FORMATTING, error_dialog, open_url +from calibre.gui2 import NO_URL_FORMATTING, error_dialog, is_dark_theme, open_url +from calibre.gui2.palette import dark_color, dark_text_color from calibre.gui2.tweak_book import TOP, actions, current_container, editors, tprefs from calibre.gui2.tweak_book.file_list import OpenWithHandler from calibre.gui2.viewer.web_view import handle_mathjax_request, send_reply @@ -243,10 +245,37 @@ def create_profile(): compile_editor() js = P('editor.js', data=True, allow_user_override=False) cparser = P('csscolorparser.js', data=True, allow_user_override=False) + dark_mode_css = P('dark_mode.css', data=True, allow_user_override=False).decode('utf-8') insert_scripts(ans, create_script('csscolorparser.js', cparser), create_script('editor.js', js), + create_script('dark-mode.js', ''' + (function() {if (%s) { + var dark_bg = "%s", dark_fg = "%s", css = %s; + function apply_css() { + var style = document.createElement('style'); + style.textContent = css; + document.documentElement.appendChild(style); + } + + function apply_dark_mode(event) { + if (document.documentElement) { + document.documentElement.style.backgroundColor = dark_bg; + document.documentElement.style.color = dark_fg; + } + if (document.body) { + document.body.style.backgroundColor = dark_bg; + document.body.style.color = dark_fg; + } + } + apply_css(); + apply_dark_mode(); + document.addEventListener("DOMContentLoaded", apply_dark_mode); + } })(); + ''' % ( + 'true' if is_dark_theme() else 'false', dark_color.name(), dark_text_color.name(), json.dumps(dark_mode_css)), + injection_point=QWebEngineScript.DocumentCreation) ) url_handler = UrlSchemeHandler(ans) ans.installUrlSchemeHandler(QByteArray(FAKE_PROTOCOL.encode('ascii')), url_handler) @@ -443,7 +472,9 @@ class Preview(QWidget): self.view._page.bridge.request_sync.connect(self.request_sync) self.view._page.bridge.request_split.connect(self.request_split) self.view._page.bridge.live_css_data.connect(self.live_css_data) + self.view._page.bridge.bridge_ready.connect(self.on_bridge_ready) self.view._page.loadFinished.connect(self.load_finished) + self.view._page.loadStarted.connect(self.load_started) self.view.render_process_restarted.connect(self.render_process_restarted) self.pending_go_to_anchor = None self.inspector = self.view.inspector @@ -649,6 +680,12 @@ class Preview(QWidget): def stop_split(self): actions['split-in-preview'].setChecked(False) + def load_started(self): + pass + + def on_bridge_ready(self): + pass + def load_finished(self, ok): if self.pending_go_to_anchor: self.view._page.go_to_anchor(self.pending_go_to_anchor)