'
+__docformat__ = 'restructuredtext en'
+
+from PyQt4.Qt import QDialog, QApplication
+
+from calibre.gui2.dialogs.add_from_isbn_ui import Ui_Dialog
+from calibre.ebooks.metadata import check_isbn
+
+class AddFromISBN(QDialog, Ui_Dialog):
+
+ def __init__(self, parent=None):
+ QDialog.__init__(self, parent)
+ self.setupUi(self)
+
+ self.isbns = []
+ self.paste_button.clicked.connect(self.paste)
+
+ def paste(self, *args):
+ app = QApplication.instance()
+ c = app.clipboard()
+ txt = unicode(c.text()).strip()
+ if txt:
+ old = unicode(self.isbn_box.toPlainText()).strip()
+ new = old + '\n' + txt
+ self.isbn_box.setPlainText(new)
+
+ def accept(self, *args):
+ for line in unicode(self.isbn_box.toPlainText()).strip().splitlines():
+ if line:
+ isbn = check_isbn(line)
+ if isbn is not None:
+ isbn = isbn.upper()
+ if isbn not in self.isbns:
+ self.isbns.append(isbn)
+ QDialog.accept(self, *args)
+
diff --git a/src/calibre/gui2/dialogs/add_from_isbn.ui b/src/calibre/gui2/dialogs/add_from_isbn.ui
new file mode 100644
index 0000000000..e4882f7d18
--- /dev/null
+++ b/src/calibre/gui2/dialogs/add_from_isbn.ui
@@ -0,0 +1,90 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 678
+ 430
+
+
+
+ Add books by ISBN
+
+
+
+ :/images/add_book.svg:/images/add_book.svg
+
+
+ -
+
+
+ -
+
+
+ <p>Enter a list of ISBNs in the box to the left, one per line. calibre will automatically create entries for books based on the ISBN and download metadata and covers for them.<p>Any invalid ISBNs in the list will be ignored.
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+ -
+
+
+ &Paste from clipboard
+
+
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py
index d13b938902..8a919c59f5 100644
--- a/src/calibre/gui2/layout.py
+++ b/src/calibre/gui2/layout.py
@@ -538,8 +538,10 @@ class MainWindowMixin(object):
self.add_menu.addAction(_('Add books from directories, including '
'sub directories (Multiple books per directory, assumes every '
'ebook file is a different book)'), self.add_recursive_multiple)
+ self.add_menu.addSeparator()
self.add_menu.addAction(_('Add Empty book. (Book entry with no '
'formats)'), self.add_empty)
+ self.add_menu.addAction(_('Add from ISBN'), self.add_from_isbn)
self.action_add.setMenu(self.add_menu)
self.action_add.triggered.connect(self.add_books)
self.action_del.triggered.connect(self.delete_books)
diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py
index cb6791bb3b..562292c2f6 100644
--- a/src/calibre/gui2/search_box.py
+++ b/src/calibre/gui2/search_box.py
@@ -146,7 +146,8 @@ class SearchBox2(QComboBox):
self._in_a_search = False
if event.key() in (Qt.Key_Return, Qt.Key_Enter):
self.do_search()
- self.timer.start(1500)
+ if self.as_you_type:
+ self.timer.start(1500)
def mouse_released(self, event):
self.normalize_state()
diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py
index 7fe7deee5c..6a259a655f 100644
--- a/src/calibre/library/database2.py
+++ b/src/calibre/library/database2.py
@@ -1673,6 +1673,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
self.data.refresh_ids(self, [id]) # Needed to update format list and size
if notify:
self.notify('add', [id])
+ return id
def get_top_level_move_items(self):
items = set(os.listdir(self.library_path))
diff --git a/src/calibre/libunrar.py b/src/calibre/libunrar.py
index a71fd8718a..2f44dcdf4e 100644
--- a/src/calibre/libunrar.py
+++ b/src/calibre/libunrar.py
@@ -12,7 +12,7 @@ from ctypes import Structure as _Structure, c_char_p, c_uint, c_void_p, POINTER,
from tempfile import NamedTemporaryFile
from StringIO import StringIO
-from calibre import iswindows, load_library, CurrentDir, prints
+from calibre import iswindows, load_library, CurrentDir
from calibre.ptempfile import TemporaryDirectory
_librar_name = 'libunrar'
diff --git a/src/calibre/manual/gui.rst b/src/calibre/manual/gui.rst
index 613eb82559..7ffc77575e 100644
--- a/src/calibre/manual/gui.rst
+++ b/src/calibre/manual/gui.rst
@@ -247,6 +247,7 @@ You can search for the absence or presence of a field using the special "true" a
cover:false will give you all books without a cover
series:true will give you all books that belong to a series
comments:false will give you all books with an empty comment
+ format:false will give you all books with no actual files (empty records)
Yes/no custom columns are searchable. Searching for ``false``, ``empty``, or ``blank`` will find all books
with undefined values in the column. Searching for ``true`` will find all books that do not have undefined
diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot
index 24c5df1d04..9b967343b4 100644
--- a/src/calibre/translations/calibre.pot
+++ b/src/calibre/translations/calibre.pot
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: calibre 0.7.13\n"
-"POT-Creation-Date: 2010-08-09 07:28+MDT\n"
-"PO-Revision-Date: 2010-08-09 07:28+MDT\n"
+"POT-Creation-Date: 2010-08-10 18:33+MDT\n"
+"PO-Revision-Date: 2010-08-10 18:33+MDT\n"
"Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
@@ -102,8 +102,8 @@ msgstr ""
#: /home/kovid/work/trunk/src/calibre/ebooks/rtf/input.py:236
#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:287
#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:294
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:826
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:829
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:826
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:829
#: /home/kovid/work/trunk/src/calibre/gui2/add.py:172
#: /home/kovid/work/trunk/src/calibre/gui2/add.py:179
#: /home/kovid/work/trunk/src/calibre/gui2/convert/__init__.py:22
@@ -440,14 +440,14 @@ msgstr ""
#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:362
#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:921
#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:957
-#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2802
-#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2841
+#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2822
+#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2861
msgid "%d of %d"
msgstr ""
#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:369
#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:962
-#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2847
+#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2867
msgid "finished"
msgstr ""
@@ -472,7 +472,7 @@ msgid ""
"Click 'Show Details' for a list."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2471
+#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2491
#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:817
#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:823
#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:851
@@ -484,7 +484,7 @@ msgstr ""
msgid "News"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2709
+#: /home/kovid/work/trunk/src/calibre/devices/apple/driver.py:2729
msgid "Communicate with iTunes."
msgstr ""
@@ -661,7 +661,7 @@ msgid "Adding books to device metadata listing..."
msgstr ""
#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:366
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:441
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:441
msgid "Not Implemented"
msgstr ""
@@ -2433,380 +2433,380 @@ msgstr ""
msgid "Choose Files"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:67
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:245
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:67
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:245
msgid "Use library only"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:68
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:246
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:68
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:246
msgid "User annotations generated from main library only"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:75
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:623
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:682
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:719
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:740
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:925
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:998
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1116
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:75
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:623
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:682
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:719
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:740
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:925
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:998
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1116
msgid "No books selected"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:76
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:76
msgid "No books selected to fetch annotations from"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:101
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:101
msgid "Merging user annotations into database"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:129
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:129
msgid "%s
Last Page Read: %d (%d%%)"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:135
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:135
msgid "%s
Last Page Read: Location %d (%d%%)"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:154
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:154
msgid "Location %d • %s
%s
"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:163
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:163
msgid "Page %d • %s
"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:168
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:168
msgid "Location %d • %s
"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:291
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:291
msgid "How many empty books?"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:292
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:292
msgid "How many empty books should be added?"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:339
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:390
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:339
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:390
msgid "Uploading books to device."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:350
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:350
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:164
msgid "Books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:351
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:351
msgid "EPUB Books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:352
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:352
msgid "LRF Books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:353
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:353
msgid "HTML Books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:354
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:354
msgid "LIT Books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:355
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:355
msgid "MOBI Books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:356
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:356
msgid "Topaz books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:357
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:357
msgid "Text books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:358
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:358
msgid "PDF Books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:359
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:359
msgid "Comics"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:360
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:360
msgid "Archives"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:364
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:364
msgid "Supported books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:399
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:399
msgid "Merged some books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:400
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:400
msgid "Some duplicates were found and merged into the following existing books:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:409
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:409
msgid "Failed to read metadata"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:410
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:410
msgid "Failed to read metadata from the following"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:429
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:448
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:429
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:448
msgid "Add to library"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:429
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:473
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1260
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1285
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:429
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:473
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1260
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1285
msgid "No book selected"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:442
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:442
msgid "The following books are virtual and cannot be added to the calibre library:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:448
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:448
msgid "No book files found"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:470
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:470
msgid "Cannot delete"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:483
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:483
msgid "Choose formats to be deleted"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:501
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:501
msgid "Choose formats not to be deleted"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:521
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:521
msgid "Cannot delete books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:522
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:522
msgid "No device is connected"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:532
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:532
msgid "Main memory"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:533
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:533
#: /home/kovid/work/trunk/src/calibre/gui2/device.py:436
#: /home/kovid/work/trunk/src/calibre/gui2/device.py:445
msgid "Storage Card A"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:534
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:534
#: /home/kovid/work/trunk/src/calibre/gui2/device.py:438
#: /home/kovid/work/trunk/src/calibre/gui2/device.py:447
msgid "Storage Card B"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:539
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:539
msgid "No books to delete"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:540
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:540
msgid "None of the selected books are on the device"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:557
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:612
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:557
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:612
msgid "Deleting books from device."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:578
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:578
msgid "The selected books will be permanently deleted and the files removed from your computer. Are you sure?"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:597
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:597
msgid "The selected books will be permanently deleted from your device. Are you sure?"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:622
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:622
msgid "Cannot download metadata"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:638
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:638
msgid "social metadata"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:640
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:640
msgid "covers"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:640
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:640
msgid "metadata"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:642
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:642
msgid "Downloading %s for %d book(s)"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:666
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:666
msgid "Failed to download some metadata"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:667
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:667
msgid "Failed to download metadata for the following:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:670
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:670
msgid "Failed to download metadata:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:671
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:671
#: /home/kovid/work/trunk/src/calibre/gui2/device.py:608
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:550
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:962
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:560
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:990
#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:53
msgid "Error"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:681
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:718
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:681
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:718
msgid "Cannot edit metadata"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:739
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:742
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:739
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:742
msgid "Cannot merge books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:743
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:743
msgid "At least two books must be selected for merging"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:747
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.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/trunk/src/calibre/gui2/actions.py:758
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.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/trunk/src/calibre/gui2/actions.py:770
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:770
msgid "You are about to merge more than 5 books. Are you sure you want to proceed?"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:924
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:924
msgid "Cannot save to disk"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:927
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:927
msgid "Choose destination directory"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:933
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:933
#: /home/kovid/work/trunk/src/calibre/gui2/library/views.py:566
msgid "Not allowed"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:934
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:934
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/trunk/src/calibre/gui2/actions.py:968
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:968
msgid "Error while saving"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:969
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:969
msgid "There was an error while saving."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:976
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:977
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:976
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:977
msgid "Could not save some books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:978
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:978
msgid "Click the show details button to see which ones."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:999
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:999
msgid "No books selected to generate catalog for"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1016
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1016
msgid "Generating %s catalog..."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1021
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1021
#: /home/kovid/work/trunk/src/calibre/gui2/add.py:264
msgid "No books found"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1022
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1022
msgid ""
"No books to catalog\n"
"Check exclude tags"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1032
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1032
msgid "Catalog generated."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1035
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1035
msgid "Export Catalog Directory"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1036
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1036
msgid "Select destination for %s.%s"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1052
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1052
msgid "Fetching news from "
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1066
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1066
msgid " fetched."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1115
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1115
msgid "Cannot convert"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1144
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1144
msgid "Starting conversion of %d book(s)"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1260
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1321
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1260
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1321
msgid "Cannot view"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1266
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1266
#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:77
msgid "Choose the format to view"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1274
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1274
msgid "Multiple Books Selected"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1275
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.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/trunk/src/calibre/gui2/actions.py:1284
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1284
msgid "Cannot open folder"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/actions.py:1322
+#: /home/kovid/work/trunk/src/calibre/gui2/actions/__init__.py:1322
msgid "%s has no available formats."
msgstr ""
@@ -2945,14 +2945,14 @@ msgstr ""
#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:79
#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:80
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_library_ui.py:72
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:551
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:552
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:564
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:566
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:568
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:570
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:571
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:599
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:600
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:612
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:614
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:616
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:618
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:619
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:668
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:365
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:370
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:384
@@ -4683,137 +4683,145 @@ msgstr ""
msgid "Never"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:524
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:534
msgid "Done"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:525
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:535
msgid "Confirmation dialogs have all been reset"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:530
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:540
msgid "System port selected"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:531
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:541
msgid "The value %d you have chosen for the content server port is a system port. Your operating system may not allow the server to run on this port. To be safe choose a port number larger than 1024."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:551
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:561
msgid "Failed to install command line tools."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:554
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:564
msgid "Command line tools installed"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:555
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:565
msgid "Command line tools installed in"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:556
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:566
msgid "If you move calibre.app, you have to re-install the command line tools."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:607
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:617
msgid "No valid plugin path"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:608
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:618
msgid "%s is not a valid plugin path"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:611
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:621
msgid "Choose plugin"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:623
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:633
msgid "Plugin cannot be disabled"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:624
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:634
msgid "The plugin: %s cannot be disabled"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:633
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:643
msgid "Plugin not customizable"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:634
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:644
msgid "Plugin: %s does not need customization"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:642
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:652
msgid "Customize"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:680
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:690
msgid "Cannot remove builtin plugin"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:681
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:691
msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:712
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:707
+msgid "Invalid tweaks"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:708
+msgid "The tweaks you entered are invalid, try resetting the tweaks to default and changing them one by one until you find the invalid setting."
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:738
msgid "You must select a column to delete it"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:717
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:743
msgid "The selected column is not a custom column"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:718
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:744
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/confirm_delete_ui.py:48
msgid "Are you sure?"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:719
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:745
msgid "Do you really want to delete column %s and all its data?"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:786
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:812
msgid "Error log:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:793
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:819
msgid "Access log:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:821
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:847
#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:318
msgid "Failed to start content server"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:846
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:872
msgid "Invalid size"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:847
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:873
msgid "The size %s is invalid. must be of the form widthxheight"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:908
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:936
msgid "Must restart"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:909
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:937
msgid "The changes you made require that Calibre be restarted. Please restart as soon as practical."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:943
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:971
msgid "Checking database integrity"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:963
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:991
msgid "Failed to check database integrity"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:968
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:996
msgid "Some inconsistencies found"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:969
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:997
msgid "The following books had formats listed in the database that are not actually available. The entries for the formats have been removed. You should check them manually. This can happen if you manipulate the files in the library folder directly."
msgstr ""
@@ -4928,301 +4936,325 @@ msgstr ""
msgid "Sending to &device"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:536
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:584
#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:474
#: /home/kovid/work/trunk/src/calibre/gui2/layout.py:616
#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:201
msgid "Preferences"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:537
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:585
msgid "Show notification when &new version is available"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:538
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:586
msgid "Download &social metadata (tags/ratings/etc.) by default"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:539
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:587
msgid "&Overwrite author and title by default when fetching metadata"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:540
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:588
msgid "Default network &timeout:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:541
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:589
msgid "Set the default timeout for network fetches (i.e. anytime we go out to the internet to get information)"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:542
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:590
msgid " seconds"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:543
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:591
msgid "Choose &language (requires restart):"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:544
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:592
msgid "Normal"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:545
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:593
msgid "High"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:546
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:594
msgid "Low"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:547
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:595
msgid "Job &priority:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:548
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:596
msgid "Preferred &output format:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:549
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:597
msgid "Reset all disabled &confirmation dialogs"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:550
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:598
msgid "Preferred &input format order:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:553
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:601
msgid "Use &Roman numerals for series number"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:554
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:602
msgid "Enable system &tray icon (needs restart)"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:555
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:603
msgid "Show ¬ifications in system tray"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:556
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:604
msgid "Show &splash screen at startup"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:557
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:605
msgid "Show cover &browser in a separate window (needs restart)"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:558
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:606
msgid "Show &average ratings in the tags browser"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:559
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:607
msgid "Search as you type"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:560
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:608
msgid "Automatically send downloaded &news to ebook reader"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:561
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:609
msgid "&Delete news from library when it is automatically sent to reader"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:562
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:610
msgid "&Number of covers to show in browse mode (needs restart):"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:563
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:611
msgid "Select visible &columns in library view"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:565
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:613
msgid "Remove a user-defined column"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:567
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:615
msgid "Add a user-defined column"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:569
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:617
msgid "Edit settings of a user-defined column"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:572
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:620
msgid "Use internal &viewer for:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:573
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:621
msgid "User Interface &layout (needs restart):"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:574
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:622
msgid "Disable all animations. Useful if you have a slow/old computer."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:575
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:623
msgid "Disable &animations"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:576
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:624
msgid "Show &donate button (restart)"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:577
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:625
msgid "&Toolbar"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:578
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:626
msgid "&Icon size:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:579
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:627
msgid "Show &text under icons:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:580
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:628
msgid "Add an email address to which to send books"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:581
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:629
msgid "&Add email"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:582
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:630
msgid "Make &default"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:583
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:631
msgid "&Remove email"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:584
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:632
msgid "calibre can send your books to you (or your reader) by email. Emails will be automatically sent for downloaded news to all email addresses that have Auto-send checked."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:585
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:633
msgid "&Maximum number of waiting worker processes (needs restart):"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:586
-msgid "&Check database integrity"
-msgstr ""
-
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:587
-msgid "&Install command line tools"
-msgstr ""
-
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:588
-msgid "Open calibre &configuration directory"
-msgstr ""
-
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:589
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:634
msgid "Limit the max. simultaneous jobs to the available CPU &cores"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:590
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:635
msgid "Debug &device detection"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:591
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:636
+msgid "&Check database integrity"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:637
+msgid "Open calibre &configuration directory"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:638
+msgid "&Install command line tools"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:639
+msgid "&Miscellaneous"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:640
+msgid "Values for the tweaks are shown below. Edit them to change the behavior of calibre"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:641
+msgid "All available tweaks"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:642
+msgid "&Current tweaks"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:643
+msgid "&Restore to defaults"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:644
+msgid "&Tweaks"
+msgstr ""
+
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:645
msgid "calibre contains a network server that allows you to access your book collection using a browser from anywhere in the world. Any changes to the settings will only take effect after a server restart."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:592
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:646
msgid "Server &port:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:593
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:647
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:58
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:212
#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:594
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:648
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:59
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:213
#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:595
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:649
msgid "If you leave the password blank, anyone will be able to access your book collection using the web interface."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:596
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:650
msgid "The maximum size (widthxheight) for displayed covers. Larger covers are resized. "
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:597
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:651
msgid "Max. &cover size:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:598
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:652
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:60
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:214
msgid "&Show password"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:599
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:653
msgid "Max. &OPDS items per query:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:600
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:654
msgid "Max. OPDS &ungrouped items:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:601
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:655
msgid "&Start Server"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:602
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:656
msgid "St&op Server"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:603
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:657
msgid "&Test Server"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:604
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:658
msgid "Run server &automatically on startup"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:605
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:659
msgid "View &server logs"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:606
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:660
#: /home/kovid/work/trunk/src/calibre/gui2/wizard/stanza_ui.py:46
msgid ""
"Remember to leave calibre running as the server only runs as long as calibre is running.\n"
"
Stanza should see your calibre collection automatically. If not, try adding the URL http://myhostname:8080 as a new catalog in the Stanza reader on your iPhone. Here myhostname should be the fully qualified hostname or the IP address of the computer calibre is running on."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:608
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:662
msgid "Here you can customize the behavior of Calibre by controlling what plugins it uses."
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:609
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:663
msgid "Enable/&Disable plugin"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:610
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:664
msgid "&Customize plugin"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:611
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:665
msgid "&Remove plugin"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:612
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:666
msgid "Add new plugin"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:613
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:667
msgid "Plugin &file:"
msgstr ""
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:615
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:669
msgid "&Add"
msgstr ""
@@ -5511,20 +5543,30 @@ msgid "Author sort"
msgstr ""
#:
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:63
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:66
msgid "Manage authors"
msgstr ""
#:
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:64
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:67
msgid "Sort by author"
msgstr ""
#:
-#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:65
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:68
msgid "Sort by author sort"
msgstr ""
+#:
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:69
+msgid "Reset all the author sort values to a value automatically generated from the author. Exactly how this value is automatically generated can be controlled via Preferences->Advanced->Tweaks"
+msgstr ""
+
+#:
+#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:70
+msgid "Recalculate all author sort values"
+msgstr ""
+
#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:60
msgid "Author Sort"
msgstr ""