From 807ba2fe8b7afab8fd13d55ed9085fb8e5024d96 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 23 Sep 2023 07:57:55 +0530 Subject: [PATCH] Fix #2037117 [[Enhancement] "Add multiple books from archive" should include 7z](https://bugs.launchpad.net/calibre/+bug/2037117) --- src/calibre/gui2/actions/add.py | 6 +++--- src/calibre/gui2/add.py | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/actions/add.py b/src/calibre/gui2/actions/add.py index ecbd07168d..02c6dafb4f 100644 --- a/src/calibre/gui2/actions/add.py +++ b/src/calibre/gui2/actions/add.py @@ -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) diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py index dcac357d41..84c3755dc4 100644 --- a/src/calibre/gui2/add.py +++ b/src/calibre/gui2/add.py @@ -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: