Viewer: Add a preference under Miscellaneous to allow only a single instance of the viewer

This commit is contained in:
Kovid Goyal 2019-10-05 12:35:23 +05:30
parent fc9bbd7ca2
commit a87c59e8c8
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 9 additions and 6 deletions

View File

@ -18,16 +18,16 @@ from calibre.gui2.viewer.ui import EbookViewer
from calibre.ptempfile import reset_base_dir
from calibre.utils.config import JSONConfig
from calibre.utils.ipc import RC, viewer_socket_address
from calibre.gui2.viewer.web_view import vprefs, get_session_pref
vprefs = JSONConfig('viewer')
vprefs.defaults['singleinstance'] = False
singleinstance_name = 'calibre_viewer'
def migrate_previous_viewer_prefs():
from calibre.gui2.viewer.web_view import vprefs as new_prefs
new_prefs = vprefs
if new_prefs['old_prefs_migrated']:
return
old_vprefs = JSONConfig('viewer')
old_prefs = JSONConfig('viewer.py')
with new_prefs:
sd = new_prefs['session_data']
@ -47,6 +47,7 @@ def migrate_previous_viewer_prefs():
ms['remember_window_geometry'] = bool(old_prefs.get('remember_window_size', False))
ms['remember_last_read'] = bool(old_prefs.get('remember_current_page', True))
ms['save_annotations_in_ebook'] = bool(old_prefs.get('copy_bookmarks_to_file', True))
ms['singleinstance'] = bool(old_vprefs.get('singleinstance', False))
sd['standalone_misc_settings'] = ms
for k in ('top', 'bottom'):
@ -69,7 +70,7 @@ def migrate_previous_viewer_prefs():
cps['landscape'] = cp
if cps['portrait'] or cps['landscape']:
sd['columns_per_screen'] = cps
if vprefs.get('in_paged_mode') is False:
if old_vprefs.get('in_paged_mode') is False:
sd['read_mode'] = 'flow'
new_prefs.set('session_data', sd)
@ -180,7 +181,7 @@ def main(args=sys.argv):
scheme.setFlags(QWebEngineUrlScheme.SecureScheme)
QWebEngineUrlScheme.registerScheme(scheme)
override = 'calibre-ebook-viewer' if islinux else None
app = Application(args, override_program_name=override, color_prefs=vprefs, windows_app_uid=VIEWER_APP_UID)
app = Application(args, override_program_name=override, windows_app_uid=VIEWER_APP_UID)
parser = option_parser()
opts, args = parser.parse_args(args)
@ -189,7 +190,7 @@ def main(args=sys.argv):
raise SystemExit('Not a valid --open-at value: {}'.format(opts.open_at))
listener = None
if vprefs['singleinstance']:
if get_session_pref('singleinstance', False):
try:
listener = ensure_single_instance(args, opts.open_at)
except Exception as e:

View File

@ -15,6 +15,7 @@ DEFAULTS = {
'remember_window_geometry': False,
'remember_last_read': True,
'save_annotations_in_ebook': True,
'singleinstance': False,
}
@ -44,6 +45,7 @@ def create_misc_panel(container):
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 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('hide_tooltips', _('Hide mouse-over tooltips in the book text')))
container.appendChild(E.div(