From 26c3985473ff0fe95fc999d4c1f7ac7813a20354 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 3 Apr 2024 08:33:02 +0530 Subject: [PATCH] E-book viewer: Allow displaying the view mode paged/flow in the header/footer. Fixes #2060079 [[Enhancement] Viewer: show Page/Flow mode in Header/Footer](https://bugs.launchpad.net/calibre/+bug/2060079) --- src/pyj/read_book/prefs/head_foot.pyj | 8 +++++++- src/pyj/read_book/view.pyj | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pyj/read_book/prefs/head_foot.pyj b/src/pyj/read_book/prefs/head_foot.pyj index f775c27a4f..31b63d3383 100644 --- a/src/pyj/read_book/prefs/head_foot.pyj +++ b/src/pyj/read_book/prefs/head_foot.pyj @@ -34,6 +34,8 @@ def create_item(region, label, style): sep(), opt(_('Top level section'), 'top-section'), opt(_('Current section'), 'section'), + opt(_('View mode'), 'view-mode'), + opt(_('View mode as icon'), 'view-mode-icon'), sep(), opt(_('Clock'), 'clock'), sep(), @@ -179,7 +181,7 @@ def format_pos(progress_frac, length): return f'{pos:.1f} / {pages}' -def render_head_foot(div, which, region, metadata, current_toc_node, current_toc_toplevel_node, book_time, chapter_time, pos, override): +def render_head_foot(div, which, region, metadata, current_toc_node, current_toc_toplevel_node, book_time, chapter_time, pos, override, view_mode): template = get_session_data().get(which) or {} field = template[region] or 'empty' interface_data = get_interface_data() @@ -207,6 +209,10 @@ def render_head_foot(div, which, region, metadata, current_toc_node, current_toc text = current_toc_toplevel_node.title if current_toc_toplevel_node else '' if not text: text = current_toc_node.title if current_toc_node else '' + elif field is 'view-mode': + text = _('Paged') if view_mode is 'paged' else _('Flow') + elif field is 'view-mode-icon': + text = '🗏' if view_mode is 'paged' else '📜' elif field.startswith('time-'): if book_time is None or chapter_time is None: text = _('Calculating...') diff --git a/src/pyj/read_book/view.pyj b/src/pyj/read_book/view.pyj index 5874651cd1..062324ffb4 100644 --- a/src/pyj/read_book/view.pyj +++ b/src/pyj/read_book/view.pyj @@ -1317,9 +1317,11 @@ class View: book_time = self.timers.time_for(book_length) chapter_time = self.timers.time_for(chapter_length) mi = self.book.metadata + sd = get_session_data() + view_mode = sd.get('read_mode') def render(div, name, which, override): - return render_head_foot(div, name, which, mi, self.current_toc_node, self.current_toc_toplevel_node, book_time, chapter_time, pos, override) + return render_head_foot(div, name, which, mi, self.current_toc_node, self.current_toc_toplevel_node, book_time, chapter_time, pos, override, view_mode) return render