mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Group highlights in browser viewer highlights panel as well
This commit is contained in:
parent
bef5dd9bed
commit
eac6acb82a
@ -3,7 +3,7 @@
|
|||||||
from __python__ import bound_methods, hash_literals
|
from __python__ import bound_methods, hash_literals
|
||||||
|
|
||||||
from elementmaker import E
|
from elementmaker import E
|
||||||
from gettext import gettext as _
|
from gettext import gettext as _, ngettext
|
||||||
|
|
||||||
from book_list.globals import get_session_data
|
from book_list.globals import get_session_data
|
||||||
from read_book.globals import is_dark_theme
|
from read_book.globals import is_dark_theme
|
||||||
@ -563,8 +563,12 @@ def find_next():
|
|||||||
|
|
||||||
|
|
||||||
add_extra_css(def():
|
add_extra_css(def():
|
||||||
sel = '#' + get_container_id()
|
sel = '#' + get_container_id() + ' .toc-group'
|
||||||
ans = ''
|
ans = ''
|
||||||
|
ans += build_rule(sel + ' h3', display='flex', align_items='center', cursor='pointer', margin_top='1ex')
|
||||||
|
ans += build_rule(sel + '.expanded .caret-right', display='none')
|
||||||
|
ans += build_rule(sel + '.collapsed .caret-down', display='none')
|
||||||
|
ans += build_rule(sel + '.collapsed > div', display='none')
|
||||||
qsel = sel + ' .highlight'
|
qsel = sel + ' .highlight'
|
||||||
ans += build_rule(qsel, margin_top='1ex', border_top='solid 1px', padding_top='1ex', cursor='pointer')
|
ans += build_rule(qsel, margin_top='1ex', border_top='solid 1px', padding_top='1ex', cursor='pointer')
|
||||||
ans += build_rule(qsel + ' .notes', display='none', margin_top='1ex', max_height='20ex', overflow='auto')
|
ans += build_rule(qsel + ' .notes', display='none', margin_top='1ex', max_height='20ex', overflow='auto')
|
||||||
@ -684,7 +688,48 @@ def create_highlights_panel(annotations_manager, book, container, onclick):
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
container.appendChild(c)
|
container.appendChild(c)
|
||||||
c.appendChild(E.div())
|
toc_groups = {}
|
||||||
|
toc_tt = {}
|
||||||
for h in annotations_manager.all_highlights():
|
for h in annotations_manager.all_highlights():
|
||||||
c.lastChild.appendChild(highlight_entry(h, onclick, annotations_manager.view))
|
toc = _('Unknown')
|
||||||
|
if h.toc_family_titles?.length:
|
||||||
|
toc = h.toc_family_titles[-1]
|
||||||
|
if not toc_groups[toc]:
|
||||||
|
toc_groups[toc] = v'[]'
|
||||||
|
if h.toc_family_titles?.length:
|
||||||
|
lines = v'[]'
|
||||||
|
for i, node in enumerate(h.toc_family_titles):
|
||||||
|
lines.push('\xa0\xa0' * i + '➤ ' + node)
|
||||||
|
tt = ngettext('Table of Contents section:', 'Table of Contents sections:', lines.length)
|
||||||
|
tt += '\n' + '\n'.join(lines)
|
||||||
|
toc_tt[toc] = tt
|
||||||
|
toc_groups[toc].push(h)
|
||||||
|
|
||||||
|
def tree_icon(which):
|
||||||
|
ans = svgicon(which)
|
||||||
|
ans.classList.add(which)
|
||||||
|
return ans
|
||||||
|
|
||||||
|
for group in Object.keys(toc_groups):
|
||||||
|
highlights = toc_groups[group]
|
||||||
|
g = E.div(
|
||||||
|
class_='toc-group expanded',
|
||||||
|
E.h3(
|
||||||
|
title=toc_tt[group] or '',
|
||||||
|
tree_icon('caret-right'), tree_icon('caret-down'), E.div('\xa0' + group),
|
||||||
|
onclick=def (ev):
|
||||||
|
tg = ev.currentTarget.closest('.toc-group')
|
||||||
|
if tg.classList.contains('expanded'):
|
||||||
|
tg.classList.remove('expanded')
|
||||||
|
tg.classList.add('collapsed')
|
||||||
|
else:
|
||||||
|
tg.classList.remove('collapsed')
|
||||||
|
tg.classList.add('expanded')
|
||||||
|
),
|
||||||
|
E.div(style='margin-left: 1rem')
|
||||||
|
)
|
||||||
|
c.appendChild(g)
|
||||||
|
ic = g.lastChild
|
||||||
|
for h in highlights:
|
||||||
|
ic.appendChild(highlight_entry(h, onclick, annotations_manager.view))
|
||||||
# }}}
|
# }}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user