Viewer: Add a control to easily reset the interface to defaults

This commit is contained in:
Kovid Goyal 2019-11-02 15:08:46 +05:30
parent 47fc7c20b9
commit 4e98478013
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
5 changed files with 32 additions and 5 deletions

View File

@ -41,7 +41,6 @@ class ActionsToolBar(ToolBar):
def __init__(self, parent=None):
ToolBar.__init__(self, parent)
self.setObjectName('actions_toolbar')
self.update_visibility()
def initialize(self, web_view):
shortcut_action = self.create_shortcut_action

View File

@ -14,7 +14,7 @@ from threading import Thread
from PyQt5.Qt import (
QApplication, QDockWidget, QEvent, QMimeData, QModelIndex, QPixmap, QScrollBar,
Qt, QUrl, QVBoxLayout, QWidget, pyqtSignal
Qt, QToolBar, QUrl, QVBoxLayout, QWidget, pyqtSignal
)
from calibre import prints
@ -160,11 +160,13 @@ 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.web_view.reset_interface.connect(self.reset_interface, type=Qt.QueuedConnection)
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()
self.actions_toolbar.update_visibility()
if continue_reading:
self.continue_reading()
@ -300,6 +302,19 @@ class EbookViewer(MainWindow):
from .printing import print_book
print_book(set_book_path.pathtoebook, book_title=self.current_book_data['metadata']['title'], parent=self)
def reset_interface(self):
for dock in self.findChildren(QDockWidget):
dock.setFloating(False)
area = self.dock_defs[dock.objectName().partition('-')[0]].initial_area
self.removeDockWidget(dock)
self.addDockWidget(area, dock)
dock.setVisible(False)
for toolbar in self.findChildren(QToolBar):
toolbar.setVisible(False)
self.removeToolBar(toolbar)
self.addToolBar(Qt.LeftToolBarArea, toolbar)
def ask_for_open(self, path=None):
if path is None:
files = choose_files(

View File

@ -255,6 +255,7 @@ class ViewerBridge(Bridge):
export_shortcut_map = from_js(object)
print_book = from_js()
clear_history = from_js()
reset_interface = from_js()
create_view = to_js()
start_book_load = to_js()
@ -400,6 +401,7 @@ class WebView(RestartingWebEngineView):
show_loading_message = pyqtSignal(object)
show_error = pyqtSignal(object, object, object)
print_book = pyqtSignal()
reset_interface = pyqtSignal()
shortcuts_changed = pyqtSignal(object)
paged_mode_changed = pyqtSignal()
standalone_misc_settings_changed = pyqtSignal(object)
@ -436,6 +438,7 @@ class WebView(RestartingWebEngineView):
self.bridge.show_error.connect(self.show_error)
self.bridge.print_book.connect(self.print_book)
self.bridge.clear_history.connect(self.clear_history)
self.bridge.reset_interface.connect(self.reset_interface)
self.bridge.export_shortcut_map.connect(self.set_shortcut_map)
self.shortcut_map = {}
self.bridge.report_cfi.connect(self.call_callback)

View File

@ -313,7 +313,9 @@ class MainOverlay: # {{{
actions_div.appendChild(E.ul(
ac(_('Inspector'), _('Show the content inspector'),
def(): self.overlay.hide(), ui_operations.toggle_inspector();, 'bug')
def(): self.overlay.hide(), ui_operations.toggle_inspector();, 'bug'),
ac(_('Reset interface'), _('Reset viewer panels, toolbars and scrollbars to defaults'),
def(): self.overlay.hide(), ui_operations.reset_interface();, 'remove'),
))
container.appendChild(set_css(E.div(class_=MAIN_OVERLAY_TS_CLASS, # top section
onclick=def (evt):evt.stopPropagation();,

View File

@ -8,7 +8,7 @@ from gettext import gettext as _, install
import initialize # noqa: unused-import
from ajax import ajax
from book_list.globals import set_session_data
from book_list.globals import get_session_data, set_session_data
from book_list.library_data import library_data
from book_list.theme import get_color
from dom import get_widget_css, set_css
@ -20,7 +20,7 @@ from read_book.globals import runtime, ui_operations
from read_book.iframe import main as iframe_main
from read_book.shortcuts import add_standalone_viewer_shortcuts
from read_book.view import View
from session import session_defaults, local_storage
from session import local_storage, session_defaults
from utils import encode_query_with_path, parse_url_params
from viewer.constants import FAKE_HOST, FAKE_PROTOCOL, READER_BACKGROUND_URL
@ -322,6 +322,14 @@ if window is window.top:
to_python.toggle_bookmarks()
ui_operations.toggle_inspector = def():
to_python.toggle_inspector()
ui_operations.reset_interface = def():
sd = get_session_data()
m = sd.get('standalone_misc_settings', {})
v'delete m.show_actions_toolbar'
sd.set('standalone_misc_settings', m)
sd.set('book_scrollbar', False)
view.book_scrollbar.apply_visibility()
to_python.reset_interface()
ui_operations.toggle_lookup = def():
to_python.toggle_lookup()
ui_operations.selection_changed = def(selected_text):