Make base font size a setting

This commit is contained in:
Kovid Goyal 2016-09-26 15:40:48 +05:30
parent e3300f3123
commit 4d8786e4e9
4 changed files with 26 additions and 4 deletions

View File

@ -4,7 +4,6 @@ from __python__ import bound_methods, hash_literals
import traceback import traceback
from aes import GCM from aes import GCM
from elementmaker import E
from gettext import install, gettext as _ from gettext import install, gettext as _
from read_book.cfi import at_current, scroll_to as scroll_to_cfi from read_book.cfi import at_current, scroll_to as scroll_to_cfi
from read_book.globals import set_boss, set_current_spine_item, current_layout_mode, current_spine_item, set_layout_mode from read_book.globals import set_boss, set_current_spine_item, current_layout_mode, current_spine_item, set_layout_mode
@ -45,6 +44,7 @@ class IframeBoss:
'display': self.display, 'display': self.display,
'scroll_to_anchor': self.on_scroll_to_anchor, 'scroll_to_anchor': self.on_scroll_to_anchor,
'next_screen': self.on_next_screen, 'next_screen': self.on_next_screen,
'change_font_size': self.change_font_size,
} }
self.last_window_ypos = 0 self.last_window_ypos = 0
@ -135,11 +135,26 @@ class IframeBoss:
else: else:
paged_scroll_by_page(backwards, True) paged_scroll_by_page(backwards, True)
def apply_font_size(self):
document.documentElement.style.fontSize = document.body.style.fontSize = '{}px'.format(opts.base_font_size)
def apply_colors(self):
for elem in (document.documentElement, document.body):
elem.style.color = opts.color_scheme.foreground
elem.style.backgroundColor = opts.color_scheme.background
def change_font_size(self, data):
if data.base_font_size? and data.base_font_size != opts.base_font_size:
opts.base_font_size = data.base_font_size
self.apply_font_size()
def content_loaded(self): def content_loaded(self):
document.documentElement.style.overflow = 'hidden' document.documentElement.style.overflow = 'hidden'
document.body.appendChild( # document.body.appendChild(
E.style(str.format('html, body {{ color: {} !important; background-color: {} !important }}', opts.color_scheme.foreground, opts.color_scheme.background)) # E.style() # TODO: User style sheet
) # )
self.apply_colors()
self.apply_font_size()
self.do_layout() self.do_layout()
if self.mathjax: if self.mathjax:
return apply_mathjax(self.mathjax, self.book.manifest.link_uid, self.content_loaded_stage2) return apply_mathjax(self.mathjax, self.book.manifest.link_uid, self.content_loaded_stage2)

View File

@ -10,5 +10,6 @@ def apply_settings(settings):
opts.margin_left = max(0, settings.margin_left or 0) opts.margin_left = max(0, settings.margin_left or 0)
opts.margin_right = max(0, settings.margin_right or 0) opts.margin_right = max(0, settings.margin_right or 0)
opts.color_scheme = settings.color_scheme opts.color_scheme = settings.color_scheme
opts.base_font_size = max(8, min(settings.base_font_size or 16, 64))
apply_settings() apply_settings()

View File

@ -248,6 +248,7 @@ class View:
'read_mode': sd.get('read_mode'), 'read_mode': sd.get('read_mode'),
'columns_per_screen': sd.get('columns_per_screen'), 'columns_per_screen': sd.get('columns_per_screen'),
'color_scheme': self.get_color_scheme(True), 'color_scheme': self.get_color_scheme(True),
'base_font_size': sd.get('base_font_size'),
} }
initial_position = initial_position or {'replace_history':False} initial_position = initial_position or {'replace_history':False}
self.currently_showing = {'name':name, 'settings':settings, 'initial_position':initial_position, 'loading':True} self.currently_showing = {'name':name, 'settings':settings, 'initial_position':initial_position, 'loading':True}
@ -320,3 +321,6 @@ class View:
def on_content_loaded(self): def on_content_loaded(self):
self.hide_loading() self.hide_loading()
# self.overlay.show() # self.overlay.show()
def update_font_size(self):
self.send_message('change_font_size', base_font_size=get_session_data().get('base_font_size'))

View File

@ -28,6 +28,7 @@ defaults = {
'columns_per_screen': {'portrait':0, 'landscape':0}, 'columns_per_screen': {'portrait':0, 'landscape':0},
'current_color_scheme': 'white', 'current_color_scheme': 'white',
'user_color_schemes': {}, 'user_color_schemes': {},
'base_font_size': 16,
} }
is_local_setting = { is_local_setting = {
@ -40,6 +41,7 @@ is_local_setting = {
'max_text_width': True, 'max_text_width': True,
'columns_per_screen': True, 'columns_per_screen': True,
'current_color_scheme': True, 'current_color_scheme': True,
'base_font_size': True,
} }
def storage_available(which): def storage_available(which):