Viewer: have the toolbar actions for the docks indicate visibility

This commit is contained in:
Kovid Goyal 2019-12-15 14:38:33 +05:30
parent ba95c2b363
commit 4b077904c0
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 22 additions and 4 deletions

View File

@ -147,11 +147,14 @@ class ActionsToolBar(ToolBar):
self.next_action = shortcut_action('next')
self.previous_action = shortcut_action('previous')
self.toc_action = shortcut_action('toc')
self.bookmarks_action = shortcut_action('bookmarks')
self.toc_action = a = shortcut_action('toc')
a.setCheckable(True)
self.bookmarks_action = a = shortcut_action('bookmarks')
a.setCheckable(True)
self.reference_action = a = shortcut_action('reference')
a.setCheckable(True)
self.lookup_action = shortcut_action('lookup')
self.lookup_action = a = shortcut_action('lookup')
a.setCheckable(True)
self.chrome_action = shortcut_action('chrome')
self.mode_action = a = shortcut_action('mode')
@ -187,6 +190,11 @@ class ActionsToolBar(ToolBar):
def update_reference_mode_action(self, enabled):
self.reference_action.setChecked(enabled)
def update_dock_actions(self, visibility_map):
for k in ('toc', 'bookmarks', 'lookup'):
ac = getattr(self, '{}_action'.format(k))
ac.setChecked(visibility_map[k])
def set_tooltips(self, rmap):
for sc, a in iteritems(self.shortcut_actions):
if a.isCheckable():

View File

@ -118,6 +118,7 @@ class EbookViewer(MainWindow):
ans.setObjectName(name)
self.addDockWidget(area, ans)
ans.setVisible(False)
ans.visibilityChanged.connect(self.dock_visibility_changed)
return ans
for dock_def in itervalues(self.dock_defs):
@ -170,6 +171,7 @@ class EbookViewer(MainWindow):
self.loading_overlay = LoadingOverlay(self)
self.restore_state()
self.actions_toolbar.update_visibility()
self.dock_visibility_changed()
if continue_reading:
self.continue_reading()
@ -289,6 +291,10 @@ class EbookViewer(MainWindow):
md.setImageData(img)
md.setUrls([url])
QApplication.instance().clipboard().setMimeData(md)
def dock_visibility_changed(self):
vmap = {dock.objectName().partition('-')[0]: dock.toggleViewAction().isChecked() for dock in self.dock_widgets}
self.actions_toolbar.update_dock_actions(vmap)
# }}}
# Load book {{{
@ -307,8 +313,12 @@ class EbookViewer(MainWindow):
from .printing import print_book
print_book(set_book_path.pathtoebook, book_title=self.current_book_data['metadata']['title'], parent=self)
@property
def dock_widgets(self):
return self.findChildren(QDockWidget, options=Qt.FindDirectChildrenOnly)
def reset_interface(self):
for dock in self.findChildren(QDockWidget):
for dock in self.dock_widgets:
dock.setFloating(False)
area = self.dock_defs[dock.objectName().partition('-')[0]].initial_area
self.removeDockWidget(dock)