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)

This commit is contained in:
Kovid Goyal 2024-04-03 08:33:02 +05:30
parent 4486468c84
commit 26c3985473
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 10 additions and 2 deletions

View File

@ -34,6 +34,8 @@ def create_item(region, label, style):
sep(), sep(),
opt(_('Top level section'), 'top-section'), opt(_('Top level section'), 'top-section'),
opt(_('Current section'), 'section'), opt(_('Current section'), 'section'),
opt(_('View mode'), 'view-mode'),
opt(_('View mode as icon'), 'view-mode-icon'),
sep(), sep(),
opt(_('Clock'), 'clock'), opt(_('Clock'), 'clock'),
sep(), sep(),
@ -179,7 +181,7 @@ def format_pos(progress_frac, length):
return f'{pos:.1f} / {pages}' 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 {} template = get_session_data().get(which) or {}
field = template[region] or 'empty' field = template[region] or 'empty'
interface_data = get_interface_data() 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 '' text = current_toc_toplevel_node.title if current_toc_toplevel_node else ''
if not text: if not text:
text = current_toc_node.title if current_toc_node else '' 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-'): elif field.startswith('time-'):
if book_time is None or chapter_time is None: if book_time is None or chapter_time is None:
text = _('Calculating...') text = _('Calculating...')

View File

@ -1317,9 +1317,11 @@ class View:
book_time = self.timers.time_for(book_length) book_time = self.timers.time_for(book_length)
chapter_time = self.timers.time_for(chapter_length) chapter_time = self.timers.time_for(chapter_length)
mi = self.book.metadata mi = self.book.metadata
sd = get_session_data()
view_mode = sd.get('read_mode')
def render(div, name, which, override): 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 return render