mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Nicer names for checkpoints and checkpoint actions
This commit is contained in:
parent
806b927deb
commit
d4f0624974
@ -378,7 +378,7 @@ created every time you run any of the automated tools described in the
|
|||||||
previous section.
|
previous section.
|
||||||
|
|
||||||
You can create a checkpoint via :guilabel:`Edit->Create checkpoint`. And go back
|
You can create a checkpoint via :guilabel:`Edit->Create checkpoint`. And go back
|
||||||
to a previous checkpoint with :guilabel:`Edit->Revert to before`
|
to a previous checkpoint with :guilabel:`Edit->Revert to ...`
|
||||||
|
|
||||||
The checkpointing functionality is in addition to the normal Undo/redo
|
The checkpointing functionality is in addition to the normal Undo/redo
|
||||||
mechanism when editing individual files. Checkpoints are particularly useful
|
mechanism when editing individual files. Checkpoints are particularly useful
|
||||||
|
@ -256,7 +256,7 @@ class Boss(QObject):
|
|||||||
|
|
||||||
@in_thread_job
|
@in_thread_job
|
||||||
def delete_requested(self, spine_items, other_items):
|
def delete_requested(self, spine_items, other_items):
|
||||||
self.add_savepoint(_('Delete files'))
|
self.add_savepoint(_('Before: Delete files'))
|
||||||
c = current_container()
|
c = current_container()
|
||||||
c.remove_from_spine(spine_items)
|
c.remove_from_spine(spine_items)
|
||||||
for name in other_items:
|
for name in other_items:
|
||||||
@ -281,7 +281,7 @@ class Boss(QObject):
|
|||||||
self.commit_editor_to_container(c.opf_name)
|
self.commit_editor_to_container(c.opf_name)
|
||||||
|
|
||||||
def reorder_spine(self, items):
|
def reorder_spine(self, items):
|
||||||
self.add_savepoint(_('Re-order text'))
|
self.add_savepoint(_('Before: Re-order text'))
|
||||||
c = current_container()
|
c = current_container()
|
||||||
c.set_spine(items)
|
c.set_spine(items)
|
||||||
self.set_modified()
|
self.set_modified()
|
||||||
@ -299,7 +299,7 @@ class Boss(QObject):
|
|||||||
d = NewFileDialog(self.gui)
|
d = NewFileDialog(self.gui)
|
||||||
if d.exec_() != d.Accepted:
|
if d.exec_() != d.Accepted:
|
||||||
return
|
return
|
||||||
self.add_savepoint(_('Add file %s') % self.gui.elided_text(d.file_name))
|
self.add_savepoint(_('Before: Add file %s') % self.gui.elided_text(d.file_name))
|
||||||
c = current_container()
|
c = current_container()
|
||||||
data = d.file_data
|
data = d.file_data
|
||||||
if d.using_template:
|
if d.using_template:
|
||||||
@ -333,7 +333,7 @@ class Boss(QObject):
|
|||||||
folder_map = get_recommended_folders(current_container(), files)
|
folder_map = get_recommended_folders(current_container(), files)
|
||||||
files = {x:('/'.join((folder, os.path.basename(x))) if folder else os.path.basename(x))
|
files = {x:('/'.join((folder, os.path.basename(x))) if folder else os.path.basename(x))
|
||||||
for x, folder in folder_map.iteritems()}
|
for x, folder in folder_map.iteritems()}
|
||||||
self.add_savepoint(_('Add files'))
|
self.add_savepoint(_('Before Add files'))
|
||||||
c = current_container()
|
c = current_container()
|
||||||
for path, name in files.iteritems():
|
for path, name in files.iteritems():
|
||||||
i = 0
|
i = 0
|
||||||
@ -353,7 +353,7 @@ class Boss(QObject):
|
|||||||
self.set_modified()
|
self.set_modified()
|
||||||
|
|
||||||
def edit_toc(self):
|
def edit_toc(self):
|
||||||
self.add_savepoint(_('Edit Table of Contents'))
|
self.add_savepoint(_('Before: Edit Table of Contents'))
|
||||||
d = TOCEditor(title=self.current_metadata.title, parent=self.gui)
|
d = TOCEditor(title=self.current_metadata.title, parent=self.gui)
|
||||||
if d.exec_() != d.Accepted:
|
if d.exec_() != d.Accepted:
|
||||||
self.rewind_savepoint()
|
self.rewind_savepoint()
|
||||||
@ -365,7 +365,7 @@ class Boss(QObject):
|
|||||||
|
|
||||||
def polish(self, action, name):
|
def polish(self, action, name):
|
||||||
with BusyCursor():
|
with BusyCursor():
|
||||||
self.add_savepoint(name)
|
self.add_savepoint(_('Before: %s') % name)
|
||||||
try:
|
try:
|
||||||
report, changed = tweak_polish(current_container(), {action:True})
|
report, changed = tweak_polish(current_container(), {action:True})
|
||||||
except:
|
except:
|
||||||
@ -407,7 +407,7 @@ class Boss(QObject):
|
|||||||
if not name_map:
|
if not name_map:
|
||||||
return info_dialog(self.gui, _('Nothing to do'), _(
|
return info_dialog(self.gui, _('Nothing to do'), _(
|
||||||
'The files in this book are already arranged into folders'), show=True)
|
'The files in this book are already arranged into folders'), show=True)
|
||||||
self.add_savepoint(_('Arrange into folders'))
|
self.add_savepoint(_('Before: Arrange into folders'))
|
||||||
self.gui.blocking_job(
|
self.gui.blocking_job(
|
||||||
'rationalize_folders', _('Renaming and updating links...'), partial(self.rename_done, name_map),
|
'rationalize_folders', _('Renaming and updating links...'), partial(self.rename_done, name_map),
|
||||||
rename_files, current_container(), name_map)
|
rename_files, current_container(), name_map)
|
||||||
@ -431,14 +431,14 @@ class Boss(QObject):
|
|||||||
'<pre>%s</pre>'%newname, '<pre>%s</pre>' % urlnormalize(newname)),
|
'<pre>%s</pre>'%newname, '<pre>%s</pre>' % urlnormalize(newname)),
|
||||||
'confirm-urlunsafe-change', parent=self.gui, title=_('Are you sure?'), config_set=tprefs):
|
'confirm-urlunsafe-change', parent=self.gui, title=_('Are you sure?'), config_set=tprefs):
|
||||||
return
|
return
|
||||||
self.add_savepoint(_('Rename %s') % oldname)
|
self.add_savepoint(_('Before: Rename %s') % oldname)
|
||||||
name_map = {oldname:newname}
|
name_map = {oldname:newname}
|
||||||
self.gui.blocking_job(
|
self.gui.blocking_job(
|
||||||
'rename_file', _('Renaming and updating links...'), partial(self.rename_done, name_map),
|
'rename_file', _('Renaming and updating links...'), partial(self.rename_done, name_map),
|
||||||
rename_files, current_container(), name_map)
|
rename_files, current_container(), name_map)
|
||||||
|
|
||||||
def bulk_rename_requested(self, name_map):
|
def bulk_rename_requested(self, name_map):
|
||||||
self.add_savepoint(_('Bulk rename'))
|
self.add_savepoint(_('Before: Bulk rename'))
|
||||||
self.gui.blocking_job(
|
self.gui.blocking_job(
|
||||||
'bulk_rename_files', _('Renaming and updating links...'), partial(self.rename_done, name_map),
|
'bulk_rename_files', _('Renaming and updating links...'), partial(self.rename_done, name_map),
|
||||||
rename_files, current_container(), name_map)
|
rename_files, current_container(), name_map)
|
||||||
@ -474,10 +474,10 @@ class Boss(QObject):
|
|||||||
|
|
||||||
def update_global_history_actions(self):
|
def update_global_history_actions(self):
|
||||||
gu = self.global_undo
|
gu = self.global_undo
|
||||||
for x, text in (('undo', _('&Revert to before')), ('redo', '&Revert to after')):
|
for x, text in (('undo', _('&Revert to')), ('redo', '&Revert to')):
|
||||||
ac = getattr(self.gui, 'action_global_%s' % x)
|
ac = getattr(self.gui, 'action_global_%s' % x)
|
||||||
ac.setEnabled(getattr(gu, 'can_' + x))
|
ac.setEnabled(getattr(gu, 'can_' + x))
|
||||||
ac.setText(text + ' ' + (getattr(gu, x + '_msg') or '...'))
|
ac.setText(text + ' "%s"'%(getattr(gu, x + '_msg') or '...'))
|
||||||
|
|
||||||
def add_savepoint(self, msg):
|
def add_savepoint(self, msg):
|
||||||
self.commit_all_editors_to_container()
|
self.commit_all_editors_to_container()
|
||||||
@ -552,7 +552,7 @@ class Boss(QObject):
|
|||||||
ed.fix_html()
|
ed.fix_html()
|
||||||
else:
|
else:
|
||||||
with BusyCursor():
|
with BusyCursor():
|
||||||
self.add_savepoint(_('Fix HTML'))
|
self.add_savepoint(_('Before: Fix HTML'))
|
||||||
fix_all_html(current_container())
|
fix_all_html(current_container())
|
||||||
self.update_editors_from_container()
|
self.update_editors_from_container()
|
||||||
self.set_modified()
|
self.set_modified()
|
||||||
@ -566,7 +566,7 @@ class Boss(QObject):
|
|||||||
ed.pretty_print(name)
|
ed.pretty_print(name)
|
||||||
else:
|
else:
|
||||||
with BusyCursor():
|
with BusyCursor():
|
||||||
self.add_savepoint(_('Beautify files'))
|
self.add_savepoint(_('Before: Beautify files'))
|
||||||
pretty_all(current_container())
|
pretty_all(current_container())
|
||||||
self.update_editors_from_container()
|
self.update_editors_from_container()
|
||||||
self.set_modified()
|
self.set_modified()
|
||||||
@ -762,7 +762,7 @@ class Boss(QObject):
|
|||||||
if action == 'replace-all':
|
if action == 'replace-all':
|
||||||
if marked:
|
if marked:
|
||||||
return count_message(_('Replaced'), editor.all_in_marked(pat, state['replace']))
|
return count_message(_('Replaced'), editor.all_in_marked(pat, state['replace']))
|
||||||
self.add_savepoint(_('Replace all'))
|
self.add_savepoint(_('Before: Replace all'))
|
||||||
count = do_all()
|
count = do_all()
|
||||||
if count == 0:
|
if count == 0:
|
||||||
self.rewind_savepoint()
|
self.rewind_savepoint()
|
||||||
@ -859,7 +859,7 @@ class Boss(QObject):
|
|||||||
|
|
||||||
@in_thread_job
|
@in_thread_job
|
||||||
def split_requested(self, name, loc):
|
def split_requested(self, name, loc):
|
||||||
self.add_savepoint(_('Split %s') % self.gui.elided_text(name))
|
self.add_savepoint(_('Before: Split %s') % self.gui.elided_text(name))
|
||||||
try:
|
try:
|
||||||
bottom_name = split(current_container(), name, loc)
|
bottom_name = split(current_container(), name, loc)
|
||||||
except AbortError:
|
except AbortError:
|
||||||
@ -882,7 +882,7 @@ class Boss(QObject):
|
|||||||
d = MultiSplit(self.gui)
|
d = MultiSplit(self.gui)
|
||||||
if d.exec_() == d.Accepted:
|
if d.exec_() == d.Accepted:
|
||||||
with BusyCursor():
|
with BusyCursor():
|
||||||
self.add_savepoint(_('Split %s') % self.gui.elided_text(name))
|
self.add_savepoint(_('Before: Split %s') % self.gui.elided_text(name))
|
||||||
try:
|
try:
|
||||||
multisplit(current_container(), name, d.xpath)
|
multisplit(current_container(), name, d.xpath)
|
||||||
except AbortError:
|
except AbortError:
|
||||||
@ -938,7 +938,7 @@ class Boss(QObject):
|
|||||||
|
|
||||||
@in_thread_job
|
@in_thread_job
|
||||||
def fix_requested(self, errors):
|
def fix_requested(self, errors):
|
||||||
self.add_savepoint(_('Auto-fix errors'))
|
self.add_savepoint(_('Before: Auto-fix errors'))
|
||||||
c = self.gui.check_book
|
c = self.gui.check_book
|
||||||
c.parent().show()
|
c.parent().show()
|
||||||
c.parent().raise_()
|
c.parent().raise_()
|
||||||
@ -951,7 +951,7 @@ class Boss(QObject):
|
|||||||
|
|
||||||
@in_thread_job
|
@in_thread_job
|
||||||
def merge_requested(self, category, names, master):
|
def merge_requested(self, category, names, master):
|
||||||
self.add_savepoint(_('Merge files into %s') % self.gui.elided_text(master))
|
self.add_savepoint(_('Before: Merge files into %s') % self.gui.elided_text(master))
|
||||||
try:
|
try:
|
||||||
merge(current_container(), category, names, master)
|
merge(current_container(), category, names, master)
|
||||||
except AbortError:
|
except AbortError:
|
||||||
@ -963,7 +963,7 @@ class Boss(QObject):
|
|||||||
|
|
||||||
@in_thread_job
|
@in_thread_job
|
||||||
def link_stylesheets_requested(self, names, sheets, remove):
|
def link_stylesheets_requested(self, names, sheets, remove):
|
||||||
self.add_savepoint(_('Link stylesheets'))
|
self.add_savepoint(_('Before: Link stylesheets'))
|
||||||
changed_names = link_stylesheets(current_container(), names, sheets, remove)
|
changed_names = link_stylesheets(current_container(), names, sheets, remove)
|
||||||
if changed_names:
|
if changed_names:
|
||||||
self.update_editors_from_container(names=changed_names)
|
self.update_editors_from_container(names=changed_names)
|
||||||
@ -978,7 +978,7 @@ class Boss(QObject):
|
|||||||
|
|
||||||
@in_thread_job
|
@in_thread_job
|
||||||
def replace_requested(self, name, path, basename, force_mt):
|
def replace_requested(self, name, path, basename, force_mt):
|
||||||
self.add_savepoint(_('Replace %s') % name)
|
self.add_savepoint(_('Before: Replace %s') % name)
|
||||||
replace_file(current_container(), name, path, basename, force_mt)
|
replace_file(current_container(), name, path, basename, force_mt)
|
||||||
self.apply_container_update_to_gui()
|
self.apply_container_update_to_gui()
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ class GlobalUndoHistory(QAbstractListModel):
|
|||||||
elif not msg:
|
elif not msg:
|
||||||
msg = _('[Unnamed state]')
|
msg = _('[Unnamed state]')
|
||||||
else:
|
else:
|
||||||
msg = _('Before %s') % msg
|
msg = msg
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
def label_for_container(self, container):
|
def label_for_container(self, container):
|
||||||
@ -160,7 +160,7 @@ class GlobalUndoHistory(QAbstractListModel):
|
|||||||
def redo_msg(self):
|
def redo_msg(self):
|
||||||
if not self.can_redo:
|
if not self.can_redo:
|
||||||
return ''
|
return ''
|
||||||
return self.states[self.pos].message or ''
|
return self.states[self.pos + 1].message or _('[Unnamed state]')
|
||||||
|
|
||||||
class SpacedDelegate(QStyledItemDelegate):
|
class SpacedDelegate(QStyledItemDelegate):
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user