Have only a single toolbar

This commit is contained in:
Kovid Goyal 2019-11-02 13:25:35 +05:30
parent 8f3991f877
commit 8bfe1b2598
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 35 additions and 27 deletions

View File

@ -5,7 +5,6 @@
from __future__ import absolute_import, division, print_function, unicode_literals
import os
from collections import defaultdict
from functools import partial
from PyQt5.Qt import QAction, QIcon, QKeySequence, QMenu, Qt, QToolBar, pyqtSignal
@ -17,24 +16,36 @@ from calibre.gui2.viewer.web_view import get_session_pref, set_book_path
from polyglot.builtins import iteritems
class VerticalToolBar(QToolBar):
class ToolBar(QToolBar):
def __init__(self, parent=None):
QToolBar.__init__(self, parent)
self.shortcut_actions = {}
self.setToolButtonStyle(Qt.ToolButtonIconOnly)
def create_shortcut_action(self, icon, text, sc):
a = QAction(QIcon(I(icon)), text, self)
self.addAction(a)
connect_lambda(a.triggered, self, lambda self: self.action_triggered.emit(sc))
self.shortcut_actions[sc] = a
return a
class ActionsToolBar(ToolBar):
action_triggered = pyqtSignal(object)
open_book_at_path = pyqtSignal(object)
def __init__(self, parent=None):
QToolBar.__init__(self, parent)
self.setObjectName('vertical_toolbar')
self.setAllowedAreas(Qt.LeftToolBarArea | Qt.RightToolBarArea)
self.setToolButtonStyle(Qt.ToolButtonIconOnly)
self.setOrientation(Qt.Vertical)
ToolBar.__init__(self, parent)
self.setObjectName('actions_toolbar')
self.setAllowedAreas(Qt.AllToolBarAreas)
def initialize(self, web_view):
shortcut_action = self.create_shortcut_action
self.action_triggered.connect(web_view.trigger_shortcut)
page = web_view.page()
web_view.shortcuts_changed.connect(self.set_tooltips)
web_view.paged_mode_changed.connect(self.update_mode_action)
self.shortcut_actions = {}
self.back_action = page.action(QWebEnginePage.Back)
self.back_action.setIcon(QIcon(I('back.png')))
@ -46,13 +57,6 @@ class VerticalToolBar(QToolBar):
self.addAction(self.forward_action)
self.addSeparator()
def shortcut_action(icon, text, sc):
a = QAction(QIcon(I(icon)), text, self)
self.addAction(a)
connect_lambda(a.triggered, self, lambda self: self.action_triggered.emit(sc))
self.shortcut_actions[sc] = a
return a
self.open_action = a = QAction(QIcon(I('document_open.png')), _('Open e-book'), self)
self.open_menu = m = QMenu(self)
a.setMenu(m)
@ -95,10 +99,7 @@ class VerticalToolBar(QToolBar):
a.setChecked(True)
a.setToolTip(_('Switch to paged mode -- where the text is broken into pages'))
def set_tooltips(self, smap):
rmap = defaultdict(list)
for k, v in iteritems(smap):
rmap[v].append(k)
def set_tooltips(self, rmap):
for sc, a in iteritems(self.shortcut_actions):
if a.isCheckable():
continue

View File

@ -32,7 +32,7 @@ from calibre.gui2.viewer.convert_book import prepare_book, update_book
from calibre.gui2.viewer.lookup import Lookup
from calibre.gui2.viewer.overlay import LoadingOverlay
from calibre.gui2.viewer.toc import TOC, TOCSearch, TOCView
from calibre.gui2.viewer.toolbars import VerticalToolBar
from calibre.gui2.viewer.toolbars import ActionsToolBar
from calibre.gui2.viewer.web_view import (
WebView, get_path_for_name, get_session_pref, set_book_path, viewer_config_dir,
vprefs
@ -42,7 +42,7 @@ from calibre.utils.img import image_from_path
from calibre.utils.ipc.simple_worker import WorkerError
from calibre.utils.monotonic import monotonic
from calibre.utils.serialize import json_loads
from polyglot.builtins import as_bytes, itervalues
from polyglot.builtins import as_bytes, iteritems, itervalues
annotations_dir = os.path.join(viewer_config_dir, 'annots')
@ -99,10 +99,10 @@ class EbookViewer(MainWindow):
self.setWindowTitle(self.base_window_title)
self.in_full_screen_mode = None
self.image_popup = ImagePopup(self)
self.vertical_toolbar = vt = VerticalToolBar(self)
vt.open_book_at_path.connect(self.ask_for_open)
self.addToolBar(Qt.LeftToolBarArea, vt)
# vt.setVisible(False)
self.actions_toolbar = at = ActionsToolBar(self)
at.open_book_at_path.connect(self.ask_for_open)
self.addToolBar(Qt.LeftToolBarArea, at)
at.setVisible(False)
try:
os.makedirs(annotations_dir)
except EnvironmentError:
@ -161,13 +161,20 @@ class EbookViewer(MainWindow):
self.web_view.show_loading_message.connect(self.show_loading_message)
self.web_view.show_error.connect(self.show_error)
self.web_view.print_book.connect(self.print_book, type=Qt.QueuedConnection)
self.vertical_toolbar.initialize(self.web_view)
self.web_view.shortcuts_changed.connect(self.shortcuts_changed)
self.actions_toolbar.initialize(self.web_view)
self.setCentralWidget(self.web_view)
self.loading_overlay = LoadingOverlay(self)
self.restore_state()
if continue_reading:
self.continue_reading()
def shortcuts_changed(self, smap):
rmap = defaultdict(list)
for k, v in iteritems(smap):
rmap[v].append(k)
self.actions_toolbar.set_tooltips(rmap)
def toggle_inspector(self):
visible = self.inspector_dock.toggleViewAction().isChecked()
self.inspector_dock.setVisible(not visible)