mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Viewer: Add a setting under Preferences->Colors to control when the viewer will override all book colors or not.
This commit is contained in:
parent
e9b09b0066
commit
307680a019
@ -185,6 +185,7 @@ def set_action_button_visibility():
|
||||
def create_colors_panel(container, apply_func, cancel_func):
|
||||
container.appendChild(E.div(id=CONTAINER))
|
||||
container = container.lastChild
|
||||
sd = get_session_data()
|
||||
cs = resolve_color_scheme()
|
||||
container.dataset.bg = cs.background
|
||||
container.dataset.fg = cs.foreground
|
||||
@ -192,6 +193,19 @@ def create_colors_panel(container, apply_func, cancel_func):
|
||||
container.appendChild(E.p(_('Choose a color scheme below'), style='margin:1ex 1em; padding: 1ex 0'))
|
||||
ul = E.ul(id=COLOR_LIST)
|
||||
container.appendChild(ul)
|
||||
container.appendChild(E.div(
|
||||
E.span(_('Override all book colors:') + '\xa0'),
|
||||
E.label(E.input(type='radio', name='override_book_colors', value='never'), _('Never')),
|
||||
' ',
|
||||
E.label(E.input(type='radio', name='override_book_colors', value='dark'), _('In dark mode')),
|
||||
' ',
|
||||
E.label(E.input(type='radio', name='override_book_colors', value='always'), _('Always')),
|
||||
style='margin:1ex 1em; padding: 1ex 0; white-space: pre-wrap'
|
||||
))
|
||||
try:
|
||||
container.lastChild.querySelector(f'[name=override_book_colors][value={sd.get("override_book_colors")}]').checked = True
|
||||
except:
|
||||
container.lastChild.querySelector('[name=override_book_colors][value=never]').checked = True
|
||||
create_color_buttons()
|
||||
|
||||
container.appendChild(E.div(
|
||||
@ -229,7 +243,11 @@ def commit_colors(onchange):
|
||||
rcs = resolve_color_scheme(ccs)
|
||||
c = get_container()
|
||||
sd = get_session_data()
|
||||
prev_obc = sd.get('override_book_colors')
|
||||
cur_obc = c.querySelector('[name=override_book_colors]:checked').value
|
||||
sd.set('current_color_scheme', ccs)
|
||||
if rcs.foreground is not c.dataset.fg or rcs.background is not c.dataset.bg or c.dataset.link is not rcs.link:
|
||||
if cur_obc is not prev_obc:
|
||||
sd.set('override_book_colors', cur_obc)
|
||||
if rcs.foreground is not c.dataset.fg or rcs.background is not c.dataset.bg or c.dataset.link is not rcs.link or cur_obc is not prev_obc:
|
||||
ui_operations.update_color_scheme()
|
||||
onchange()
|
||||
|
@ -20,6 +20,7 @@ def update_settings(settings):
|
||||
opts.bg_image_fade = settings.bg_image_fade or 'transparent'
|
||||
opts.paged_wheel_scrolls_by_screen = v'!!settings.paged_wheel_scrolls_by_screen'
|
||||
opts.is_dark_theme = v'!!settings.is_dark_theme'
|
||||
opts.override_book_colors = settings.override_book_colors or 'never'
|
||||
|
||||
update_settings()
|
||||
|
||||
@ -40,11 +41,17 @@ def apply_colors():
|
||||
if not ss:
|
||||
ss = E.style(id='calibre-color-scheme-style-overrides', type='text/css')
|
||||
document.documentElement.appendChild(ss)
|
||||
text = ''
|
||||
if opts.override_book_colors is not 'never':
|
||||
text = 'body'
|
||||
if opts.override_book_colors is 'dark':
|
||||
text += '.calibre-viewer-dark-colors'
|
||||
text += f' * {{ color: {opts.color_scheme.foreground} !important; background-color: {opts.color_scheme.background} !important }}'
|
||||
if opts.color_scheme.link:
|
||||
c = opts.color_scheme.link
|
||||
text = f':link, :link * {{ color: {c} !important }} :visited, :visited * {{ color: {c} !important }}'
|
||||
else:
|
||||
text = ''
|
||||
# we use the html > body form so that these selectors have higher
|
||||
# priority than the override all selectors above
|
||||
text += f'\nhtml > body :link, html > body :link * {{ color: {c} !important }} html > body :visited, html > body :visited * {{ color: {c} !important }}'
|
||||
|
||||
ss.textContent = text
|
||||
|
||||
|
@ -691,6 +691,7 @@ class View:
|
||||
'read_mode': sd.get('read_mode'),
|
||||
'columns_per_screen': sd.get('columns_per_screen'),
|
||||
'color_scheme': cs,
|
||||
'override_book_colors': sd.get('override_book_colors'),
|
||||
'is_dark_theme': is_dark_theme,
|
||||
'bg_image_fade': bg_image_fade,
|
||||
'base_font_size': sd.get('base_font_size'),
|
||||
|
@ -39,6 +39,7 @@ defaults = {
|
||||
'background_image_fade': 0,
|
||||
'current_color_scheme': 'system',
|
||||
'user_color_schemes': {},
|
||||
'override_book_colors': 'never',
|
||||
'base_font_size': 16,
|
||||
'controls_help_shown_count': 0,
|
||||
'header': {},
|
||||
@ -68,6 +69,7 @@ is_local_setting = {
|
||||
'background_image_style': True,
|
||||
'background_image_fade': True,
|
||||
'current_color_scheme': True,
|
||||
'override_book_colors': True,
|
||||
'base_font_size': True,
|
||||
'controls_help_shown_count': True,
|
||||
'standalone_font_settings': True,
|
||||
|
Loading…
x
Reference in New Issue
Block a user