mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Implement toggling of bookmarks panel
This commit is contained in:
parent
d97db810c0
commit
45fa8525ba
@ -22,6 +22,7 @@ from calibre.gui2.main_window import MainWindow
|
|||||||
from calibre.gui2.viewer.annotations import (
|
from calibre.gui2.viewer.annotations import (
|
||||||
merge_annotations, parse_annotations, save_annots_to_epub, serialize_annotations
|
merge_annotations, parse_annotations, save_annots_to_epub, serialize_annotations
|
||||||
)
|
)
|
||||||
|
from calibre.gui2.viewer.bookmarks import BookmarkManager
|
||||||
from calibre.gui2.viewer.convert_book import prepare_book, update_book
|
from calibre.gui2.viewer.convert_book import prepare_book, update_book
|
||||||
from calibre.gui2.viewer.toc import TOC, TOCSearch, TOCView
|
from calibre.gui2.viewer.toc import TOC, TOCSearch, TOCView
|
||||||
from calibre.gui2.viewer.web_view import WebView, set_book_path, vprefs
|
from calibre.gui2.viewer.web_view import WebView, set_book_path, vprefs
|
||||||
@ -70,11 +71,16 @@ class EbookViewer(MainWindow):
|
|||||||
w.l.addWidget(self.toc), w.l.addWidget(self.toc_search), w.l.setContentsMargins(0, 0, 0, 0)
|
w.l.addWidget(self.toc), w.l.addWidget(self.toc_search), w.l.setContentsMargins(0, 0, 0, 0)
|
||||||
self.toc_dock.setWidget(w)
|
self.toc_dock.setWidget(w)
|
||||||
|
|
||||||
|
self.bookmarks_dock = create_dock(_('Bookmarks'), 'bookmarks-dock', Qt.RightDockWidgetArea)
|
||||||
|
self.bookmarks_widget = w = BookmarkManager(self)
|
||||||
|
self.bookmarks_dock.setWidget(w)
|
||||||
|
|
||||||
self.inspector_dock = create_dock(_('Inspector'), 'inspector', Qt.RightDockWidgetArea)
|
self.inspector_dock = create_dock(_('Inspector'), 'inspector', Qt.RightDockWidgetArea)
|
||||||
self.web_view = WebView(self)
|
self.web_view = WebView(self)
|
||||||
self.web_view.cfi_changed.connect(self.cfi_changed)
|
self.web_view.cfi_changed.connect(self.cfi_changed)
|
||||||
self.web_view.reload_book.connect(self.reload_book)
|
self.web_view.reload_book.connect(self.reload_book)
|
||||||
self.web_view.toggle_toc.connect(self.toggle_toc)
|
self.web_view.toggle_toc.connect(self.toggle_toc)
|
||||||
|
self.web_view.toggle_bookmarks.connect(self.toggle_bookmarks)
|
||||||
self.web_view.update_current_toc_nodes.connect(self.toc.update_current_toc_nodes)
|
self.web_view.update_current_toc_nodes.connect(self.toc.update_current_toc_nodes)
|
||||||
self.web_view.toggle_full_screen.connect(self.toggle_full_screen)
|
self.web_view.toggle_full_screen.connect(self.toggle_full_screen)
|
||||||
self.setCentralWidget(self.web_view)
|
self.setCentralWidget(self.web_view)
|
||||||
@ -118,13 +124,19 @@ class EbookViewer(MainWindow):
|
|||||||
self.set_full_screen(not self.isFullScreen())
|
self.set_full_screen(not self.isFullScreen())
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# ToC {{{
|
# ToC/Bookmarks {{{
|
||||||
def toggle_toc(self):
|
def toggle_toc(self):
|
||||||
if self.toc_dock.isVisible():
|
if self.toc_dock.isVisible():
|
||||||
self.toc_dock.setVisible(False)
|
self.toc_dock.setVisible(False)
|
||||||
else:
|
else:
|
||||||
self.toc_dock.setVisible(True)
|
self.toc_dock.setVisible(True)
|
||||||
|
|
||||||
|
def toggle_bookmarks(self):
|
||||||
|
if self.bookmarks_dock.isVisible():
|
||||||
|
self.bookmarks_dock.setVisible(False)
|
||||||
|
else:
|
||||||
|
self.bookmarks_dock.setVisible(True)
|
||||||
|
|
||||||
def toc_clicked(self, index):
|
def toc_clicked(self, index):
|
||||||
item = self.toc_model.itemFromIndex(index)
|
item = self.toc_model.itemFromIndex(index)
|
||||||
self.web_view.goto_toc_node(item.node_id)
|
self.web_view.goto_toc_node(item.node_id)
|
||||||
|
@ -174,6 +174,7 @@ class ViewerBridge(Bridge):
|
|||||||
set_session_data = from_js(object, object)
|
set_session_data = from_js(object, object)
|
||||||
reload_book = from_js()
|
reload_book = from_js()
|
||||||
toggle_toc = from_js()
|
toggle_toc = from_js()
|
||||||
|
toggle_bookmarks = from_js()
|
||||||
update_current_toc_nodes = from_js(object, object)
|
update_current_toc_nodes = from_js(object, object)
|
||||||
toggle_full_screen = from_js()
|
toggle_full_screen = from_js()
|
||||||
|
|
||||||
@ -257,6 +258,7 @@ class WebView(RestartingWebEngineView):
|
|||||||
cfi_changed = pyqtSignal(object)
|
cfi_changed = pyqtSignal(object)
|
||||||
reload_book = pyqtSignal()
|
reload_book = pyqtSignal()
|
||||||
toggle_toc = pyqtSignal()
|
toggle_toc = pyqtSignal()
|
||||||
|
toggle_bookmarks = pyqtSignal()
|
||||||
update_current_toc_nodes = pyqtSignal(object, object)
|
update_current_toc_nodes = pyqtSignal(object, object)
|
||||||
toggle_full_screen = pyqtSignal()
|
toggle_full_screen = pyqtSignal()
|
||||||
|
|
||||||
@ -273,6 +275,7 @@ class WebView(RestartingWebEngineView):
|
|||||||
self.bridge.set_session_data.connect(self.set_session_data)
|
self.bridge.set_session_data.connect(self.set_session_data)
|
||||||
self.bridge.reload_book.connect(self.reload_book)
|
self.bridge.reload_book.connect(self.reload_book)
|
||||||
self.bridge.toggle_toc.connect(self.toggle_toc)
|
self.bridge.toggle_toc.connect(self.toggle_toc)
|
||||||
|
self.bridge.toggle_bookmarks.connect(self.toggle_bookmarks)
|
||||||
self.bridge.update_current_toc_nodes.connect(self.update_current_toc_nodes)
|
self.bridge.update_current_toc_nodes.connect(self.update_current_toc_nodes)
|
||||||
self.bridge.toggle_full_screen.connect(self.toggle_full_screen)
|
self.bridge.toggle_full_screen.connect(self.toggle_full_screen)
|
||||||
self.pending_bridge_ready_actions = {}
|
self.pending_bridge_ready_actions = {}
|
||||||
|
@ -226,6 +226,12 @@ class MainOverlay:
|
|||||||
reload_actions = E.ul(sync_action, delete_action, reload_action)
|
reload_actions = E.ul(sync_action, delete_action, reload_action)
|
||||||
nav_actions = E.ul(home_action, back_action, forward_action)
|
nav_actions = E.ul(home_action, back_action, forward_action)
|
||||||
|
|
||||||
|
bookmarks_action = ac(_('Bookmarks'), None, self.overlay.show_bookmarks, 'bookmark')
|
||||||
|
toc_actions = E.ul(ac(_('Table of Contents'), None, self.overlay.show_toc, 'TC', True))
|
||||||
|
|
||||||
|
if runtime.is_standalone_viewer:
|
||||||
|
toc_actions.appendChild(bookmarks_action)
|
||||||
|
|
||||||
actions_div = E.div( # actions
|
actions_div = E.div( # actions
|
||||||
nav_actions,
|
nav_actions,
|
||||||
|
|
||||||
@ -236,10 +242,7 @@ class MainOverlay:
|
|||||||
|
|
||||||
reload_actions,
|
reload_actions,
|
||||||
|
|
||||||
E.ul(
|
toc_actions,
|
||||||
ac(_('Table of Contents'), None, self.overlay.show_toc, 'TC', True),
|
|
||||||
# ac(_('Bookmarks'), None, None, 'bookmark'),
|
|
||||||
),
|
|
||||||
|
|
||||||
E.ul(
|
E.ul(
|
||||||
ac(_('Font size'), _('Change text size'), self.overlay.show_font_size_chooser, 'Aa', True),
|
ac(_('Font size'), _('Change text size'), self.overlay.show_font_size_chooser, 'Aa', True),
|
||||||
@ -468,6 +471,12 @@ class Overlay:
|
|||||||
self.panels.push(TOCOverlay(self))
|
self.panels.push(TOCOverlay(self))
|
||||||
self.show_current_panel()
|
self.show_current_panel()
|
||||||
|
|
||||||
|
def show_bookmarks(self):
|
||||||
|
self.hide_current_panel()
|
||||||
|
if runtime.is_standalone_viewer:
|
||||||
|
ui_operations.toggle_bookmarks()
|
||||||
|
return
|
||||||
|
|
||||||
def show_goto(self):
|
def show_goto(self):
|
||||||
self.hide_current_panel()
|
self.hide_current_panel()
|
||||||
self.panels.push(TOCOverlay(self, create_goto_panel, _('Go to…')))
|
self.panels.push(TOCOverlay(self, create_goto_panel, _('Go to…')))
|
||||||
|
@ -236,6 +236,8 @@ if window is window.top:
|
|||||||
view.update_font_size()
|
view.update_font_size()
|
||||||
ui_operations.toggle_toc = def():
|
ui_operations.toggle_toc = def():
|
||||||
to_python.toggle_toc()
|
to_python.toggle_toc()
|
||||||
|
ui_operations.toggle_bookmarks = def():
|
||||||
|
to_python.toggle_bookmarks()
|
||||||
ui_operations.update_current_toc_nodes = def(current_node_id, top_level_node_id):
|
ui_operations.update_current_toc_nodes = def(current_node_id, top_level_node_id):
|
||||||
to_python.update_current_toc_nodes(current_node_id, top_level_node_id)
|
to_python.update_current_toc_nodes(current_node_id, top_level_node_id)
|
||||||
ui_operations.toggle_full_screen = def():
|
ui_operations.toggle_full_screen = def():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user