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
-
-
-