mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Have only a single toolbar
This commit is contained in:
parent
8f3991f877
commit
8bfe1b2598
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user