diff --git a/resources/images/sync-right.png b/resources/images/sync-right.png new file mode 100644 index 0000000000..36df10c35b Binary files /dev/null and b/resources/images/sync-right.png differ diff --git a/src/calibre/gui2/tweak_book/preview.py b/src/calibre/gui2/tweak_book/preview.py index 37cb32f873..2e3fc92635 100644 --- a/src/calibre/gui2/tweak_book/preview.py +++ b/src/calibre/gui2/tweak_book/preview.py @@ -416,6 +416,13 @@ class Preview(QWidget): self.auto_reload_toggled(ac.isChecked()) self.bar.addAction(ac) + ac = actions['sync-preview-to-editor'] + ac.setCheckable(True) + ac.setChecked(True) + ac.toggled.connect(self.sync_toggled) + self.sync_toggled(ac.isChecked()) + self.bar.addAction(ac) + ac = actions['reload-preview'] ac.triggered.connect(self.refresh) self.bar.addAction(ac) @@ -438,6 +445,8 @@ class Preview(QWidget): QTimer.singleShot(100, self._sync_to_editor) def _sync_to_editor(self): + if not actions['sync-preview-to-editor'].isChecked(): + return try: if self.refresh_timer.isActive() or self.current_sync_request[0] != self.current_name: return QTimer.singleShot(100, self._sync_to_editor) @@ -487,6 +496,11 @@ class Preview(QWidget): 'Auto reload preview when text changes in editor') if not checked else _( 'Disable auto reload of preview')) + def sync_toggled(self, checked): + actions['sync-preview-to-editor'].setToolTip(_( + 'Disable syncing of preview position to editor position') if checked else _( + 'Enable syncing of preview position to editor position')) + def visibility_changed(self, is_visible): if is_visible: self.refresh() diff --git a/src/calibre/gui2/tweak_book/ui.py b/src/calibre/gui2/tweak_book/ui.py index 822f6539f2..32a29f6956 100644 --- a/src/calibre/gui2/tweak_book/ui.py +++ b/src/calibre/gui2/tweak_book/ui.py @@ -220,6 +220,8 @@ class Main(MainWindow): # Preview actions group = _('Preview') self.action_auto_reload_preview = reg('auto-reload.png', _('Auto reload preview'), None, 'auto-reload-preview', (), _('Auto reload preview')) + self.action_auto_sync_preview = reg('sync-right.png', _('Sync preview position to editor position'), None, 'sync-preview-to-editor', (), _( + 'Sync preview position to editor position')) self.action_reload_preview = reg('view-refresh.png', _('Refresh preview'), None, 'reload-preview', ('F5',), _('Refresh preview')) # Search actions