From 95dc6a06ade3a90688ce081d812bbdc3a22bd872 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 13 Aug 2019 17:58:03 +0530 Subject: [PATCH] UI for misc settings --- src/pyj/read_book/prefs/main.pyj | 10 +++++ src/pyj/read_book/prefs/misc.pyj | 65 ++++++++++++++++++++++++++++++++ src/pyj/session.pyj | 2 + 3 files changed, 77 insertions(+) create mode 100644 src/pyj/read_book/prefs/misc.pyj diff --git a/src/pyj/read_book/prefs/main.pyj b/src/pyj/read_book/prefs/main.pyj index 9e05754833..3dc168030c 100644 --- a/src/pyj/read_book/prefs/main.pyj +++ b/src/pyj/read_book/prefs/main.pyj @@ -12,6 +12,7 @@ from read_book.prefs.colors import commit_colors, create_colors_panel from read_book.prefs.fonts import commit_fonts, create_fonts_panel from read_book.prefs.head_foot import commit_head_foot, create_head_foot_panel from read_book.prefs.layout import commit_layout, create_layout_panel +from read_book.prefs.misc import commit_misc, create_misc_panel from read_book.prefs.user_stylesheet import ( commit_user_stylesheet, create_user_stylesheet_panel ) @@ -73,6 +74,8 @@ class Prefs: if runtime.is_standalone_viewer: items.push(create_item( _('Fonts'), def():self.show_panel('fonts');, _('Font choices'))) + items.push(create_item( + _('Miscellaneous'), def():self.show_panel('misc');, _('Window size, last read position, etc.'))) build_list(c, items) def display_fonts(self, container): @@ -82,6 +85,13 @@ class Prefs: def close_fonts(self): commit_fonts(self.onchange, self.container) + def display_misc(self, container): + document.getElementById(self.title_id).textContent = _('Miscellaneous') + create_misc_panel(container) + + def close_misc(self): + commit_misc(self.onchange, self.container) + def display_colors(self, container): document.getElementById(self.title_id).textContent = _('Colors') create_colors_panel(container) diff --git a/src/pyj/read_book/prefs/misc.pyj b/src/pyj/read_book/prefs/misc.pyj new file mode 100644 index 0000000000..c0fd72a5ed --- /dev/null +++ b/src/pyj/read_book/prefs/misc.pyj @@ -0,0 +1,65 @@ +# vim:fileencoding=utf-8 +# License: GPL v3 Copyright: 2016, Kovid Goyal +from __python__ import bound_methods, hash_literals + +from elementmaker import E +from gettext import gettext as _ + +from book_list.globals import get_session_data +from dom import unique_id +from widgets import create_button + +CONTAINER = unique_id('standalone-misc-settings') +DEFAULTS = { + 'remember_window_geometry': False, + 'remember_last_read': True, + 'save_annotations_in_ebook': True, +} + + +def restore_defaults(): + container = get_container() + for q in Object.keys(DEFAULTS): + container.querySelector(f'[name={q}]').checked = DEFAULTS[q] + + +def get_container(): + return document.getElementById(CONTAINER) + + +def create_misc_panel(container): + container.appendChild(E.div(id=CONTAINER, style='margin: 1rem')) + container = container.lastChild + sd = get_session_data() + settings = sd.get('standalone_misc_settings') + settings + + def cb(name, text): + ans = E.input(type='checkbox', name=name) + if jstype(settings[name]) is 'boolean': + ans.checked = v'!!settings[name]' + else: + ans.checked = DEFAULTS[name] + return E.div(style='margin-top:1ex', E.label(ans, '\xa0' + text)) + + container.append(cb('remember_window_geometry', _('Remember last used window size and position'))) + container.append(cb('remember_last_read', _('Remember current page when quitting'))) + container.append(cb('save_annotations_in_ebook', _('Keep a copy of annotations/bookmarks inside the e-book file, for easy sharing'))) + + container.appendChild(E.div( + style='margin-top: 1rem', create_button(_('Restore defaults'), action=restore_defaults) + )) + + +develop = create_misc_panel + + +def commit_misc(onchange): + sd = get_session_data() + container = get_container() + vals = {} + for q in Object.keys(DEFAULTS): + val = container.querySelector(f'[name={q}]').checked + if val is not DEFAULTS[q]: + vals[q] = val + sd.set('standalone_misc_settings', vals) diff --git a/src/pyj/session.pyj b/src/pyj/session.pyj index 6e89815888..df4c11c83a 100644 --- a/src/pyj/session.pyj +++ b/src/pyj/session.pyj @@ -41,6 +41,7 @@ defaults = { 'footer': {'right': 'progress'}, 'word_actions': v'[]', 'standalone_font_settings': {}, + 'standalone_misc_settings': {}, } is_local_setting = { @@ -57,6 +58,7 @@ is_local_setting = { 'base_font_size': True, 'controls_help_shown_count': True, 'standalone_font_settings': True, + 'standalone_misc_settings': True, }