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 (
|
||||
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.toc import TOC, TOCSearch, TOCView
|
||||
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)
|
||||
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.web_view = WebView(self)
|
||||
self.web_view.cfi_changed.connect(self.cfi_changed)
|
||||
self.web_view.reload_book.connect(self.reload_book)
|
||||
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.toggle_full_screen.connect(self.toggle_full_screen)
|
||||
self.setCentralWidget(self.web_view)
|
||||
@ -118,13 +124,19 @@ class EbookViewer(MainWindow):
|
||||
self.set_full_screen(not self.isFullScreen())
|
||||
# }}}
|
||||
|
||||
# ToC {{{
|
||||
# ToC/Bookmarks {{{
|
||||
def toggle_toc(self):
|
||||
if self.toc_dock.isVisible():
|
||||
self.toc_dock.setVisible(False)
|
||||
else:
|
||||
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):
|
||||
item = self.toc_model.itemFromIndex(index)
|
||||
self.web_view.goto_toc_node(item.node_id)
|
||||
|
@ -174,6 +174,7 @@ class ViewerBridge(Bridge):
|
||||
set_session_data = from_js(object, object)
|
||||
reload_book = from_js()
|
||||
toggle_toc = from_js()
|
||||
toggle_bookmarks = from_js()
|
||||
update_current_toc_nodes = from_js(object, object)
|
||||
toggle_full_screen = from_js()
|
||||
|
||||
@ -257,6 +258,7 @@ class WebView(RestartingWebEngineView):
|
||||
cfi_changed = pyqtSignal(object)
|
||||
reload_book = pyqtSignal()
|
||||
toggle_toc = pyqtSignal()
|
||||
toggle_bookmarks = pyqtSignal()
|
||||
update_current_toc_nodes = pyqtSignal(object, object)
|
||||
toggle_full_screen = pyqtSignal()
|
||||
|
||||
@ -273,6 +275,7 @@ class WebView(RestartingWebEngineView):
|
||||
self.bridge.set_session_data.connect(self.set_session_data)
|
||||
self.bridge.reload_book.connect(self.reload_book)
|
||||
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.toggle_full_screen.connect(self.toggle_full_screen)
|
||||
self.pending_bridge_ready_actions = {}
|
||||
|
@ -226,6 +226,12 @@ class MainOverlay:
|
||||
reload_actions = E.ul(sync_action, delete_action, reload_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
|
||||
nav_actions,
|
||||
|
||||
@ -236,10 +242,7 @@ class MainOverlay:
|
||||
|
||||
reload_actions,
|
||||
|
||||
E.ul(
|
||||
ac(_('Table of Contents'), None, self.overlay.show_toc, 'TC', True),
|
||||
# ac(_('Bookmarks'), None, None, 'bookmark'),
|
||||
),
|
||||
toc_actions,
|
||||
|
||||
E.ul(
|
||||
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.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):
|
||||
self.hide_current_panel()
|
||||
self.panels.push(TOCOverlay(self, create_goto_panel, _('Go to…')))
|
||||
|
@ -236,6 +236,8 @@ if window is window.top:
|
||||
view.update_font_size()
|
||||
ui_operations.toggle_toc = def():
|
||||
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):
|
||||
to_python.update_current_toc_nodes(current_node_id, top_level_node_id)
|
||||
ui_operations.toggle_full_screen = def():
|
||||
|
Loading…
x
Reference in New Issue
Block a user