Add a setting to control toolbar visibility

This commit is contained in:
Kovid Goyal 2019-11-02 14:04:48 +05:30
parent 8bfe1b2598
commit 47fc7c20b9
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 13 additions and 2 deletions

View File

@ -22,6 +22,8 @@ class ToolBar(QToolBar):
QToolBar.__init__(self, parent) QToolBar.__init__(self, parent)
self.shortcut_actions = {} self.shortcut_actions = {}
self.setToolButtonStyle(Qt.ToolButtonIconOnly) self.setToolButtonStyle(Qt.ToolButtonIconOnly)
self.setVisible(False)
self.setAllowedAreas(Qt.AllToolBarAreas)
def create_shortcut_action(self, icon, text, sc): def create_shortcut_action(self, icon, text, sc):
a = QAction(QIcon(I(icon)), text, self) a = QAction(QIcon(I(icon)), text, self)
@ -39,13 +41,14 @@ class ActionsToolBar(ToolBar):
def __init__(self, parent=None): def __init__(self, parent=None):
ToolBar.__init__(self, parent) ToolBar.__init__(self, parent)
self.setObjectName('actions_toolbar') self.setObjectName('actions_toolbar')
self.setAllowedAreas(Qt.AllToolBarAreas) self.update_visibility()
def initialize(self, web_view): def initialize(self, web_view):
shortcut_action = self.create_shortcut_action 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.paged_mode_changed.connect(self.update_mode_action) web_view.paged_mode_changed.connect(self.update_mode_action)
web_view.standalone_misc_settings_changed.connect(self.update_visibility)
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')))
@ -129,3 +132,6 @@ class ActionsToolBar(ToolBar):
elided_text(entry['title'], pos='right', width=250), elided_text(entry['title'], pos='right', width=250),
elided_text(os.path.basename(path), width=250))).triggered.connect(partial( elided_text(os.path.basename(path), width=250))).triggered.connect(partial(
self.open_book_at_path.emit, path)) self.open_book_at_path.emit, path))
def update_visibility(self):
self.setVisible(bool(get_session_pref('show_actions_toolbar', default=False)))

View File

@ -102,7 +102,6 @@ class EbookViewer(MainWindow):
self.actions_toolbar = at = ActionsToolBar(self) self.actions_toolbar = at = ActionsToolBar(self)
at.open_book_at_path.connect(self.ask_for_open) at.open_book_at_path.connect(self.ask_for_open)
self.addToolBar(Qt.LeftToolBarArea, at) self.addToolBar(Qt.LeftToolBarArea, at)
at.setVisible(False)
try: try:
os.makedirs(annotations_dir) os.makedirs(annotations_dir)
except EnvironmentError: except EnvironmentError:

View File

@ -402,6 +402,7 @@ class WebView(RestartingWebEngineView):
print_book = pyqtSignal() print_book = pyqtSignal()
shortcuts_changed = pyqtSignal(object) shortcuts_changed = pyqtSignal(object)
paged_mode_changed = pyqtSignal() paged_mode_changed = pyqtSignal()
standalone_misc_settings_changed = pyqtSignal(object)
def __init__(self, parent=None): def __init__(self, parent=None):
self._host_widget = None self._host_widget = None
@ -532,6 +533,7 @@ class WebView(RestartingWebEngineView):
vprefs['session_data'] = {} vprefs['session_data'] = {}
apply_font_settings(self._page) apply_font_settings(self._page)
self.paged_mode_changed.emit() self.paged_mode_changed.emit()
self.standalone_misc_settings_changed.emit()
elif key != '*': elif key != '*':
sd = vprefs['session_data'] sd = vprefs['session_data']
sd[key] = val sd[key] = val
@ -540,6 +542,8 @@ class WebView(RestartingWebEngineView):
apply_font_settings(self._page) apply_font_settings(self._page)
elif key == 'read_mode': elif key == 'read_mode':
self.paged_mode_changed.emit() self.paged_mode_changed.emit()
elif key == 'standalone_misc_settings':
self.standalone_misc_settings_changed.emit(val)
def set_local_storage(self, key, val): def set_local_storage(self, key, val):
if key == '*' and val is None: if key == '*' and val is None:

View File

@ -15,6 +15,7 @@ CONTAINER = unique_id('standalone-misc-settings')
DEFAULTS = { DEFAULTS = {
'remember_window_geometry': False, 'remember_window_geometry': False,
'remember_last_read': True, 'remember_last_read': True,
'show_actions_toolbar': False,
'save_annotations_in_ebook': True, 'save_annotations_in_ebook': True,
'singleinstance': False, 'singleinstance': False,
} }
@ -44,6 +45,7 @@ def create_misc_panel(container, apply_func, cancel_func):
return E.div(style='margin-top:1ex', E.label(ans, '\xa0' + text)) return E.div(style='margin-top:1ex', E.label(ans, '\xa0' + text))
container.append(cb('remember_window_geometry', _('Remember last used window size and position'))) container.append(cb('remember_window_geometry', _('Remember last used window size and position')))
container.append(cb('show_actions_toolbar', _('Show a toolbar with the most useful actions')))
container.append(cb('remember_last_read', _('Remember current page when quitting'))) container.append(cb('remember_last_read', _('Remember current page when quitting')))
container.append(cb('save_annotations_in_ebook', _('Keep a copy of annotations/bookmarks in the e-book file, for easy sharing'))) container.append(cb('save_annotations_in_ebook', _('Keep a copy of annotations/bookmarks in the e-book file, for easy sharing')))
container.append(cb('singleinstance', _('Allow only a single instance of the viewer (needs restart)'))) container.append(cb('singleinstance', _('Allow only a single instance of the viewer (needs restart)')))