Fix #2037117 [[Enhancement] "Add multiple books from archive" should include 7z](https://bugs.launchpad.net/calibre/+bug/2037117)

This commit is contained in:
Kovid Goyal 2023-09-23 07:57:55 +05:30
parent be2ab41feb
commit 807ba2fe8b
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 6 additions and 3 deletions

View File

@ -61,7 +61,7 @@ class AddAction(InterfaceAction):
self.add_menu = self.qaction.menu()
ma = partial(self.create_menu_action, self.add_menu)
ma('recursive-add', _('Add from folders and sub-folders'), icon='mimetypes/dir.png').triggered.connect(self.add_recursive_question)
ma('archive-add-book', _('Add multiple books from archive (ZIP/RAR)'), icon='mimetypes/zip.png').triggered.connect(self.add_from_archive)
ma('archive-add-book', _('Add multiple books from archive (ZIP/RAR/7z)'), icon='mimetypes/zip.png').triggered.connect(self.add_from_archive)
self.add_menu.addSeparator()
ma('add-empty', _('Add empty book (Book entry with no formats)'),
shortcut='Shift+Ctrl+E').triggered.connect(self.add_empty)
@ -273,7 +273,7 @@ class AddAction(InterfaceAction):
def add_archive(self, single):
paths = choose_files(
self.gui, 'recursive-archive-add', _('Choose archive file'),
filters=[(_('Archives'), ('zip', 'rar'))], all_files=False, select_only_single_file=False)
filters=[(_('Archives'), ('zip', 'rar', '7z'))], all_files=False, select_only_single_file=False)
if paths:
self.do_add_recursive(paths, single, list_of_archives=True)
@ -282,7 +282,7 @@ class AddAction(InterfaceAction):
'Will the archive have a single book per internal folder?'))
paths = choose_files(
self.gui, 'recursive-archive-add', _('Choose archive file'),
filters=[(_('Archives'), ('zip', 'rar'))], all_files=False, select_only_single_file=False)
filters=[(_('Archives'), ('zip', 'rar', '7z'))], all_files=False, select_only_single_file=False)
if paths:
self.do_add_recursive(paths, single, list_of_archives=True)

View File

@ -208,6 +208,9 @@ class Adder(QObject):
elif source.lower().endswith('.rar'):
from calibre.utils.unrar import extract
extract(source, tdir)
elif source.lower().endswith('.7z'):
from calibre.utils.seven_zip import extract
extract(source, tdir)
return tdir
try: