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 from __future__ import absolute_import, division, print_function, unicode_literals
import os import os
from collections import defaultdict
from functools import partial from functools import partial
from PyQt5.Qt import QAction, QIcon, QKeySequence, QMenu, Qt, QToolBar, pyqtSignal 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 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) action_triggered = pyqtSignal(object)
open_book_at_path = pyqtSignal(object) open_book_at_path = pyqtSignal(object)
def __init__(self, parent=None): def __init__(self, parent=None):
QToolBar.__init__(self, parent) ToolBar.__init__(self, parent)
self.setObjectName('vertical_toolbar') self.setObjectName('actions_toolbar')
self.setAllowedAreas(Qt.LeftToolBarArea | Qt.RightToolBarArea) self.setAllowedAreas(Qt.AllToolBarAreas)
self.setToolButtonStyle(Qt.ToolButtonIconOnly)
self.setOrientation(Qt.Vertical)
def initialize(self, web_view): def initialize(self, web_view):
shortcut_action = self.create_shortcut_action
self.action_triggered.connect(web_view.trigger_shortcut) self.action_triggered.connect(web_view.trigger_shortcut)
page = web_view.page() page = web_view.page()
web_view.shortcuts_changed.connect(self.set_tooltips)
web_view.paged_mode_changed.connect(self.update_mode_action) web_view.paged_mode_changed.connect(self.update_mode_action)
self.shortcut_actions = {}
self.back_action = page.action(QWebEnginePage.Back) self.back_action = page.action(QWebEnginePage.Back)
self.back_action.setIcon(QIcon(I('back.png'))) self.back_action.setIcon(QIcon(I('back.png')))
@ -46,13 +57,6 @@ class VerticalToolBar(QToolBar):
self.addAction(self.forward_action) self.addAction(self.forward_action)
self.addSeparator() 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_action = a = QAction(QIcon(I('document_open.png')), _('Open e-book'), self)
self.open_menu = m = QMenu(self) self.open_menu = m = QMenu(self)
a.setMenu(m) a.setMenu(m)
@ -95,10 +99,7 @@ class VerticalToolBar(QToolBar):
a.setChecked(True) a.setChecked(True)
a.setToolTip(_('Switch to paged mode -- where the text is broken into pages')) a.setToolTip(_('Switch to paged mode -- where the text is broken into pages'))
def set_tooltips(self, smap): def set_tooltips(self, rmap):
rmap = defaultdict(list)
for k, v in iteritems(smap):
rmap[v].append(k)
for sc, a in iteritems(self.shortcut_actions): for sc, a in iteritems(self.shortcut_actions):
if a.isCheckable(): if a.isCheckable():
continue 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.lookup import Lookup
from calibre.gui2.viewer.overlay import LoadingOverlay from calibre.gui2.viewer.overlay import LoadingOverlay
from calibre.gui2.viewer.toc import TOC, TOCSearch, TOCView 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 ( from calibre.gui2.viewer.web_view import (
WebView, get_path_for_name, get_session_pref, set_book_path, viewer_config_dir, WebView, get_path_for_name, get_session_pref, set_book_path, viewer_config_dir,
vprefs vprefs
@ -42,7 +42,7 @@ from calibre.utils.img import image_from_path
from calibre.utils.ipc.simple_worker import WorkerError from calibre.utils.ipc.simple_worker import WorkerError
from calibre.utils.monotonic import monotonic from calibre.utils.monotonic import monotonic
from calibre.utils.serialize import json_loads 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') annotations_dir = os.path.join(viewer_config_dir, 'annots')
@ -99,10 +99,10 @@ class EbookViewer(MainWindow):
self.setWindowTitle(self.base_window_title) self.setWindowTitle(self.base_window_title)
self.in_full_screen_mode = None self.in_full_screen_mode = None
self.image_popup = ImagePopup(self) self.image_popup = ImagePopup(self)
self.vertical_toolbar = vt = VerticalToolBar(self) self.actions_toolbar = at = ActionsToolBar(self)
vt.open_book_at_path.connect(self.ask_for_open) at.open_book_at_path.connect(self.ask_for_open)
self.addToolBar(Qt.LeftToolBarArea, vt) self.addToolBar(Qt.LeftToolBarArea, at)
# vt.setVisible(False) at.setVisible(False)
try: try:
os.makedirs(annotations_dir) os.makedirs(annotations_dir)
except EnvironmentError: except EnvironmentError:
@ -161,13 +161,20 @@ class EbookViewer(MainWindow):
self.web_view.show_loading_message.connect(self.show_loading_message) self.web_view.show_loading_message.connect(self.show_loading_message)
self.web_view.show_error.connect(self.show_error) self.web_view.show_error.connect(self.show_error)
self.web_view.print_book.connect(self.print_book, type=Qt.QueuedConnection) 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.setCentralWidget(self.web_view)
self.loading_overlay = LoadingOverlay(self) self.loading_overlay = LoadingOverlay(self)
self.restore_state() self.restore_state()
if continue_reading: if continue_reading:
self.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): def toggle_inspector(self):
visible = self.inspector_dock.toggleViewAction().isChecked() visible = self.inspector_dock.toggleViewAction().isChecked()
self.inspector_dock.setVisible(not visible) self.inspector_dock.setVisible(not visible)