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 self.forward_keypresses = False
set_boss(self) set_boss(self)
handlers = { 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, 'change_color_scheme': self.change_color_scheme,
'gesture_from_margin': self.gesture_from_margin, 'change_font_size': self.change_font_size,
'wheel_from_margin': self.wheel_from_margin, 'display': self.display,
'find': self.find, 'find': self.find,
'window_size': self.received_window_size, 'gesture_from_margin': self.gesture_from_margin,
'get_current_cfi': self.get_current_cfi, '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_forward_keypresses': self.set_forward_keypresses,
'set_reference_mode': self.set_reference_mode, '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.comm = IframeClient(handlers)
self.last_window_ypos = 0 self.last_window_ypos = 0

View File

@ -4,23 +4,24 @@ from __python__ import hash_literals
from elementmaker import E from elementmaker import E
from read_book.globals import runtime from read_book.globals import runtime
from session import defaults
opts = {} opts = {}
def update_settings(settings): def update_settings(settings):
settings = settings or {} settings = settings or defaults
opts.columns_per_screen = settings.columns_per_screen or {'portrait':0, 'landscape':0} opts.base_font_size = max(8, min(settings.base_font_size, 64))
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'
opts.bg_image_fade = settings.bg_image_fade or 'transparent' 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.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() update_settings()

View File

@ -200,29 +200,29 @@ class View:
), ),
) )
handlers = { handlers = {
'ready': self.on_iframe_ready, 'bump_font_size': self.bump_font_size,
'content_loaded': self.on_content_loaded,
'error': self.on_iframe_error, 'error': self.on_iframe_error,
'next_spine_item': self.on_next_spine_item, 'find_in_spine': self.on_find_in_spine,
'next_section': self.on_next_section,
'lookup_word': self.on_lookup_word,
'goto_doc_boundary': def(data): self.goto_doc_boundary(data.start);, '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, '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_cfi': self.on_update_cfi,
'update_progress_frac': self.on_update_progress_frac, 'update_progress_frac': self.on_update_progress_frac,
'report_cfi': self.on_report_cfi,
'update_toc_position': self.on_update_toc_position, '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' entry_point = None if runtime.is_standalone_viewer else 'read_book.iframe'
if runtime.is_standalone_viewer: if runtime.is_standalone_viewer:

View File

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