diff --git a/resources/recipes/nation_ke.recipe b/resources/recipes/nation_ke.recipe
index 07d012c965..873697b97d 100644
--- a/resources/recipes/nation_ke.recipe
+++ b/resources/recipes/nation_ke.recipe
@@ -6,10 +6,9 @@ www.standardmedia.co.ke
import os
from calibre import strftime, __appname__, __version__
-import calibre.utils.PythonMagickWand as pw
-from ctypes import byref
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.constants import preferred_encoding
+from calibre.utils.magick import Image
class NationKeRecipe(BasicNewsRecipe):
@@ -95,19 +94,9 @@ class NationKeRecipe(BasicNewsRecipe):
self.cover_img_path = None
def prepare_cover_image(self, path_to_image, out_path):
- with pw.ImageMagick():
- img = pw.NewMagickWand()
- if img < 0:
- raise RuntimeError('Out of memory')
- if not pw.MagickReadImage(img, path_to_image):
- severity = pw.ExceptionType(0)
- msg = pw.MagickGetException(img, byref(severity))
- raise IOError('Failed to read image from: %s: %s'
- %(path_to_image, msg))
- if not pw.MagickWriteImage(img, out_path):
- raise RuntimeError('Failed to save image to %s'%out_path)
- pw.DestroyMagickWand(img)
-
+ img = Image()
+ img.open(path_to_image)
+ img.save(out_path)
def default_cover(self, cover_file):
'''
diff --git a/resources/recipes/standardmedia_ke.recipe b/resources/recipes/standardmedia_ke.recipe
index bb5bf11623..b64f2d82f4 100644
--- a/resources/recipes/standardmedia_ke.recipe
+++ b/resources/recipes/standardmedia_ke.recipe
@@ -6,11 +6,10 @@ www.standardmedia.co.ke
import os
from calibre import strftime, __appname__, __version__
-import calibre.utils.PythonMagickWand as pw
-from ctypes import byref
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.constants import preferred_encoding
+from calibre.utils.magick import Image
class StandardMediaKeRecipe(BasicNewsRecipe):
@@ -88,19 +87,9 @@ class StandardMediaKeRecipe(BasicNewsRecipe):
self.cover_img_path = None
def prepare_cover_image(self, path_to_image, out_path):
- with pw.ImageMagick():
- img = pw.NewMagickWand()
- if img < 0:
- raise RuntimeError('Out of memory')
- if not pw.MagickReadImage(img, path_to_image):
- severity = pw.ExceptionType(0)
- msg = pw.MagickGetException(img, byref(severity))
- raise IOError('Failed to read image from: %s: %s'
- %(path_to_image, msg))
- if not pw.MagickWriteImage(img, out_path):
- raise RuntimeError('Failed to save image to %s'%out_path)
- pw.DestroyMagickWand(img)
-
+ img = Image()
+ img.open(path_to_image)
+ img.save(out_path)
def default_cover(self, cover_file):
'''
diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot
index afb2a446d1..675e0fe7e1 100644
--- a/src/calibre/translations/calibre.pot
+++ b/src/calibre/translations/calibre.pot
@@ -4,9 +4,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: calibre 0.7.12\n"
-"POT-Creation-Date: 2010-07-30 19:04+MDT\n"
-"PO-Revision-Date: 2010-07-30 19:04+MDT\n"
+"Project-Id-Version: calibre 0.7.13\n"
+"POT-Creation-Date: 2010-08-06 13:37+MDT\n"
+"PO-Revision-Date: 2010-08-06 13:37+MDT\n"
"Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
@@ -30,7 +30,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:428
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:402
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:335
@@ -38,16 +38,16 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1896
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:235
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:278
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:281
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:236
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:282
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:20
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:333
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:332
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66
@@ -98,12 +98,12 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:97
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98
-#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:240
-#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:242
+#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:234
+#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:236
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:294
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:812
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:815
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:826
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:829
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:172
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:179
#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:22
@@ -117,14 +117,14 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:120
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:155
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:492
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:512
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:362
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:382
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:87
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:92
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:96
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185
#: /home/kovid/work/calibre/src/calibre/library/cli.py:213
#: /home/kovid/work/calibre/src/calibre/library/database.py:913
@@ -135,7 +135,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1646
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1648
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1770
-#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:268
+#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:199
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:137
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:68
@@ -251,7 +251,7 @@ msgid "This profile tries to provide sane defaults and is useful if you know not
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:57
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:412
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:414
msgid "This profile is intended for the SONY PRS line. The 500/505/600/700 etc."
msgstr ""
@@ -260,62 +260,62 @@ msgid "This profile is intended for the SONY PRS 300."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:78
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:447
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:449
msgid "This profile is intended for the SONY PRS-900."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:86
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:477
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:479
msgid "This profile is intended for the Microsoft Reader."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:97
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:488
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:490
msgid "This profile is intended for the Mobipocket books."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:110
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:501
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:503
msgid "This profile is intended for the Hanlin V3 and its clones."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:122
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:513
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:515
msgid "This profile is intended for the Hanlin V5 and its clones."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:132
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:521
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:523
msgid "This profile is intended for the Cybook G3."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:145
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:534
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:536
msgid "This profile is intended for the Cybook Opus."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:157
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:545
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:547
msgid "This profile is intended for the Amazon Kindle."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:169
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:580
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:584
msgid "This profile is intended for the Irex Illiad."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:181
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:593
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:597
msgid "This profile is intended for the IRex Digital Reader 1000."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:607
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:611
msgid "This profile is intended for the IRex Digital Reader 800."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:206
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:621
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:625
msgid "This profile is intended for the B&N Nook."
msgstr ""
@@ -327,59 +327,59 @@ msgstr ""
msgid "This profile tries to provide sane defaults and is useful if you want to produce a document intended to be read at a computer or on a range of devices."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:257
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:259
msgid "Intended for the iPad and similar devices with a resolution of 768x1024"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:425
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:427
msgid "This profile is intended for the Kobo Reader."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:438
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:440
msgid "This profile is intended for the SONY PRS-300."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:456
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:458
msgid "This profile is intended for the 5-inch JetBook."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:465
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:467
msgid "This profile is intended for the SONY PRS line. The 500/505/700 etc, in landscape mode. Mainly useful for comics."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:563
+#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:566
msgid "This profile is intended for the Amazon Kindle DX."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33
msgid "Installed plugins"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34
msgid "Mapping for filetype plugins"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35
msgid "Local plugin customization"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:35
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36
msgid "Disabled plugins"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:36
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:37
msgid "Enabled plugins"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:84
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:85
msgid "No valid plugin found in "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:468
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:478
msgid "Initialization of plugin %s failed with traceback:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:501
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:511
msgid ""
" %prog options\n"
"\n"
@@ -387,27 +387,27 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:507
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:517
msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:509
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:519
msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:511
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:521
msgid "Customize plugin. Specify name of plugin and customization string separated by a comma."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:513
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:523
msgid "List all installed plugins"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:515
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:525
msgid "Enable the named plugin"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/ui.py:517
+#: /home/kovid/work/calibre/src/calibre/customize/ui.py:527
msgid "Disable the named plugin"
msgstr ""
@@ -415,11 +415,11 @@ msgstr ""
msgid "Communicate with Android phones."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:47
+#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:48
msgid "Comma separated list of directories to send e-books to on the device. The first one that exists will be used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:89
+#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:90
msgid "Communicate with S60 phones."
msgstr ""
@@ -626,10 +626,10 @@ msgstr ""
msgid "Communicate with the Kobo Reader"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:51
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:54
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:57
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:159
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:53
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:56
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:59
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:161
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:68
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:71
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:74
@@ -639,32 +639,33 @@ msgstr ""
msgid "Getting list of books on device..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:219
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:263
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:221
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:265
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:253
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:271
msgid "Removing books from device..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:267
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:274
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:269
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:276
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:278
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:283
msgid "Removing books from device metadata listing..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:279
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:313
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:281
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:315
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:217
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:247
msgid "Adding books to device metadata listing..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:364
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:366
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:441
msgid "Not Implemented"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:365
+#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:367
msgid "\".kobo\" files do not exist on the device as books instead, they are rows in the sqlite database. Currently they cannot be exported or viewed."
msgstr ""
@@ -676,18 +677,14 @@ msgstr ""
msgid "Communicate with the Booq Avant"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/misc.py:57
+#: /home/kovid/work/calibre/src/calibre/devices/misc.py:58
msgid "Communicate with the Sweex MM300"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/misc.py:77
+#: /home/kovid/work/calibre/src/calibre/devices/misc.py:78
msgid "Communicate with the Pandigital Novel"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/misc.py:103
-msgid "Communicate with the Promedia eBook reader"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17
msgid "Communicate with the Nokia 770 internet tablet."
msgstr ""
@@ -919,75 +916,75 @@ msgstr ""
msgid "Set font delta"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:201
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:178
msgid "Rendered %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:204
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:181
msgid "Failed %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:261
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:235
msgid ""
"Failed to process comic: \n"
"\n"
"%s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:253
msgid "Number of colors for grayscale image conversion. Default: %default. Values of less than 256 may result in blurred text on your device if you are creating your comics in EPUB format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:257
msgid "Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:260
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:262
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:264
msgid "Disable trimming of comic pages. For some comics, trimming might remove content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:267
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:269
msgid "Keep aspect ratio and scale image using screen height as image width for viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:272
msgid "Used for right-to-left publications like manga. Causes landscape pages to be split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
msgid "Enable Despeckle. Reduces speckle noise. May greatly increase processing time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:305
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
msgid "Don't sort the files found in the comic alphabetically by name. Instead use the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:309
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:313
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:287
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:315
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289
msgid "Do not convert the image to grayscale (black and white)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:463
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:426
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:437
msgid "Page"
msgstr ""
@@ -1606,7 +1603,7 @@ msgstr ""
msgid "Comic"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:396
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:97
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98
@@ -1615,11 +1612,11 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:359
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:887
-#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:543
+#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:550
msgid "Title"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:397
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:364
@@ -1627,18 +1624,18 @@ msgstr ""
msgid "Author(s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:398
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:72
msgid "Publisher"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:399
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:400
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49
msgid "Producer"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:400
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:401
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:35
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:210
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211
@@ -1650,7 +1647,7 @@ msgstr ""
msgid "Comments"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:408
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:409
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73
@@ -1660,7 +1657,7 @@ msgstr ""
msgid "Tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:410
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74
@@ -1670,22 +1667,22 @@ msgstr ""
msgid "Series"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:411
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:412
msgid "Language"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:413
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:414
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067
msgid "Timestamp"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:415
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:416
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:70
msgid "Published"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:417
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:418
msgid "Rights"
msgstr ""
@@ -1779,10 +1776,38 @@ msgstr ""
msgid "No cover found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:15
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:27
msgid "Cover download"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:79
+msgid "Download covers from openlibrary.org"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:107
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:136
+msgid "ISBN: %s not found"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:117
+msgid "Download covers from librarything.com"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:128
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68
+msgid "LibraryThing.com timed out. Try again later."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:135
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75
+msgid "Could not fetch cover as server is experiencing high load. Please try again later."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:139
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79
+msgid "LibraryThing.com server error. Try again later."
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/douban.py:42
msgid "Downloads metadata from Douban.com"
msgstr ""
@@ -1856,22 +1881,10 @@ msgstr ""
msgid "The publisher of the book to search for."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:68
-msgid "LibraryThing.com timed out. Try again later."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:75
-msgid "Could not fetch cover as server is experiencing high load. Please try again later."
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:76
msgid " not found."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:79
-msgid "LibraryThing.com server error. Try again later."
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:86
msgid ""
"\n"
@@ -2253,7 +2266,7 @@ msgstr ""
msgid "Specify the character encoding of the output document. The default is cp1252."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:200
+#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:194
msgid ""
"This RTF file has a feature calibre does not support. Convert it to HTML first and then try it.\n"
"%s"
@@ -2404,7 +2417,7 @@ msgid "Disable UI animations"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:476
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:479
msgid "Copied"
msgstr ""
@@ -2416,7 +2429,7 @@ msgstr ""
msgid "Copy to Clipboard"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:396
+#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:397
msgid "Choose Files"
msgstr ""
@@ -2431,13 +2444,13 @@ msgid "User annotations generated from main library only"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:75
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:609
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:668
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:705
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:726
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:911
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:976
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1094
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:623
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:682
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:719
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:740
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:925
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:998
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1116
msgid "No books selected"
msgstr ""
@@ -2483,7 +2496,7 @@ msgid "Uploading books to device."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:350
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:145
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164
msgid "Books"
msgstr ""
@@ -2548,111 +2561,115 @@ msgid "Failed to read metadata from the following"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:448
msgid "Add to library"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:429
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:459
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1263
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:473
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1260
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1285
msgid "No book selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:434
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:442
+msgid "The following books are virtual and cannot be added to the calibre library:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:448
msgid "No book files found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:456
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:470
msgid "Cannot delete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:469
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:483
msgid "Choose formats to be deleted"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:487
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:501
msgid "Choose formats not to be deleted"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:507
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:521
msgid "Cannot delete books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:508
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:522
msgid "No device is connected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:518
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:532
msgid "Main memory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:519
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:533
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:430
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:439
msgid "Storage Card A"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:520
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:534
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:432
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:441
msgid "Storage Card B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:525
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:539
msgid "No books to delete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:526
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:540
msgid "None of the selected books are on the device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:543
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:557
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:612
msgid "Deleting books from device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:564
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:578
msgid "The selected books will be permanently deleted and the files removed from your computer. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:583
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:597
msgid "The selected books will be permanently deleted from your device. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:622
msgid "Cannot download metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:624
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:638
msgid "social metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:640
msgid "covers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:626
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:640
msgid "metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:628
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:642
msgid "Downloading %s for %d book(s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:652
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:666
msgid "Failed to download some metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:653
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:667
msgid "Failed to download metadata for the following:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:656
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:670
msgid "Failed to download metadata:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:657
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:671
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:602
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:962
@@ -2660,127 +2677,136 @@ msgstr ""
msgid "Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:667
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:704
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:681
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:718
msgid "Cannot edit metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:725
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:728
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:739
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:742
msgid "Cannot merge books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:729
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:743
msgid "At least two books must be selected for merging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:733
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:747
msgid "All book formats and metadata from the selected books will be added to the first selected book.
The second and subsequently selected books will not be deleted or changed.
Please confirm you want to proceed."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:744
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:758
msgid "All book formats and metadata from the selected books will be merged into the first selected book.
After merger the second and subsequently selected books will be deleted.
All book formats of the first selected book will be kept and any duplicate formats in the second and subsequently selected books will be permanently deleted from your computer.
Are you sure you want to proceed?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:756
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:770
msgid "You are about to merge more than 5 books. Are you sure you want to proceed?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:910
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:924
msgid "Cannot save to disk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:913
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:927
msgid "Choose destination directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:946
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:933
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:566
+msgid "Not allowed"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:934
+msgid "You are tying to save files into the calibre library. This can cause corruption of your library. Save to disk is meant to export files from your calibre library elsewhere."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:968
msgid "Error while saving"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:947
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:969
msgid "There was an error while saving."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:954
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:955
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:976
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:977
msgid "Could not save some books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:956
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:978
msgid "Click the show details button to see which ones."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:977
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:999
msgid "No books selected to generate catalog for"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:994
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1016
msgid "Generating %s catalog..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:999
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1021
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:264
msgid "No books found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1000
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1022
msgid ""
"No books to catalog\n"
"Check exclude tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1010
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1032
msgid "Catalog generated."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1013
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1035
msgid "Export Catalog Directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1014
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1036
msgid "Select destination for %s.%s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1030
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1052
msgid "Fetching news from "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1044
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1066
msgid " fetched."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1093
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1115
msgid "Cannot convert"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1122
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1144
msgid "Starting conversion of %d book(s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1238
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1299
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1260
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1321
msgid "Cannot view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1244
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1266
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
msgid "Choose the format to view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1252
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1274
msgid "Multiple Books Selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1253
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1275
msgid "You are attempting to open %d books. Opening too many books at once can be slow and have a negative effect on the responsiveness of your computer. Once started the process cannot be stopped until complete. Do you wish to continue?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1262
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1284
msgid "Cannot open folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1300
+#: /home/kovid/work/calibre/src/calibre/gui2/actions.py:1322
msgid "%s has no available formats."
msgstr ""
@@ -2872,7 +2898,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:21
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:57
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:45
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:41
@@ -2927,14 +2953,14 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:614
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:404
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:156
@@ -3590,38 +3616,38 @@ msgid "Set the metadata. The output file will contain as much of this metadata a
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:164
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:111
msgid "Choose cover for "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:171
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:114
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:118
msgid "Cannot read"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:119
msgid "You do not have permission to read the file: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:127
msgid "Error reading file"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128
msgid "
There was an error reading from file:
"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136
msgid " is not a valid picture"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401
msgid "Book Cover"
msgstr ""
@@ -3630,28 +3656,28 @@ msgid "Use cover from &source file"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402
msgid "Change &cover image:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403
msgid "Browse for an image to use as the cover of this book."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362
msgid "&Title: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363
msgid "Change the title of this book"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366
msgid "&Author(s): "
msgstr ""
@@ -3665,24 +3691,24 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:167
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
msgid "&Publisher: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376
msgid "Ta&gs: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:169
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377
msgid "Tags categorize the book. This is particularly useful while searching.
They can be any words or phrases, separated by commas."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:174
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380
msgid "&Series:"
msgstr ""
@@ -3690,13 +3716,13 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:175
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:176
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382
msgid "List of known series. You can add new series."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387
msgid "Book "
msgstr ""
@@ -4507,6 +4533,14 @@ msgstr ""
msgid "The folder %s is not empty. Please choose an empty folder"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80
+msgid "No location"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:80
+msgid "No location selected"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:66
msgid "Choose your calibre library"
msgstr ""
@@ -5246,7 +5280,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:889
-#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:542
+#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:549
msgid "Date"
msgstr ""
@@ -5596,19 +5630,19 @@ msgid "Author s&ort: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:161
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368
msgid "Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:162
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371
msgid "&Rating:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:163
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:164
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373
msgid "Rating of this book. 0-5 stars"
msgstr ""
@@ -5617,7 +5651,7 @@ msgid "No change"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:166
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374
msgid " stars"
msgstr ""
@@ -5627,8 +5661,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:171
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379
msgid "Open Tag Editor"
msgstr ""
@@ -5668,213 +5702,235 @@ msgid "Remove &stored conversion settings for the selected books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:188
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410
msgid "&Basic metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:189
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:404
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:411
msgid "&Custom metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:90
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:94
msgid "Last modified: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:131
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:135
msgid "Not a valid picture"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:144
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:150
+msgid "Specify title and author"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151
+msgid "You must specify a title and author before generating a cover"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:163
msgid "Choose formats for "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:194
msgid "No permission"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:176
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195
msgid "You do not have permission to read the following files:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:203
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:223
msgid "No format selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:215
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:234
msgid "Could not read metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:235
msgid "Could not read metadata from %s format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:264
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:270
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:283
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289
msgid "Could not read cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:284
msgid "Could not read cover from %s format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:271
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290
msgid "The cover in the %s format is invalid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:308
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:327
msgid "Abort the editing of all remaining books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:445
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:450
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:465
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:470
msgid "This ISBN number is valid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:453
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:473
msgid "This ISBN number is invalid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:532
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:552
msgid "Cannot use tag editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:533
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553
msgid "The tags editor cannot be used if you have modified the tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:573
msgid "Downloading cover..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:565
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:570
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:576
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:585
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:590
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:596
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:601
msgid "Cannot fetch cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:566
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:577
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:586
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:602
msgid "Could not fetch cover.
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:567
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:587
msgid "The download timed out."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:591
msgid "Could not find cover for this book. Try specifying the ISBN first."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:583
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:603
+msgid "For the error message from each cover source, click Show details below."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:610
msgid "Bad cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:584
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611
msgid "The cover is not a valid picture"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:617
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:644
msgid "There were errors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:618
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645
msgid "There were errors downloading social metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:647
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:674
msgid "Cannot fetch metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:648
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675
msgid "You must specify at least one of ISBN, Title, Authors or Publisher"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:723
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:750
msgid "Permission denied"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:724
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:751
msgid "Could not open %s. Is it being used by another program?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360
msgid "Edit Meta Information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361
msgid "Meta information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364
msgid "Swap the author and title"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367
msgid "Author S&ort: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369
msgid "Automatically create the author sort entry based on the current author entry"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383
msgid "Remove unused series (Series that have no books)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385
msgid "IS&BN:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386
msgid "Publishe&d:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389
msgid "dd MMM yyyy"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390
msgid "&Date:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391
msgid "&Comments"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392
msgid "&Fetch metadata from server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393
msgid "Available Formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394
msgid "Add a new format for this book to the database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396
msgid "Remove the selected formats for this book from the database."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398
msgid "Set the cover for the book from the selected format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400
msgid "Update metadata from the metadata in the selected format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405
msgid "Reset cover to default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407
msgid "Download &cover"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408
+msgid "Generate a default cover based on the title and author"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409
+msgid "&Generate cover"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56
msgid "Password needed"
msgstr ""
@@ -7091,10 +7147,6 @@ msgstr ""
msgid "Restore default layout"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:566
-msgid "Not allowed"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:567
msgid "Dropping onto a device is not supported. First add the book to the calibre library."
msgstr ""
@@ -7190,7 +7242,7 @@ msgid "Do not check for updates"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:58
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:598
msgid "Calibre Library"
msgstr ""
@@ -7301,11 +7353,11 @@ msgstr ""
msgid "ERROR: Unhandled exception"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:89
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:93
msgid "Book has neither title nor ISBN"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:115
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:119
msgid "No matches found for this book"
msgstr ""
@@ -8111,50 +8163,50 @@ msgstr ""
msgid "Hide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:367
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:370
msgid "If you use the WordPlayer e-book app on your Android phone, you can access your calibre book collection directly on the device. To do this you have to turn on the content server."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:371
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:374
msgid "Remember to leave calibre running as the server only runs as long as calibre is running."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:373
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:376
msgid "You have to add the URL http://myhostname:8080 as your calibre library in WordPlayer. Here myhostname should be the fully qualified hostname or the IP address of the computer calibre is running on."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:450
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:453
msgid "Moving library..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:466
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:467
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:469
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:470
msgid "Failed to move library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:521
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:524
msgid "Invalid database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:522
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:525
msgid "
An invalid library already exists at %s, delete it before trying to move the existing library.
Error: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:533
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:536
msgid "Could not move library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:587
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:590
msgid "Select location for books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:665
msgid "welcome wizard"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:48
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:49
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:46
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:42
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:42
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:50
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:42
@@ -8162,7 +8214,7 @@ msgid "Welcome to calibre"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:50
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:47
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:43
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:43
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:51
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:43
@@ -8181,15 +8233,15 @@ msgstr ""
msgid "&Devices"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:44
msgid "