mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Implement preference to restore window geometry
This commit is contained in:
parent
95dc6a06ad
commit
d9c1eb14d7
@ -25,7 +25,9 @@ from calibre.gui2.viewer.annotations import (
|
||||
from calibre.gui2.viewer.bookmarks import BookmarkManager
|
||||
from calibre.gui2.viewer.convert_book import prepare_book, update_book
|
||||
from calibre.gui2.viewer.toc import TOC, TOCSearch, TOCView
|
||||
from calibre.gui2.viewer.web_view import WebView, set_book_path, vprefs
|
||||
from calibre.gui2.viewer.web_view import (
|
||||
WebView, get_session_pref, set_book_path, vprefs
|
||||
)
|
||||
from calibre.utils.date import utcnow
|
||||
from calibre.utils.ipc.simple_worker import WorkerError
|
||||
from calibre.utils.serialize import json_loads
|
||||
@ -89,9 +91,7 @@ class EbookViewer(MainWindow):
|
||||
self.web_view.update_current_toc_nodes.connect(self.toc.update_current_toc_nodes)
|
||||
self.web_view.toggle_full_screen.connect(self.toggle_full_screen)
|
||||
self.setCentralWidget(self.web_view)
|
||||
state = vprefs['main_window_state']
|
||||
if state:
|
||||
self.restoreState(state, self.MAIN_WINDOW_STATE_VERSION)
|
||||
self.restore_state()
|
||||
|
||||
# IPC {{{
|
||||
def handle_commandline_arg(self, arg):
|
||||
@ -252,10 +252,24 @@ class EbookViewer(MainWindow):
|
||||
update_book(path, before_stat, {'calibre-book-annotations.json': annots})
|
||||
|
||||
def save_state(self):
|
||||
vprefs['main_window_state'] = bytearray(self.saveState(self.MAIN_WINDOW_STATE_VERSION))
|
||||
with vprefs:
|
||||
vprefs['main_window_state'] = bytearray(self.saveState(self.MAIN_WINDOW_STATE_VERSION))
|
||||
vprefs['main_window_geometry'] = bytearray(self.saveGeometry())
|
||||
|
||||
def restore_state(self):
|
||||
state = vprefs['main_window_state']
|
||||
geom = vprefs['main_window_geometry']
|
||||
if geom and get_session_pref('remember_window_geometry'):
|
||||
self.restoreGeometry(geom)
|
||||
if state:
|
||||
self.restoreState(state, self.MAIN_WINDOW_STATE_VERSION)
|
||||
|
||||
def closeEvent(self, ev):
|
||||
self.save_annotations()
|
||||
self.save_state()
|
||||
try:
|
||||
self.save_annotations()
|
||||
self.save_state()
|
||||
except Exception:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return MainWindow.closeEvent(self, ev)
|
||||
# }}}
|
||||
|
@ -39,6 +39,7 @@ except ImportError:
|
||||
vprefs = JSONConfig('viewer-webengine')
|
||||
vprefs.defaults['session_data'] = {}
|
||||
vprefs.defaults['main_window_state'] = None
|
||||
vprefs.defaults['main_window_geometry'] = None
|
||||
|
||||
|
||||
# Override network access to load data from the book {{{
|
||||
@ -147,6 +148,12 @@ class UrlSchemeHandler(QWebEngineUrlSchemeHandler):
|
||||
# }}}
|
||||
|
||||
|
||||
def get_session_pref(name, default=None, group='standalone_misc_settings'):
|
||||
sd = vprefs['session_data']
|
||||
g = sd.get(group, {})
|
||||
return g.get(name, default)
|
||||
|
||||
|
||||
def create_profile():
|
||||
ans = getattr(create_profile, 'ans', None)
|
||||
if ans is None:
|
||||
@ -340,6 +347,7 @@ class WebView(RestartingWebEngineView):
|
||||
return ans
|
||||
|
||||
def change_zoom_by(self, steps=1):
|
||||
# TODO: Add UI for this
|
||||
ss = vprefs['session_data'].get('zoom_step_size') or 20
|
||||
amt = (ss / 100) * steps
|
||||
self._page.setZoomFactor(self._page.zoomFactor() + amt)
|
||||
|
@ -32,19 +32,15 @@ def create_misc_panel(container):
|
||||
container = container.lastChild
|
||||
sd = get_session_data()
|
||||
settings = sd.get('standalone_misc_settings')
|
||||
settings
|
||||
|
||||
def cb(name, text):
|
||||
ans = E.input(type='checkbox', name=name)
|
||||
if jstype(settings[name]) is 'boolean':
|
||||
ans.checked = v'!!settings[name]'
|
||||
else:
|
||||
ans.checked = DEFAULTS[name]
|
||||
ans.checked = settings[name] if jstype(settings[name]) is 'boolean' else DEFAULTS[name]
|
||||
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_last_read', _('Remember current page when quitting')))
|
||||
container.append(cb('save_annotations_in_ebook', _('Keep a copy of annotations/bookmarks inside 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.appendChild(E.div(
|
||||
style='margin-top: 1rem', create_button(_('Restore defaults'), action=restore_defaults)
|
||||
|
Loading…
x
Reference in New Issue
Block a user