mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Edit book: Add a shortcut Ctrl+M to merge selected files. Fixes #2053144 [ebook-edit: Keyboard shortcut for merging files](https://bugs.launchpad.net/calibre/+bug/2053144)
This commit is contained in:
parent
275cfd4875
commit
83a6ab947f
@ -1911,6 +1911,9 @@ class Boss(QObject):
|
||||
from calibre.gui2.tweak_book.editor.snippets import UserSnippets
|
||||
UserSnippets(self.gui).exec()
|
||||
|
||||
def merge_files(self):
|
||||
self.gui.file_list.merge_files()
|
||||
|
||||
# Shutdown {{{
|
||||
|
||||
def quit(self):
|
||||
|
@ -766,6 +766,22 @@ class FileList(QTreeWidget, OpenWithHandler):
|
||||
return (category, i)
|
||||
return (None, -1)
|
||||
|
||||
def merge_files(self):
|
||||
sel = self.selectedItems()
|
||||
selected_map = defaultdict(list)
|
||||
for item in sel:
|
||||
selected_map[str(item.data(0, CATEGORY_ROLE) or '')].append(str(item.data(0, NAME_ROLE) or ''))
|
||||
|
||||
for items in selected_map.values():
|
||||
items.sort(key=self.index_of_name)
|
||||
if len(selected_map['text']) > 1:
|
||||
self.start_merge('text', selected_map['text'])
|
||||
elif len(selected_map['styles']) > 1:
|
||||
self.start_merge('styles', selected_map['styles'])
|
||||
else:
|
||||
error_dialog(self, _('Cannot merge'), _(
|
||||
'No files selected. Select two or more HTML files or two or more CSS files in the Files browser before trying to merge'), show=True)
|
||||
|
||||
def start_merge(self, category, names):
|
||||
d = MergeDialog(names, self)
|
||||
if d.exec() == QDialog.DialogCode.Accepted and d.ans:
|
||||
@ -1264,6 +1280,9 @@ class FileListWidget(QWidget):
|
||||
def restore_temp_names(self):
|
||||
self.file_list.restore_temp_names()
|
||||
|
||||
def merge_files(self):
|
||||
self.file_list.merge_files()
|
||||
|
||||
@property
|
||||
def searchable_names(self):
|
||||
return self.file_list.searchable_names
|
||||
|
@ -559,6 +559,9 @@ class Main(MainWindow):
|
||||
self.action_manage_snippets = treg(
|
||||
'snippets.png', _('Manage &Snippets'), self.boss.manage_snippets, 'manage-snippets', (), _(
|
||||
'Manage user created Snippets'))
|
||||
self.action_merge_files = treg(
|
||||
'merge.png', _('&Merge files'), self.boss.merge_files, 'merge-files', 'Ctrl+M', _(
|
||||
'Merge two or more selected files'))
|
||||
|
||||
self.plugin_menu_actions = []
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user