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
|
from calibre.gui2.tweak_book.editor.snippets import UserSnippets
|
||||||
UserSnippets(self.gui).exec()
|
UserSnippets(self.gui).exec()
|
||||||
|
|
||||||
|
def merge_files(self):
|
||||||
|
self.gui.file_list.merge_files()
|
||||||
|
|
||||||
# Shutdown {{{
|
# Shutdown {{{
|
||||||
|
|
||||||
def quit(self):
|
def quit(self):
|
||||||
|
@ -766,6 +766,22 @@ class FileList(QTreeWidget, OpenWithHandler):
|
|||||||
return (category, i)
|
return (category, i)
|
||||||
return (None, -1)
|
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):
|
def start_merge(self, category, names):
|
||||||
d = MergeDialog(names, self)
|
d = MergeDialog(names, self)
|
||||||
if d.exec() == QDialog.DialogCode.Accepted and d.ans:
|
if d.exec() == QDialog.DialogCode.Accepted and d.ans:
|
||||||
@ -1264,6 +1280,9 @@ class FileListWidget(QWidget):
|
|||||||
def restore_temp_names(self):
|
def restore_temp_names(self):
|
||||||
self.file_list.restore_temp_names()
|
self.file_list.restore_temp_names()
|
||||||
|
|
||||||
|
def merge_files(self):
|
||||||
|
self.file_list.merge_files()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def searchable_names(self):
|
def searchable_names(self):
|
||||||
return self.file_list.searchable_names
|
return self.file_list.searchable_names
|
||||||
|
@ -559,6 +559,9 @@ class Main(MainWindow):
|
|||||||
self.action_manage_snippets = treg(
|
self.action_manage_snippets = treg(
|
||||||
'snippets.png', _('Manage &Snippets'), self.boss.manage_snippets, 'manage-snippets', (), _(
|
'snippets.png', _('Manage &Snippets'), self.boss.manage_snippets, 'manage-snippets', (), _(
|
||||||
'Manage user created 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 = []
|
self.plugin_menu_actions = []
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user