Allow users to create their own checkpoints while tweaking the book

This commit is contained in:
Kovid Goyal 2013-11-15 16:38:32 +05:30
parent 474e7401e5
commit 8b439c6a97
2 changed files with 16 additions and 2 deletions

View File

@ -12,7 +12,7 @@ from functools import partial
from PyQt4.Qt import ( from PyQt4.Qt import (
QObject, QApplication, QDialog, QGridLayout, QLabel, QSize, Qt, QCursor, QObject, QApplication, QDialog, QGridLayout, QLabel, QSize, Qt, QCursor,
QDialogButtonBox, QIcon, QTimer, QPixmap, QTextBrowser, QVBoxLayout) QDialogButtonBox, QIcon, QTimer, QPixmap, QTextBrowser, QVBoxLayout, QInputDialog)
from calibre import prints from calibre import prints
from calibre.ptempfile import PersistentTemporaryDirectory from calibre.ptempfile import PersistentTemporaryDirectory
@ -427,6 +427,13 @@ class Boss(QObject):
finally: finally:
QApplication.restoreOverrideCursor() QApplication.restoreOverrideCursor()
def create_checkpoint(self):
text, ok = QInputDialog.getText(self.gui, _('Choose name'), _(
'Choose a name for the checkpoint.\nYou can later restore the book'
' to this checkpoint via the\n"Revert to..." entries in the Edit menu.'))
if ok:
self.add_savepoint(text)
def save_book(self): def save_book(self):
c = current_container() c = current_container()
for name, ed in editors.iteritems(): for name, ed in editors.iteritems():

View File

@ -235,6 +235,12 @@ class Main(MainWindow):
'count', keys=('Ctrl+N'), description=_('Count number of matches')) 'count', keys=('Ctrl+N'), description=_('Count number of matches'))
self.action_mark = reg(None, _('&Mark selected text'), self.boss.mark_selected_text, 'mark-selected-text', ('Ctrl+Shift+M',), _('Mark selected text')) self.action_mark = reg(None, _('&Mark selected text'), self.boss.mark_selected_text, 'mark-selected-text', ('Ctrl+Shift+M',), _('Mark selected text'))
# Miscellaneous actions
group = _('Miscellaneous')
self.action_create_checkpoint = reg(
'marked.png', _('&Create checkpoint'), self.boss.create_checkpoint, 'create-checkpoint', (), _(
'Create a checkpoint with the current state of the book'))
def create_menubar(self): def create_menubar(self):
b = self.menuBar() b = self.menuBar()
@ -246,6 +252,7 @@ class Main(MainWindow):
e = b.addMenu(_('&Edit')) e = b.addMenu(_('&Edit'))
e.addAction(self.action_global_undo) e.addAction(self.action_global_undo)
e.addAction(self.action_global_redo) e.addAction(self.action_global_redo)
e.addAction(self.action_create_checkpoint)
e.addSeparator() e.addSeparator()
e.addAction(self.action_editor_undo) e.addAction(self.action_editor_undo)
e.addAction(self.action_editor_redo) e.addAction(self.action_editor_redo)
@ -295,7 +302,7 @@ class Main(MainWindow):
return b return b
a = create(_('Book tool bar'), 'global').addAction a = create(_('Book tool bar'), 'global').addAction
for x in ('open_book', 'global_undo', 'global_redo', 'save', 'toc'): for x in ('open_book', 'global_undo', 'global_redo', 'save', 'create_checkpoint', 'toc'):
a(getattr(self, 'action_' + x)) a(getattr(self, 'action_' + x))
a = create(_('Polish book tool bar'), 'polish').addAction a = create(_('Polish book tool bar'), 'polish').addAction