Sort default settings and larger handler definitions

Use session defaults in reader settings to reduce code duplication
This commit is contained in:
Michael Ziminsky (Z) 2019-12-17 23:05:43 -07:00
parent 94ac5ef102
commit 208734f47b
4 changed files with 78 additions and 77 deletions

View File

@ -91,22 +91,22 @@ class IframeBoss:
self.forward_keypresses = False
set_boss(self)
handlers = {
'initialize':self.initialize,
'display': self.display,
'scroll_to_anchor': self.on_scroll_to_anchor,
'scroll_to_ref': self.on_scroll_to_ref,
'scroll_to_frac': self.on_scroll_to_frac,
'next_screen': self.on_next_screen,
'change_font_size': self.change_font_size,
'change_color_scheme': self.change_color_scheme,
'gesture_from_margin': self.gesture_from_margin,
'wheel_from_margin': self.wheel_from_margin,
'change_font_size': self.change_font_size,
'display': self.display,
'find': self.find,
'window_size': self.received_window_size,
'gesture_from_margin': self.gesture_from_margin,
'get_current_cfi': self.get_current_cfi,
'initialize':self.initialize,
'modify_selection': self.modify_selection,
'next_screen': self.on_next_screen,
'scroll_to_anchor': self.on_scroll_to_anchor,
'scroll_to_frac': self.on_scroll_to_frac,
'scroll_to_ref': self.on_scroll_to_ref,
'set_forward_keypresses': self.set_forward_keypresses,
'set_reference_mode': self.set_reference_mode,
'modify_selection': self.modify_selection,
'wheel_from_margin': self.wheel_from_margin,
'window_size': self.received_window_size,
}
self.comm = IframeClient(handlers)
self.last_window_ypos = 0

View File

@ -4,23 +4,24 @@ from __python__ import hash_literals
from elementmaker import E
from read_book.globals import runtime
from session import defaults
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 = v'!!settings.cover_preserve_aspect_ratio'
settings = settings or defaults
opts.base_font_size = max(8, min(settings.base_font_size, 64))
opts.bg_image_fade = settings.bg_image_fade or 'transparent'
opts.paged_wheel_scrolls_by_screen = v'!!settings.paged_wheel_scrolls_by_screen'
opts.color_scheme = settings.color_scheme
opts.columns_per_screen = settings.columns_per_screen
opts.cover_preserve_aspect_ratio = v'!!settings.cover_preserve_aspect_ratio'
opts.hide_tooltips = settings.hide_tooltips
opts.is_dark_theme = v'!!settings.is_dark_theme'
opts.override_book_colors = settings.override_book_colors or 'never'
opts.margin_left = max(0, settings.margin_left)
opts.margin_right = max(0, settings.margin_right)
opts.override_book_colors = settings.override_book_colors
opts.paged_wheel_scrolls_by_screen = v'!!settings.paged_wheel_scrolls_by_screen'
opts.user_stylesheet = settings.user_stylesheet
update_settings()

View File

@ -200,29 +200,29 @@ class View:
),
)
handlers = {
'ready': self.on_iframe_ready,
'bump_font_size': self.bump_font_size,
'content_loaded': self.on_content_loaded,
'error': self.on_iframe_error,
'next_spine_item': self.on_next_spine_item,
'next_section': self.on_next_section,
'lookup_word': self.on_lookup_word,
'find_in_spine': self.on_find_in_spine,
'goto_doc_boundary': def(data): self.goto_doc_boundary(data.start);,
'handle_keypress': self.on_handle_keypress,
'handle_shortcut': self.on_handle_shortcut,
'human_scroll': self.on_human_scroll,
'lookup_word': self.on_lookup_word,
'next_section': self.on_next_section,
'next_spine_item': self.on_next_spine_item,
'print': self.on_print,
'ready': self.on_iframe_ready,
'reference_item_changed': self.on_reference_item_changed,
'report_cfi': self.on_report_cfi,
'request_size': self.on_request_size,
'scroll_to_anchor': self.on_scroll_to_anchor,
'selectionchange': self.on_selection_change,
'show_chrome': self.show_chrome,
'show_footnote': self.on_show_footnote,
'update_cfi': self.on_update_cfi,
'update_progress_frac': self.on_update_progress_frac,
'report_cfi': self.on_report_cfi,
'update_toc_position': self.on_update_toc_position,
'content_loaded': self.on_content_loaded,
'show_chrome': self.show_chrome,
'bump_font_size': self.bump_font_size,
'find_in_spine': self.on_find_in_spine,
'request_size': self.on_request_size,
'show_footnote': self.on_show_footnote,
'print': self.on_print,
'human_scroll': self.on_human_scroll,
'selectionchange': self.on_selection_change,
'handle_shortcut': self.on_handle_shortcut,
'handle_keypress': self.on_handle_keypress,
'reference_item_changed': self.on_reference_item_changed,
}
entry_point = None if runtime.is_standalone_viewer else 'read_book.iframe'
if runtime.is_standalone_viewer:

View File

@ -9,72 +9,72 @@ from ajax import ajax_send
defaults = {
# Book list settings
'view_mode': 'cover_grid',
'sort': 'timestamp.desc', # comma separated list of items of the form: field.order
'copy_to_library_dupes': 'add;overwrite',
'last_sort_order': {},
'show_all_metadata': False, # show all metadata fields in the book details panel
'copy_to_library_dupes': 'add;overwrite',
'sort': 'timestamp.desc', # comma separated list of items of the form: field.order
'view_mode': 'cover_grid',
# Tag Browser settings
'partition_method': 'first letter', # other choices: 'disable', 'partition'
'and_search_terms': False, # how to add search terms to the search expression from the Tag Browser
'collapse_at': 25, # number of items at which sub-groups are created, 0 to disable
'dont_collapse': '', # comma separated list of category names
'sort_tags_by': 'name', # other choices: popularity, rating
'hide_empty_categories': 'no',
'and_search_terms': False, # how to add search terms to the search expression from the Tag Browser
'partition_method': 'first letter', # other choices: 'disable', 'partition'
'sort_tags_by': 'name', # other choices: popularity, rating
# Book reader settings
'margin_right': 20,
'margin_left': 20,
'margin_top': 20,
'margin_bottom': 20,
'read_mode': 'paged',
'cover_preserve_aspect_ratio': True,
'max_text_height': 0,
'max_text_width': 0,
'columns_per_screen': {'portrait':0, 'landscape':0},
'user_stylesheet': '',
'background_image': None,
'background_image_style': 'scaled',
'background_image_fade': 0,
'current_color_scheme': 'system',
'user_color_schemes': {},
'override_book_colors': 'never',
'background_image_style': 'scaled',
'background_image': None,
'base_font_size': 16,
'book_scrollbar': False,
'columns_per_screen': {'portrait':0, 'landscape':0},
'controls_help_shown_count': 0,
'header': {},
'cover_preserve_aspect_ratio': True,
'current_color_scheme': 'system',
'footer': {'right': 'progress'},
'word_actions': v'[]',
'header': {},
'hide_tooltips': False,
'keyboard_shortcuts': {},
'book_scrollbar': False,
'margin_bottom': 20,
'margin_left': 20,
'margin_right': 20,
'margin_top': 20,
'max_text_height': 0,
'max_text_width': 0,
'override_book_colors': 'never',
'paged_margin_clicks_scroll_by_screen': True,
'paged_wheel_scrolls_by_screen': False,
'read_mode': 'paged',
'standalone_font_settings': {},
'standalone_misc_settings': {},
'standalone_recently_opened': v'[]',
'paged_wheel_scrolls_by_screen': False,
'paged_margin_clicks_scroll_by_screen': True,
'user_color_schemes': {},
'user_stylesheet': '',
'word_actions': v'[]',
}
is_local_setting = {
'margin_right': True,
'margin_left': True,
'margin_top': True,
'background_image_fade': True,
'background_image_style': True,
'background_image': True,
'base_font_size': True,
'columns_per_screen': True,
'controls_help_shown_count': True,
'current_color_scheme': True,
'margin_bottom': True,
'read_mode': 'paged',
'margin_left': True,
'margin_right': True,
'margin_top': True,
'max_text_height': True,
'max_text_width': True,
'columns_per_screen': True,
'user_stylesheet': True,
'background_image': True,
'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,
'read_mode': 'paged',
'standalone_font_settings': True,
'standalone_misc_settings': True,
'standalone_recently_opened': True,
'user_stylesheet': True,
}