From 927c389e91ffe47880ed1b0949b421d449f7ad4b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 17 Jan 2011 13:20:12 -0700 Subject: [PATCH] Fix #8436 (Add tag when using Add ISBN Dialog) --- src/calibre/gui2/actions/add.py | 9 ++-- src/calibre/gui2/dialogs/add_from_isbn.py | 7 +++ src/calibre/gui2/dialogs/add_from_isbn.ui | 52 +++++++++++++++++++---- 3 files changed, 56 insertions(+), 12 deletions(-) diff --git a/src/calibre/gui2/actions/add.py b/src/calibre/gui2/actions/add.py index 9917c542ae..6fa53d6290 100644 --- a/src/calibre/gui2/actions/add.py +++ b/src/calibre/gui2/actions/add.py @@ -91,13 +91,14 @@ class AddAction(InterfaceAction): self.gui.library_view.model().db.import_book(MetaInformation(None), []) self.gui.library_view.model().books_added(num) - def add_isbns(self, books): + def add_isbns(self, books, add_tags=[]): from calibre.ebooks.metadata import MetaInformation ids = set([]) + db = self.gui.library_view.model().db + for x in books: mi = MetaInformation(None) mi.isbn = x['isbn'] - db = self.gui.library_view.model().db if x['path'] is not None: ids.add(db.import_book(mi, [x['path']])) else: @@ -109,6 +110,8 @@ class AddAction(InterfaceAction): self.gui.iactions['Edit Metadata'].do_download_metadata(ids) finally: config['overwrite_author_title_metadata'] = orig + if add_tags and ids: + db.bulk_modify_tags(ids, add=add_tags) def files_dropped(self, paths): @@ -166,7 +169,7 @@ class AddAction(InterfaceAction): from calibre.gui2.dialogs.add_from_isbn import AddFromISBN d = AddFromISBN(self.gui) if d.exec_() == d.Accepted: - self.add_isbns(d.books) + self.add_isbns(d.books, add_tags=d.set_tags) def add_books(self, *args): ''' diff --git a/src/calibre/gui2/dialogs/add_from_isbn.py b/src/calibre/gui2/dialogs/add_from_isbn.py index f93cddecd5..433b70291c 100644 --- a/src/calibre/gui2/dialogs/add_from_isbn.py +++ b/src/calibre/gui2/dialogs/add_from_isbn.py @@ -12,6 +12,7 @@ from PyQt4.Qt import QDialog, QApplication from calibre.gui2.dialogs.add_from_isbn_ui import Ui_Dialog from calibre.ebooks.metadata import check_isbn from calibre.constants import iswindows +from calibre.gui2 import gprefs class AddFromISBN(QDialog, Ui_Dialog): @@ -25,7 +26,9 @@ class AddFromISBN(QDialog, Ui_Dialog): self.isbns = [] self.books = [] + self.set_tags = [] self.paste_button.clicked.connect(self.paste) + self.add_tags.setText(', '.join(gprefs.get('add from ISBN tags', []))) def paste(self, *args): app = QApplication.instance() @@ -37,6 +40,10 @@ class AddFromISBN(QDialog, Ui_Dialog): self.isbn_box.setPlainText(new) def accept(self, *args): + tags = unicode(self.add_tags.text()).strip().split(',') + tags = list(filter(None, [x.strip() for x in tags])) + gprefs['add from ISBN tags'] = tags + self.set_tags = tags for line in unicode(self.isbn_box.toPlainText()).strip().splitlines(): line = line.strip() if not line: diff --git a/src/calibre/gui2/dialogs/add_from_isbn.ui b/src/calibre/gui2/dialogs/add_from_isbn.ui index e37c4ed769..f598e6f1d8 100644 --- a/src/calibre/gui2/dialogs/add_from_isbn.ui +++ b/src/calibre/gui2/dialogs/add_from_isbn.ui @@ -18,8 +18,19 @@ :/images/add_book.png:/images/add_book.png - - + + + + + + + + + &Paste from clipboard + + + + @@ -34,6 +45,36 @@ + + + + + + &Tags to set on created book entries: + + + add_tags + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + @@ -44,13 +85,6 @@ - - - - &Paste from clipboard - - -