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
|
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
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user