mirror of
git://github.com/kovidgoyal/calibre.git
synced 2025-12-26 05:06:13 +01:00
59 lines
2.1 KiB
Text
59 lines
2.1 KiB
Text
# vim:fileencoding=utf-8
|
|
# License: GPL v3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
|
from __python__ import hash_literals
|
|
|
|
from elementmaker import E
|
|
from read_book.globals import runtime
|
|
|
|
opts = {}
|
|
|
|
def update_settings(settings):
|
|
settings = settings or {}
|
|
opts.columns_per_screen = settings.columns_per_screen or {'portrait':0, 'landscape':0}
|
|
opts.margin_left = max(0, settings.margin_left or 0)
|
|
opts.margin_right = max(0, settings.margin_right or 0)
|
|
opts.color_scheme = settings.color_scheme
|
|
opts.base_font_size = max(8, min(settings.base_font_size or 16, 64))
|
|
opts.user_stylesheet = settings.user_stylesheet or ''
|
|
opts.hide_tooltips = settings.hide_tooltips
|
|
opts.cover_preserve_aspect_ratio = settings.cover_preserve_aspect_ratio
|
|
|
|
update_settings()
|
|
|
|
|
|
def apply_font_size():
|
|
if not runtime.is_standalone_viewer:
|
|
document.documentElement.style.fontSize = '{}px'.format(opts.base_font_size)
|
|
|
|
|
|
def apply_colors():
|
|
for elem in (document.documentElement, document.body):
|
|
elem.style.color = opts.color_scheme.foreground
|
|
# set background color to transparent so that the users background
|
|
# color which is set on the iframe is used instead
|
|
elem.style.backgroundColor = 'transparent'
|
|
ss = document.getElementById('calibre-color-scheme-style-overrides')
|
|
if not ss:
|
|
ss = E.style(id='calibre-color-scheme-style-overrides', type='text/css')
|
|
document.documentElement.appendChild(ss)
|
|
if opts.color_scheme.link:
|
|
c = opts.color_scheme.link
|
|
ss.textContent = f':link, :link * {{ color: {c} !important }} :visited, :visited * {{ color: {c} !important }}'
|
|
else:
|
|
ss.textContent = ''
|
|
|
|
|
|
def apply_stylesheet():
|
|
if opts.user_stylesheet:
|
|
sid = 'calibre-browser-viewer-user-stylesheet'
|
|
style = document.getElementById(sid)
|
|
if not style:
|
|
style = E.style(type='text/css', id=sid)
|
|
document.documentElement.appendChild(style)
|
|
style.textContent = opts.user_stylesheet
|
|
|
|
|
|
def apply_settings():
|
|
apply_font_size()
|
|
apply_colors()
|
|
apply_stylesheet()
|