diff --git a/Changelog.yaml b/Changelog.yaml
index 887ac4e05d..bf3f7c907c 100644
--- a/Changelog.yaml
+++ b/Changelog.yaml
@@ -251,8 +251,8 @@
- title: Techcrunch and Pecat
author: Darko Miletic
- - title: Vio Mundo, IDG Now and Tojolaco
- author: Diniz Bortoletto
+ - title: "Vio Mundo, IDG Now! and Tojolaco"
+ author: Diniz Bortolotto
- title: Geek and Poke, Automatiseringgids IT
author: DrMerry
diff --git a/recipes/escrevinhador.recipe b/recipes/escrevinhador.recipe
new file mode 100644
index 0000000000..0003b798c6
--- /dev/null
+++ b/recipes/escrevinhador.recipe
@@ -0,0 +1,28 @@
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Escrevinhador(BasicNewsRecipe):
+ title = 'Blog Escrevinhador'
+ __author__ = 'Diniz Bortolotto'
+ description = 'Posts do Blog Escrevinhador'
+ publisher = 'Rodrigo Viana'
+ oldest_article = 5
+ max_articles_per_feed = 20
+ category = 'news, politics, Brazil'
+ language = 'pt_BR'
+ publication_type = 'news and politics portal'
+ use_embedded_content = False
+ no_stylesheets = True
+ remove_javascript = True
+
+ feeds = [(u'Blog Escrevinhador', u'http://www.rodrigovianna.com.br/feed')]
+
+ reverse_article_order = True
+
+ remove_tags_after = [dict(name='div', attrs={'class':'text'})]
+
+ remove_tags = [
+ dict(id='header'),
+ dict(name='p', attrs={'class':'tags'}),
+ dict(name='div', attrs={'class':'sociable'})
+ ]
+
diff --git a/resources/images/mimetypes/xps.png b/resources/images/mimetypes/xps.png
new file mode 100755
index 0000000000..7a7877d509
Binary files /dev/null and b/resources/images/mimetypes/xps.png differ
diff --git a/src/calibre/devices/folder_device/driver.py b/src/calibre/devices/folder_device/driver.py
index c08448051d..f9a3a1508c 100644
--- a/src/calibre/devices/folder_device/driver.py
+++ b/src/calibre/devices/folder_device/driver.py
@@ -6,6 +6,7 @@ Created on 15 May 2010
import os
from calibre.devices.usbms.driver import USBMS, BookList
+from calibre.ebooks import BOOK_EXTENSIONS
# This class is added to the standard device plugin chain, so that it can
# be configured. It has invalid vendor_id etc, so it will never match a
@@ -16,8 +17,8 @@ class FOLDER_DEVICE_FOR_CONFIG(USBMS):
description = _('Use an arbitrary folder as a device.')
author = 'John Schember/Charles Haley'
supported_platforms = ['windows', 'osx', 'linux']
- FORMATS = ['epub', 'fb2', 'mobi', 'azw', 'lrf', 'tcr', 'pmlz', 'lit',
- 'rtf', 'rb', 'pdf', 'oeb', 'txt', 'pdb', 'prc']
+ FORMATS = list(BOOK_EXTENSIONS)
+
VENDOR_ID = [0xffff]
PRODUCT_ID = [0xffff]
BCD = [0xffff]
diff --git a/src/calibre/ebooks/metadata/meta.py b/src/calibre/ebooks/metadata/meta.py
index b0c43a8182..3f3cc3e142 100644
--- a/src/calibre/ebooks/metadata/meta.py
+++ b/src/calibre/ebooks/metadata/meta.py
@@ -67,10 +67,6 @@ def _metadata_from_formats(formats, force_read_metadata=False, pattern=None):
return mi
-def is_recipe(filename):
- return filename.startswith('calibre') and \
- filename.rpartition('.')[0].endswith('_recipe_out')
-
def get_metadata(stream, stream_type='lrf', use_libprs_metadata=False,
force_read_metadata=False, pattern=None):
pos = 0
@@ -106,7 +102,7 @@ def _get_metadata(stream, stream_type, use_libprs_metadata,
mi = MetaInformation(None, None)
name = os.path.basename(getattr(stream, 'name', ''))
base = metadata_from_filename(name, pat=pattern)
- if force_read_metadata or is_recipe(name) or prefs['read_file_metadata']:
+ if force_read_metadata or prefs['read_file_metadata']:
mi = get_file_type_metadata(stream, stream_type)
if base.title == os.path.splitext(name)[0] and \
base.is_null('authors') and base.is_null('isbn'):
diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py
index 22c9cc149f..539b768b1d 100644
--- a/src/calibre/gui2/__init__.py
+++ b/src/calibre/gui2/__init__.py
@@ -425,6 +425,8 @@ class FileIconProvider(QFileIconProvider):
'snb' : 'snb',
'djv' : 'djvu',
'djvu' : 'djvu',
+ 'xps' : 'xps',
+ 'oxps' : 'xps',
}
def __init__(self):
diff --git a/src/calibre/gui2/custom_column_widgets.py b/src/calibre/gui2/custom_column_widgets.py
index 836c8eaf43..9e4bd41bbd 100644
--- a/src/calibre/gui2/custom_column_widgets.py
+++ b/src/calibre/gui2/custom_column_widgets.py
@@ -87,7 +87,7 @@ class Int(Base):
self.widgets = [QLabel('&'+self.col_metadata['name']+':', parent),
QSpinBox(parent)]
w = self.widgets[1]
- w.setRange(-100, 100000000)
+ w.setRange(-1000000, 100000000)
w.setSpecialValueText(_('Undefined'))
w.setSingleStep(1)
@@ -110,7 +110,7 @@ class Float(Int):
self.widgets = [QLabel('&'+self.col_metadata['name']+':', parent),
QDoubleSpinBox(parent)]
w = self.widgets[1]
- w.setRange(-100., float(100000000))
+ w.setRange(-1000000., float(100000000))
w.setDecimals(2)
w.setSpecialValueText(_('Undefined'))
w.setSingleStep(1)
@@ -300,7 +300,6 @@ class Series(Base):
w = QDoubleSpinBox(parent)
w.setRange(-100., float(100000000))
w.setDecimals(2)
- w.setSpecialValueText(_('Undefined'))
w.setSingleStep(1)
self.idx_widget=w
self.widgets.append(w)
@@ -605,7 +604,7 @@ class BulkInt(BulkBase):
def setup_ui(self, parent):
self.make_widgets(parent, QSpinBox)
- self.main_widget.setRange(-100, 100000000)
+ self.main_widget.setRange(-1000000, 100000000)
self.main_widget.setSpecialValueText(_('Undefined'))
self.main_widget.setSingleStep(1)
@@ -627,7 +626,7 @@ class BulkFloat(BulkInt):
def setup_ui(self, parent):
self.make_widgets(parent, QDoubleSpinBox)
- self.main_widget.setRange(-100., float(100000000))
+ self.main_widget.setRange(-1000000., float(100000000))
self.main_widget.setDecimals(2)
self.main_widget.setSpecialValueText(_('Undefined'))
self.main_widget.setSingleStep(1)
diff --git a/src/calibre/gui2/library/delegates.py b/src/calibre/gui2/library/delegates.py
index a9c71e526b..c4ea05d38c 100644
--- a/src/calibre/gui2/library/delegates.py
+++ b/src/calibre/gui2/library/delegates.py
@@ -300,13 +300,13 @@ class CcNumberDelegate(QStyledItemDelegate): # {{{
col = m.column_map[index.column()]
if m.custom_columns[col]['datatype'] == 'int':
editor = QSpinBox(parent)
- editor.setRange(-100, 100000000)
+ editor.setRange(-1000000, 100000000)
editor.setSpecialValueText(_('Undefined'))
editor.setSingleStep(1)
else:
editor = QDoubleSpinBox(parent)
editor.setSpecialValueText(_('Undefined'))
- editor.setRange(-100., 100000000)
+ editor.setRange(-1000000., 100000000)
editor.setDecimals(2)
return editor
diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py
index 0937f0bb12..4d11784aea 100644
--- a/src/calibre/gui2/library/models.py
+++ b/src/calibre/gui2/library/models.py
@@ -62,7 +62,7 @@ class BooksModel(QAbstractTableModel): # {{{
'rating' : _('Rating'),
'publisher' : _("Publisher"),
'tags' : _("Tags"),
- 'series' : _("Series"),
+ 'series' : ngettext("Series", 'Series', 1),
'last_modified' : _('Modified'),
}
diff --git a/src/calibre/gui2/preferences/save_template.py b/src/calibre/gui2/preferences/save_template.py
index 174c8dfa42..627c4c7fa9 100644
--- a/src/calibre/gui2/preferences/save_template.py
+++ b/src/calibre/gui2/preferences/save_template.py
@@ -12,6 +12,7 @@ from calibre.gui2 import error_dialog, question_dialog
from calibre.gui2.preferences.save_template_ui import Ui_Form
from calibre.library.save_to_disk import FORMAT_ARG_DESCS, preprocess_template
from calibre.utils.formatter import validation_formatter
+from calibre.gui2.dialogs.template_dialog import TemplateDialog
class SaveTemplate(QWidget, Ui_Form):
@@ -40,6 +41,14 @@ class SaveTemplate(QWidget, Ui_Form):
self.opt_template.editTextChanged.connect(self.changed)
self.opt_template.currentIndexChanged.connect(self.changed)
self.option_name = name
+ self.open_editor.clicked.connect(self.do_open_editor)
+
+ def do_open_editor(self):
+ t = TemplateDialog(self, self.opt_template.text())
+ t.setWindowTitle(_('Edit template'))
+ if t.exec_():
+ self.opt_template.set_value(t.rule[1])
+
def changed(self, *args):
self.changed_signal.emit()
diff --git a/src/calibre/gui2/preferences/save_template.ui b/src/calibre/gui2/preferences/save_template.ui
index 0d7422abcf..98515e8377 100644
--- a/src/calibre/gui2/preferences/save_template.ui
+++ b/src/calibre/gui2/preferences/save_template.ui
@@ -20,7 +20,7 @@
"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:20
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:37
msgid "Create a catalog of the books in your calibre library"
msgstr ""
@@ -3960,7 +3965,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:408
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:413
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:178
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:99
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:886
msgid "Not allowed"
msgstr ""
@@ -3981,25 +3986,25 @@ msgstr ""
msgid "Convert books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:29
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:30
msgid "Convert individually"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:33
msgid "Bulk convert"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:562
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:569
msgid "Cannot convert"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:115
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117
#, python-format
msgid "Starting conversion of %d book(s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177
msgid "Empty output file, probably the conversion process crashed"
msgstr ""
@@ -4091,88 +4096,88 @@ msgstr ""
msgid "Remove selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:94
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:95
msgid "Remove files of a specific format from selected books.."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:97
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:98
msgid "Remove all formats from selected books, except..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:100
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:101
msgid "Remove all formats from selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:103
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:104
msgid "Remove covers from selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:106
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:108
msgid "Remove matching books from device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:131
msgid "Cannot delete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:142
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:144
msgid "Choose formats to be deleted"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:162
msgid "Choose formats not to be deleted.
Note that this will never remove all formats from a book."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:188
msgid "All formats for the selected books will be deleted from your library.
The book metadata will be kept. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:208
msgid "Cannot delete books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:209
msgid "No device is connected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:217
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:219
msgid "Main memory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:218
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:220
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:516
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:525
msgid "Storage Card A"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:221
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:518
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:527
msgid "Storage Card B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:226
msgid "No books to delete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:227
msgid "None of the selected books are on the device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:242
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:333
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:244
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:335
msgid "Deleting books from device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:288
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:290
msgid "Some of the selected books are on the attached device. Where do you want the selected files deleted from?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:300
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:302
msgid "The selected books will be permanently deleted and the files removed from your calibre library. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:325
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:327
msgid "The selected books will be permanently deleted from your device. Are you sure?"
msgstr ""
@@ -4189,49 +4194,49 @@ msgid "Connect to Bambook"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:56
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:73
msgid "Start Content Server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:66
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:75
msgid "Stop Content Server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:77
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:105
msgid "Email to"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:90
msgid "Email to and delete from library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:90
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:99
msgid "(delete from library)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:105
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:114
msgid "Setup email based sharing of books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:123
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:132
msgid "D"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:123
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:132
msgid "Send to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:141
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:150
msgid "Connect/share"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:178
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:187
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:79
msgid "Stopping"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:188
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:80
msgid "Stopping server, this could take upto a minute, please wait..."
msgstr ""
@@ -4252,131 +4257,131 @@ msgstr ""
msgid "Edit metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:30
-msgid "Merge book records"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:31
-msgid "M"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32
msgid "Edit metadata individually"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35
msgid "Edit metadata in bulk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38
msgid "Download metadata and covers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45
msgid "Merge into first selected book - delete others"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:47
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48
msgid "Merge into first selected book - keep others"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:51
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52
msgid "Merge only formats into first selected book - delete others"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57
+msgid "Merge book records"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58
+msgid "M"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73
msgid "Cannot download metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:83
msgid "Failed to download metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720
msgid "Download failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:89
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90
#, python-format
msgid "Failed to download metadata or covers for any of the %d book(s)."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:92
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:93
msgid "Metadata download completed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:95
#, python-format
msgid "Finished downloading metadata for %d book(s). Proceed with updating the metadata in your library?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102
#, python-format
msgid "Could not download metadata and/or covers for %d of the books. Click \"Show details\" to see which books."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:108
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:109
msgid "Download complete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:108
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:109
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:781
msgid "Download log"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:138
msgid "Some books changed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:138
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139
msgid "The metadata for some books in your library has changed since you started the download. If you proceed, some of those changes may be overwritten. Click \"Show details\" to see the list of changed books. Do you want to proceed?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:156
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:157
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:221
msgid "Cannot edit metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:257
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:258
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:261
msgid "Cannot merge books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:261
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262
msgid "At least two books must be selected for merging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:264
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:265
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/edit_metadata.py:273
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:274
#, python-format
msgid "Book formats and metadata from the selected books will be added to the first selected book (%s). ISBN will not be merged.
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/edit_metadata.py:285
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:286
#, python-format
msgid "Book formats from the selected books will be merged into the first selected book (%s). Metadata in the first selected book will not be changed. Author, Title, ISBN and all other metadata will not be merged.
After merger the second and subsequently selected books, with any metadata they have 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 calibre library.
Are you sure you want to proceed?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:301
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:302
#, python-format
msgid "Book formats and metadata from the selected books will be merged into the first selected book (%s). ISBN will not be merged.
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 calibre library.
Are you sure you want to proceed?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:471
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:472
msgid "Applying changed metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:544
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:545
msgid "Some failures"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:545
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546
msgid "Failed to apply updated metadata for some books in your library. Click \"Show Details\" to see details."
msgstr ""
@@ -4420,7 +4425,7 @@ msgid "Move to next highlighted match"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/next_match.py:13
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:415
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:421
msgid "N"
msgstr ""
@@ -4453,32 +4458,32 @@ msgstr ""
msgid "Plugin Updater"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:18
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:20
msgid "Ctrl+P"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:20
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:22
msgid "Change calibre behavior"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:26
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:29
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:208
msgid "Run welcome wizard"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:29
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:31
msgid "Get plugins to enhance calibre"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:35
msgid "Restart in debug mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:52
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:53
msgid "Cannot configure while there are running jobs."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:57
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:58
msgid "Cannot configure before calibre is restarted."
msgstr ""
@@ -4503,48 +4508,48 @@ msgstr ""
msgid "Save to disk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:47
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:48
msgid "Save to disk in a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:49
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:67
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:68
#, python-format
msgid "Save only %s format to disk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:53
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:70
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:71
#, python-format
msgid "Save only %s format to disk in a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:89
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:90
msgid "Cannot save to disk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:92
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:93
msgid "Choose destination directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101
msgid "You are trying 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/save_to_disk.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:132
msgid "Error while saving"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:135
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:133
msgid "There was an error while saving."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:142
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:143
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:140
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:141
msgid "Could not save some books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:144
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:142
msgid "Click the show details button to see which ones."
msgstr ""
@@ -4629,53 +4634,58 @@ msgstr ""
msgid "Search for ebooks"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:28
+msgid "author"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:28
+msgid "title"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:29
+msgid "book"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:32
-msgid "Search for this author"
+#, python-format
+msgid "Search for this %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:33
-msgid "Search for this title"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:34
-msgid "Search for this book"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:36
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:35
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:135
#: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:110
msgid "Stores"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:45
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:38
#: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_dialog.py:18
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:285
msgid "Choose stores"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:84
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:103
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:112
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:106
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:115
msgid "Cannot search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:131
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:134
msgid "Calibre helps you find the ebooks you want by searching the websites of various commercial and public domain book sources for you."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:135
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:138
msgid "Using the integrated search you can easily find which store has the book you are looking for, at the best price. You also get DRM status and other useful information."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:139
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:142
msgid "All transactions (paid or otherwise) are handled between you and the book seller. Calibre is not part of this process and any issues related to a purchase should be directed to the website you are buying from. Be sure to double check that any books you get will work with your e-book reader, especially if the book you are buying has DRM."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:152
msgid "Show this message again"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:150
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:153
msgid "About Get Books"
msgstr ""
@@ -4701,15 +4711,15 @@ msgstr ""
msgid "No ePub available. First convert the book to ePub."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:36
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:37
msgid "V"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:36
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:37
msgid "View"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:46
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:48
msgid "View specific format"
msgstr ""
@@ -4717,53 +4727,53 @@ msgstr ""
msgid "Read a random book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:55
msgid "Clear recently viewed list"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:139
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:219
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:226
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:217
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:224
msgid "Cannot view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:152
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:150
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:164
msgid "Format unavailable"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:151
msgid "Selected books have no formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:155
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128
msgid "Choose the format to view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:165
#, python-format
msgid "Not all the selected books were available in the %s format. You should convert them first."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:174
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:172
msgid "Multiple Books Selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:173
#, python-format
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/view.py:184
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:182
msgid "Cannot open folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:218
msgid "This book no longer exists in your library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:225
#, python-format
msgid "%s has no available formats."
msgstr ""
@@ -5117,7 +5127,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:65
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:113
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:105
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:46
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:56
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:67
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:109
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:68
@@ -6663,11 +6673,10 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:115
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:152
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:186
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:303
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:568
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:609
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:632
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:683
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:567
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:631
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:682
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:307
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:312
#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:128
@@ -6680,23 +6689,23 @@ msgid "Undefined"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:129
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:640
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:639
msgid "star(s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:130
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:641
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:640
msgid "Unrated"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:173
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:670
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:669
#, python-format
msgid "Set '%s' to today"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:175
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:672
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:671
#, python-format
msgid "Clear '%s'"
msgstr ""
@@ -6705,39 +6714,39 @@ msgstr ""
msgid " index:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:368
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:367
msgid "The enumeration \"{0}\" contains an invalid value that will be set to the default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:523
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:522
msgid "Apply changes"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:716
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:715
msgid "Remove series"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:719
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:718
msgid "Automatically number books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:722
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:721
msgid "Force numbers to start with "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:794
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:793
msgid "The enumeration \"{0}\" contains invalid values that will not appear in the list"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:838
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:837
msgid "Remove all tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:858
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:857
msgid "tags to add"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:865
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:864
msgid "tags to remove"
msgstr ""
@@ -6932,16 +6941,16 @@ msgid "You have enabled the {0} formats for your {1}. The {1} may not sup
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:148
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:464
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:470
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:275
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:61
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:70
msgid "Invalid template"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:149
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:465
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:276
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:62
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:71
#, python-format
msgid "The template %s is invalid:"
msgstr ""
@@ -9113,7 +9122,8 @@ msgid "Open Template Editor"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_line_editor.py:41
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:451
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:457
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:48
msgid "Edit template"
msgstr ""
@@ -9566,9 +9576,6 @@ msgid "Book Details"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:221
-msgid "Alt+D"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231
msgid "Shift+Alt+D"
msgstr ""
@@ -9677,35 +9684,36 @@ msgstr ""
msgid "available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:181
-msgid "Shift+Ctrl+F"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:184
+#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:189
msgid "Advanced search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:189
+#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:184
+msgid "Shift+Ctrl+F"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:194
msgid "
Search the list of books by title, author, publisher, tags, comments, etc.
Words separated by spaces are ANDed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:195
+#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:200
msgid "&Go!"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:201
+#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:206
msgid "Do Quick Search (you can also press the Enter key)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:212
msgid "Reset Quick Search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:228
msgid "Copy current search text (instead of search name)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:415
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:421
msgid "Y"
msgstr ""
@@ -11878,34 +11886,38 @@ msgstr ""
msgid "&Load plugin from file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:33
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:34
msgid "Any custom field"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:34
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:35
msgid "The lookup name of any custom field (these names begin with \"#\")."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:57
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:66
msgid "Constant template"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:58
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:67
msgid "The template contains no {fields}, so all books will have the same name. Is this OK?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:47
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:57
msgid "Save &template"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:48
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:58
msgid "By adjusting the template below, you can control what folders the files are saved in and what filenames they are given. You can use the / character to indicate sub-folders. Available metadata variables are described below. If a particular book does not have some metadata, the variable will be replaced by the empty string."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:49
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:59
msgid "Available variables:"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:60
+msgid "Template Editor"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:68
msgid "Here you can control how calibre will save your books when you click the Save to Disk button:"
msgstr ""
@@ -12082,7 +12094,7 @@ msgid "Here you can control how calibre will save your books when you click the
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:70
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:424
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:431
msgid "Failed to start content server"
msgstr ""
@@ -12434,35 +12446,39 @@ msgstr ""
msgid "Search (For Advanced Search click the button to the left)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:390
+#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:383
+msgid "Start search"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:393
msgid "Enable or disable search highlighting."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:445
+#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:448
msgid "Saved Searches"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:447
+#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:450
msgid "Choose saved search or enter name for new saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:453
+#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:456
msgid "Save current search under the name shown in the box. Press and hold for a pop-up options menu."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:458
+#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:461
msgid "Create saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:462
+#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:465
msgid "Delete saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:466
+#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:469
msgid "Manage saved searches"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:476
+#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:479
msgid "*Current search"
msgstr ""
@@ -13229,55 +13245,63 @@ msgstr ""
msgid "The following books have already been converted to %s format. Do you wish to reconvert them?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:196
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:198
msgid "&Donate to support calibre"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:232
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:234
msgid "&Restore"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:237
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239
msgid "&Eject connected device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:347
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:243
+msgid "Quit calibre"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:256
+msgid "Clear the current search"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:354
msgid "Debug mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:348
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:355
#, python-format
msgid "You have started calibre in debug mode. After you quit calibre, the debug log will be available in the file: %s
The log will be displayed automatically."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:550
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:557
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:573
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:580
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:589
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:596
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:630
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:626
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:633
msgid ""
" is communicating with the device!
\n"
" Quitting may cause corruption on the device.
\n"
" Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:630
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:637
msgid "Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:698
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:705
msgid "will keep running in the system tray. To close it, choose Quit in the context menu of the system tray."
msgstr ""
@@ -14142,7 +14166,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/caches.py:568
#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:219
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:222
msgid "yes"
msgstr ""
@@ -14150,7 +14174,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/caches.py:567
#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:219
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:222
msgid "no"
msgstr ""
@@ -14980,17 +15004,17 @@ msgstr ""
msgid "%(tt)sAverage rating is %(rating)3.1f"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:3332
#, python-format
msgid "
Migrating old database to ebook library in %s