mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
More work on the Go to implementation
This commit is contained in:
parent
6756388c24
commit
443070cd8d
@ -15,6 +15,10 @@ def set_boss(b):
|
|||||||
def get_boss():
|
def get_boss():
|
||||||
return _boss
|
return _boss
|
||||||
|
|
||||||
|
def current_book():
|
||||||
|
return current_book.book
|
||||||
|
current_book.book = None
|
||||||
|
|
||||||
class Messenger:
|
class Messenger:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -6,9 +6,23 @@ from dom import set_css, svgicon
|
|||||||
from elementmaker import E
|
from elementmaker import E
|
||||||
from gettext import gettext as _
|
from gettext import gettext as _
|
||||||
|
|
||||||
|
from book_list.item_list import create_item, build_list
|
||||||
|
from read_book.toc import get_toc_maps, get_border_nodes
|
||||||
|
from read_book.globals import current_book
|
||||||
|
|
||||||
|
|
||||||
def create_goto_list(onclick):
|
def create_goto_list(onclick):
|
||||||
return E.div()
|
ans = E.div()
|
||||||
|
items = v'[]'
|
||||||
|
toc = current_book().manifest.toc
|
||||||
|
id_map = get_toc_maps(toc)[1]
|
||||||
|
before, after = get_border_nodes(toc, id_map)
|
||||||
|
if after:
|
||||||
|
items.push(create_item(_('Next Section'), icon='caret-right', subtitle=after.title, action=onclick.bind(after.dest, after.frag)))
|
||||||
|
if before:
|
||||||
|
items.push(create_item(_('Previous Section'), icon='caret-left', subtitle=before.title, action=onclick.bind(before.dest, before.frag)))
|
||||||
|
build_list(ans, items)
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
||||||
def create_goto_panel(book, container, onclick, onclose):
|
def create_goto_panel(book, container, onclick, onclose):
|
||||||
@ -17,10 +31,7 @@ def create_goto_panel(book, container, onclick, onclose):
|
|||||||
E.h2(_('Go to...')),
|
E.h2(_('Go to...')),
|
||||||
E.div(svgicon('close'), style='cursor:pointer', onclick=def(event):event.preventDefault(), event.stopPropagation(), onclose(event);, class_='simple-link'),
|
E.div(svgicon('close'), style='cursor:pointer', onclick=def(event):event.preventDefault(), event.stopPropagation(), onclose(event);, class_='simple-link'),
|
||||||
))
|
))
|
||||||
def handle_click(event, li):
|
panel = create_goto_list(onclick)
|
||||||
if event.button is 0:
|
|
||||||
onclick(li.dataset.tocDest, li.dataset.tocFrag)
|
|
||||||
panel = create_goto_list(handle_click)
|
|
||||||
set_css(container, display='flex', flex_direction='column')
|
set_css(container, display='flex', flex_direction='column')
|
||||||
set_css(panel, flex_grow='10')
|
set_css(panel, flex_grow='10')
|
||||||
container.appendChild(panel)
|
container.appendChild(panel)
|
||||||
|
@ -6,7 +6,7 @@ import traceback
|
|||||||
from aes import GCM
|
from aes import GCM
|
||||||
from gettext import install, gettext as _
|
from gettext import install, gettext as _
|
||||||
from read_book.cfi import at_current, scroll_to as scroll_to_cfi
|
from read_book.cfi import at_current, scroll_to as scroll_to_cfi
|
||||||
from read_book.globals import set_boss, set_current_spine_item, current_layout_mode, current_spine_item, set_layout_mode
|
from read_book.globals import set_boss, set_current_spine_item, current_layout_mode, current_spine_item, set_layout_mode, current_book
|
||||||
from read_book.mathjax import apply_mathjax
|
from read_book.mathjax import apply_mathjax
|
||||||
from read_book.toc import update_visible_toc_anchors
|
from read_book.toc import update_visible_toc_anchors
|
||||||
from read_book.resources import finalize_resources, unserialize_html
|
from read_book.resources import finalize_resources, unserialize_html
|
||||||
@ -94,7 +94,7 @@ class IframeBoss:
|
|||||||
|
|
||||||
def display(self, data):
|
def display(self, data):
|
||||||
self.encrypted_communications = True
|
self.encrypted_communications = True
|
||||||
self.book = data.book
|
self.book = current_book.book = data.book
|
||||||
spine = self.book.manifest.spine
|
spine = self.book.manifest.spine
|
||||||
index = spine.indexOf(data.name)
|
index = spine.indexOf(data.name)
|
||||||
set_layout_mode('flow' if FORCE_FLOW_MODE else data.settings.read_mode)
|
set_layout_mode('flow' if FORCE_FLOW_MODE else data.settings.read_mode)
|
||||||
|
@ -8,7 +8,7 @@ from elementmaker import E
|
|||||||
from gettext import gettext as _
|
from gettext import gettext as _
|
||||||
from modals import error_dialog
|
from modals import error_dialog
|
||||||
from widgets import create_tree, find_text_in_tree, scroll_tree_item_into_view
|
from widgets import create_tree, find_text_in_tree, scroll_tree_item_into_view
|
||||||
from read_book.globals import toc_anchor_map, set_toc_anchor_map, current_spine_item, current_layout_mode, get_boss
|
from read_book.globals import toc_anchor_map, set_toc_anchor_map, current_spine_item, current_layout_mode, current_book
|
||||||
|
|
||||||
|
|
||||||
def update_visible_toc_nodes(visible_anchors):
|
def update_visible_toc_nodes(visible_anchors):
|
||||||
@ -36,7 +36,7 @@ def get_border_nodes(toc, id_map):
|
|||||||
return before, after
|
return before, after
|
||||||
# Find the ToC entries that point to the closest files on either side of the
|
# Find the ToC entries that point to the closest files on either side of the
|
||||||
# current spine item
|
# current spine item
|
||||||
spine = get_boss().book.manifest.spine
|
spine = current_book().manifest.spine
|
||||||
spine_before, spine_after = {}, {}
|
spine_before, spine_after = {}, {}
|
||||||
which = spine_before
|
which = spine_before
|
||||||
csi = current_spine_item()
|
csi = current_spine_item()
|
||||||
@ -82,7 +82,7 @@ def get_highlighted_toc_nodes(toc, parent_map, id_map):
|
|||||||
|
|
||||||
def get_toc_maps(toc):
|
def get_toc_maps(toc):
|
||||||
if not toc:
|
if not toc:
|
||||||
toc = get_boss().book.manifest.toc
|
toc = current_book().manifest.toc
|
||||||
parent_map, id_map = {}, {}
|
parent_map, id_map = {}, {}
|
||||||
|
|
||||||
def process_node(node, parent):
|
def process_node(node, parent):
|
||||||
|
@ -6,7 +6,7 @@ from book_list.globals import get_session_data, get_boss
|
|||||||
from dom import set_css, add_extra_css, build_rule, svgicon
|
from dom import set_css, add_extra_css, build_rule, svgicon
|
||||||
from elementmaker import E
|
from elementmaker import E
|
||||||
from gettext import gettext as _
|
from gettext import gettext as _
|
||||||
from read_book.globals import messenger, iframe_id
|
from read_book.globals import messenger, iframe_id, current_book
|
||||||
from read_book.resources import load_resources
|
from read_book.resources import load_resources
|
||||||
from read_book.overlay import Overlay
|
from read_book.overlay import Overlay
|
||||||
from read_book.prefs.colors import resolve_color_scheme
|
from read_book.prefs.colors import resolve_color_scheme
|
||||||
@ -225,7 +225,7 @@ class View:
|
|||||||
self.overlay.hide_loading_message()
|
self.overlay.hide_loading_message()
|
||||||
|
|
||||||
def display_book(self, book):
|
def display_book(self, book):
|
||||||
self.book = book
|
self.book = current_book.book = book
|
||||||
self.ui.db.update_last_read_time(book)
|
self.ui.db.update_last_read_time(book)
|
||||||
self.loaded_resources = {}
|
self.loaded_resources = {}
|
||||||
pos = {'replace_history':True}
|
pos = {'replace_history':True}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user