mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
ToC editor: Dark mode: Fix colors in location selection panel not dark
This commit is contained in:
parent
26b8d40b12
commit
57fc7739d3
@ -4,10 +4,13 @@
|
|||||||
*
|
*
|
||||||
* Distributed under terms of the GPLv3 license
|
* Distributed under terms of the GPLv3 license
|
||||||
*/
|
*/
|
||||||
|
/*jshint esversion: 6 */
|
||||||
(function() {
|
(function() {
|
||||||
"use strict";
|
"use strict";
|
||||||
var com_id = "COM_ID";
|
var com_id = "COM_ID";
|
||||||
var com_counter = 0;
|
var com_counter = 0;
|
||||||
|
var dark_css = CSS;
|
||||||
|
var settings = SETTINGS;
|
||||||
|
|
||||||
function onclick(event) {
|
function onclick(event) {
|
||||||
// We dont want this event to trigger onclick on this element's parent
|
// We dont want this event to trigger onclick on this element's parent
|
||||||
@ -38,7 +41,7 @@
|
|||||||
|
|
||||||
function find_blocks() {
|
function find_blocks() {
|
||||||
for (let elem of document.body.getElementsByTagName('*')) {
|
for (let elem of document.body.getElementsByTagName('*')) {
|
||||||
style = window.getComputedStyle(elem);
|
var style = window.getComputedStyle(elem);
|
||||||
if (style.display === 'block' || style.display === 'flex-box' || style.display === 'box') {
|
if (style.display === 'block' || style.display === 'flex-box' || style.display === 'box') {
|
||||||
elem.classList.add("calibre_toc_hover");
|
elem.classList.add("calibre_toc_hover");
|
||||||
elem.onclick = onclick;
|
elem.onclick = onclick;
|
||||||
@ -46,8 +49,34 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var style = document.createElement('style');
|
function apply_body_colors(event) {
|
||||||
style.innerText = 'body { background-color: white }' + '.calibre_toc_hover:hover { cursor: pointer !important; border-top: solid 5px green !important }' + '::selection {background:#ffff00; color:#000;}';
|
if (document.documentElement) {
|
||||||
document.documentElement.appendChild(style);
|
if (settings.bg) document.documentElement.style.backgroundColor = settings.bg;
|
||||||
find_blocks();
|
if (settings.fg) document.documentElement.style.color = settings.fg;
|
||||||
|
}
|
||||||
|
if (document.body) {
|
||||||
|
if (settings.bg) document.body.style.backgroundColor = settings.bg;
|
||||||
|
if (settings.fg) document.body.style.color = settings.fg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function apply_css() {
|
||||||
|
var css = '';
|
||||||
|
var border_shade = settings.is_dark_theme ? 'lightGreen' : 'green';
|
||||||
|
css += '.calibre_toc_hover:hover { cursor: pointer !important; border-top: solid 5px ' + border_shade + ' !important }\n\n';
|
||||||
|
if (settings.link) css += 'html > body :link, html > body :link * { color: ' + settings.link + ' !important; }\n\n';
|
||||||
|
if (settings.is_dark_theme) { css += dark_css; }
|
||||||
|
var style = document.createElement('style');
|
||||||
|
style.textContent = css;
|
||||||
|
document.body.appendChild(style);
|
||||||
|
}
|
||||||
|
|
||||||
|
apply_body_colors();
|
||||||
|
|
||||||
|
function apply_all() {
|
||||||
|
apply_css();
|
||||||
|
apply_body_colors();
|
||||||
|
find_blocks();
|
||||||
|
}
|
||||||
|
document.addEventListener("DOMContentLoaded", apply_all);
|
||||||
})();
|
})();
|
||||||
|
@ -7,7 +7,7 @@ import json
|
|||||||
|
|
||||||
from qt.core import (
|
from qt.core import (
|
||||||
QFrame, QGridLayout, QIcon, QLabel, QLineEdit, QListWidget, QPushButton, QSize,
|
QFrame, QGridLayout, QIcon, QLabel, QLineEdit, QListWidget, QPushButton, QSize,
|
||||||
QSplitter, Qt, QUrl, QVBoxLayout, QWidget, pyqtSignal
|
QSplitter, Qt, QUrl, QVBoxLayout, QWidget, pyqtSignal, QApplication, QPalette
|
||||||
)
|
)
|
||||||
from qt.webengine import QWebEnginePage, QWebEngineScript, QWebEngineView
|
from qt.webengine import QWebEnginePage, QWebEngineScript, QWebEngineView
|
||||||
|
|
||||||
@ -33,10 +33,21 @@ class Page(QWebEnginePage): # {{{
|
|||||||
self.loadFinished.connect(self.show_frag)
|
self.loadFinished.connect(self.show_frag)
|
||||||
s = QWebEngineScript()
|
s = QWebEngineScript()
|
||||||
s.setName('toc.js')
|
s.setName('toc.js')
|
||||||
s.setInjectionPoint(QWebEngineScript.InjectionPoint.DocumentReady)
|
s.setInjectionPoint(QWebEngineScript.InjectionPoint.DocumentCreation)
|
||||||
s.setRunsOnSubFrames(True)
|
s.setRunsOnSubFrames(True)
|
||||||
s.setWorldId(QWebEngineScript.ScriptWorldId.ApplicationWorld)
|
s.setWorldId(QWebEngineScript.ScriptWorldId.ApplicationWorld)
|
||||||
s.setSourceCode(P('toc.js', allow_user_override=False, data=True).decode('utf-8').replace('COM_ID', self.com_id))
|
js = P('toc.js', allow_user_override=False, data=True).decode('utf-8').replace('COM_ID', self.com_id, 1)
|
||||||
|
pal = QApplication.instance().palette()
|
||||||
|
settings = {
|
||||||
|
'is_dark_theme': QApplication.instance().is_dark_theme,
|
||||||
|
'bg': pal.color(QPalette.ColorRole.Window).name(),
|
||||||
|
'fg': pal.color(QPalette.ColorRole.WindowText).name(),
|
||||||
|
'link': pal.color(QPalette.ColorRole.Link).name(),
|
||||||
|
}
|
||||||
|
js = js.replace('SETTINGS', json.dumps(settings), 1)
|
||||||
|
dark_mode_css = P('dark_mode.css', data=True, allow_user_override=False).decode('utf-8')
|
||||||
|
js = js.replace('CSS', json.dumps(dark_mode_css), 1)
|
||||||
|
s.setSourceCode(js)
|
||||||
self.scripts().insert(s)
|
self.scripts().insert(s)
|
||||||
|
|
||||||
def javaScriptConsoleMessage(self, level, msg, lineno, msgid):
|
def javaScriptConsoleMessage(self, level, msg, lineno, msgid):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user