diff --git a/resources/default_tweaks.py b/resources/default_tweaks.py index d0f8e1b91b..80456234b9 100644 --- a/resources/default_tweaks.py +++ b/resources/default_tweaks.py @@ -6,7 +6,7 @@ __docformat__ = 'restructuredtext en' ''' Contains various tweaks that affect calibre behavior. Only edit this file if -you know what you are dong. If you delete this file, it will be recreated from +you know what you are doing. If you delete this file, it will be recreated from defaults. ''' diff --git a/resources/recipes/nspm.recipe b/resources/recipes/nspm.recipe index 7514e0727d..13ff42b277 100644 --- a/resources/recipes/nspm.recipe +++ b/resources/recipes/nspm.recipe @@ -6,7 +6,6 @@ nspm.rs import re from calibre.web.feeds.news import BasicNewsRecipe -from calibre.ebooks.BeautifulSoup import Tag class Nspm(BasicNewsRecipe): title = 'Nova srpska politicka misao' @@ -22,14 +21,14 @@ class Nspm(BasicNewsRecipe): encoding = 'utf-8' language = 'sr' delay = 2 - publication_type = 'magazine' + publication_type = 'magazine' masthead_url = 'http://www.nspm.rs/templates/jsn_epic_pro/images/logol.jpg' - extra_css = """ @font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} - @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} - body{font-family: "Times New Roman", serif1, serif} - .article_description{font-family: Arial, sans1, sans-serif} - img{margin-top:0.5em; margin-bottom: 0.7em} - .author{color: #990000; font-weight: bold} + extra_css = """ @font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} + @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} + body{font-family: "Times New Roman", serif1, serif} + .article_description{font-family: Arial, sans1, sans-serif} + img{margin-top:0.5em; margin-bottom: 0.7em} + .author{color: #990000; font-weight: bold} .author,.createdate{font-size: 0.9em} """ conversion_options = { @@ -68,4 +67,4 @@ class Nspm(BasicNewsRecipe): def preprocess_html(self, soup): for item in soup.body.findAll(style=True): del item['style'] - return self.adeify_images(soup) \ No newline at end of file + return self.adeify_images(soup) diff --git a/src/calibre/ebooks/metadata/fetch.py b/src/calibre/ebooks/metadata/fetch.py index 86e7c99de5..96807c06ae 100644 --- a/src/calibre/ebooks/metadata/fetch.py +++ b/src/calibre/ebooks/metadata/fetch.py @@ -9,6 +9,7 @@ from threading import Thread from calibre import prints from calibre.utils.config import OptionParser from calibre.utils.logging import default_log +from calibre.utils.titlecase import titlecase from calibre.customize import Plugin from calibre.ebooks.metadata.covers import check_for_cover @@ -384,6 +385,16 @@ def search(title=None, author=None, publisher=None, isbn=None, isbndb_key=None, if r.pubdate is None: r.pubdate = pubdate + def fix_case(x): + if x and x.isupper(): + x = titlecase(x) + return x + + for r in results: + r.title = fix_case(r.title) + if r.authors: + r.authors = list(map(fix_case, r.authors)) + return results, [(x.name, x.exception, x.tb) for x in fetchers] def get_social_metadata(mi, verbose=0): diff --git a/src/calibre/gui2/actions/__init__.py b/src/calibre/gui2/actions/__init__.py index ebb030edb6..f70332d15a 100644 --- a/src/calibre/gui2/actions/__init__.py +++ b/src/calibre/gui2/actions/__init__.py @@ -296,6 +296,17 @@ class AddAction(object): # {{{ self.library_view.model().db.import_book(MetaInformation(None), []) self.library_view.model().books_added(num) + def add_isbns(self, isbns): + from calibre.ebooks.metadata import MetaInformation + ids = set([]) + for x in isbns: + mi = MetaInformation(None) + mi.isbn = x + ids.add(self.library_view.model().db.import_book(mi, [])) + self.library_view.model().books_added(len(isbns)) + self.do_download_metadata(ids) + + def files_dropped(self, paths): to_device = self.stack.currentIndex() != 0 self._add_books(paths, to_device) @@ -342,6 +353,12 @@ class AddAction(object): # {{{ def add_filesystem_book(self, paths, allow_device=True): self._add_filesystem_book(paths, allow_device=allow_device) + def add_from_isbn(self, *args): + from calibre.gui2.dialogs.add_from_isbn import AddFromISBN + d = AddFromISBN(self) + if d.exec_() == d.Accepted: + self.add_isbns(d.isbns) + def add_books(self, *args): ''' Add books from the local filesystem to either the library or the device. @@ -625,6 +642,13 @@ class EditMetadataAction(object): # {{{ return db = self.library_view.model().db ids = [db.id(row.row()) for row in rows] + self.do_download_metadata(ids, covers=covers, + set_metadata=set_metadata, + set_social_metadata=set_social_metadata) + + def do_download_metadata(self, ids, covers=True, set_metadata=True, + set_social_metadata=None): + db = self.library_view.model().db if set_social_metadata is None: get_social_metadata = config['get_social_metadata'] else: diff --git a/src/calibre/gui2/convert/txt_output.ui b/src/calibre/gui2/convert/txt_output.ui index 11a38690b1..9eae5a8115 100644 --- a/src/calibre/gui2/convert/txt_output.ui +++ b/src/calibre/gui2/convert/txt_output.ui @@ -63,7 +63,7 @@ - Force maximum line lenght + Force maximum line length diff --git a/src/calibre/gui2/dialogs/add_from_isbn.py b/src/calibre/gui2/dialogs/add_from_isbn.py new file mode 100644 index 0000000000..a7bd578d61 --- /dev/null +++ b/src/calibre/gui2/dialogs/add_from_isbn.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__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 ""