From 8fff3d58c004b5e9f51ae20840a269d17de8e3d1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 24 Jun 2009 08:52:13 -0700 Subject: [PATCH 01/10] Fix #2702 (Trivial Calibre Welcome Wizard wording discrepancy) --- src/calibre/gui2/main.py | 3 +- src/calibre/gui2/wizard/__init__.py | 3 + src/calibre/gui2/wizard/finish.ui | 4 +- src/calibre/translations/calibre.pot | 899 ++++++++++++++------------- 4 files changed, 482 insertions(+), 427 deletions(-) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index e0e8f7c337..ee4ccd43d9 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -318,8 +318,9 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): pm = QMenu() ap = self.action_preferences pm.addAction(ap.icon(), ap.text()) - pm.addAction(self.preferences_action) pm.addAction(_('Run welcome wizard')) + self.connect(pm.actions()[0], SIGNAL('triggered(bool)'), + self.do_config) self.connect(pm.actions()[1], SIGNAL('triggered(bool)'), self.run_wizard) self.action_preferences.setMenu(pm) diff --git a/src/calibre/gui2/wizard/__init__.py b/src/calibre/gui2/wizard/__init__.py index 4ba4abc263..79da40b7c1 100644 --- a/src/calibre/gui2/wizard/__init__.py +++ b/src/calibre/gui2/wizard/__init__.py @@ -482,6 +482,9 @@ class Wizard(QWizard): self.device_page = DevicePage() self.library_page = LibraryPage() self.finish_page = FinishPage() + bt = self.buttonText(self.FinishButton) + t = unicode(self.finish_page.finish_text.text()) + self.finish_page.finish_text.setText(t%bt) self.kindle_page = KindlePage() self.stanza_page = StanzaPage() self.setPage(self.library_page.ID, self.library_page) diff --git a/src/calibre/gui2/wizard/finish.ui b/src/calibre/gui2/wizard/finish.ui index b42e8b1c32..a933264b81 100644 --- a/src/calibre/gui2/wizard/finish.ui +++ b/src/calibre/gui2/wizard/finish.ui @@ -21,9 +21,9 @@ - + - <h2>Congratulations!</h2> You have succesfully setup calibre. Press the Finish button to apply your settings. + <h2>Congratulations!</h2> You have successfully setup calibre. Press the %s button to apply your settings. true diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index 4a9d307250..6fc61b369a 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.6.0b6\n" -"POT-Creation-Date: 2009-06-17 21:18+PDT\n" -"PO-Revision-Date: 2009-06-17 21:18+PDT\n" +"Project-Id-Version: calibre 0.6.0b8\n" +"POT-Creation-Date: 2009-06-24 08:51+PDT\n" +"PO-Revision-Date: 2009-06-24 08:51+PDT\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -22,7 +22,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:44 #: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:68 #: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:69 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:115 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:116 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:57 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 @@ -33,13 +33,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:404 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:50 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:52 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:315 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:317 +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:320 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:223 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:253 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:256 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:344 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:225 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:255 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:258 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:23 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:45 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 @@ -48,8 +48,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:105 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:153 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:333 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:448 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:865 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:27 @@ -65,11 +65,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:724 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:46 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:826 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:831 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:837 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:842 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:169 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:172 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:82 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:83 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:26 @@ -94,8 +94,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:93 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:19 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:71 @@ -104,8 +104,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:755 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:758 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:40 @@ -114,17 +114,17 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:369 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:932 #: /home/kovid/work/calibre/src/calibre/library/cli.py:264 -#: /home/kovid/work/calibre/src/calibre/library/database.py:916 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:585 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:597 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:993 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1028 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1355 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1357 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1441 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1525 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1548 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1599 +#: /home/kovid/work/calibre/src/calibre/library/database.py:917 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:618 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:630 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1026 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1061 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1391 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1393 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1477 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1561 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1584 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1635 #: /home/kovid/work/calibre/src/calibre/library/server.py:283 #: /home/kovid/work/calibre/src/calibre/library/server.py:344 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 @@ -327,15 +327,15 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:11 +#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:14 msgid "Communicate with the BeBook eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:12 +#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:15 msgid "Tijmen Ruizendaal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:57 +#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:85 msgid "Communicate with the BeBook Mini eBook reader." msgstr "" @@ -363,21 +363,21 @@ msgid "John Schember" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:58 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:62 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:63 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:151 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:467 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:80 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:937 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:941 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1259 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:970 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:974 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1295 msgid "News" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:97 #: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:99 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:97 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:99 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:98 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:177 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:179 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:165 @@ -389,8 +389,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:125 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:43 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:52 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:198 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:201 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:207 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:210 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:186 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:195 msgid "Removing books from device..." @@ -404,11 +404,11 @@ msgstr "" msgid "Device Interface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:15 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:16 msgid "Communicate with the JetBook eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:16 +#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:17 msgid "James Ralston" msgstr "" @@ -473,7 +473,7 @@ msgstr "" msgid "There is insufficient free space on the storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:229 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:238 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:210 msgid "Sending metadata to device..." msgstr "" @@ -482,21 +482,21 @@ msgstr "" msgid "Communicate with the Sony PRS-700 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:250 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:300 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:251 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:303 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:368 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:471 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:371 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:474 msgid "Unable to detect the %s disk drive." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:458 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:461 msgid "You must install the pmount package." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:477 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:480 msgid "Unable to mount main memory (Error code: %d)" msgstr "" @@ -605,43 +605,43 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:87 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:89 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:88 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:90 msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:94 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:96 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:95 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:97 msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:109 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:111 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:125 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Control the automatic generation of a Table of Contents. By default, if the source file has a Table of Contents, it will be used in preference to the automatically generated one." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:143 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:145 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:146 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:148 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:220 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:222 msgid "Output saved to" msgstr "" @@ -856,7 +856,7 @@ msgstr "" msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:683 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:684 msgid "Creating" msgstr "" @@ -884,6 +884,10 @@ msgstr "" msgid "Normally this input plugin re-arranges all the input files into a standard folder hierarchy. Only use this option if you know what you are doing as it can result in various nasty side effects in the rest of of the conversion pipeline." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:266 +msgid "Average line length for line breaking if the HTML is from a previous partial conversion of a PDF file." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 msgid "Creating LIT file from EPUB..." msgstr "" @@ -1010,7 +1014,7 @@ msgid "Path to output file" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:289 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:117 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:116 msgid "Verbose processing" msgstr "" @@ -1018,11 +1022,11 @@ msgstr "" msgid "Convert LRS to LRS, useful for debugging." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:458 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:455 msgid "Invalid LRF file. Could not set metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:583 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:580 msgid "" "%prog [options] mybook.lrf\n" "\n" @@ -1031,59 +1035,59 @@ msgid "" "\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:590 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:587 msgid "Set the book title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:592 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:589 msgid "Set sort key for the title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:594 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:591 msgid "Set the author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:596 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593 msgid "Set sort key for the author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:598 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:595 msgid "The category this book belongs to. E.g.: History" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:601 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:598 msgid "Path to a graphic that will be set as this files' thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:604 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:601 msgid "Path to a txt file containing the comment to be stored in the lrf file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:605 msgid "Extract thumbnail from LRF file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:606 msgid "Set the publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:610 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:607 msgid "Set the book classification" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 msgid "Set the book creator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:612 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609 msgid "Set the book producer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:614 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611 msgid "Extract cover from LRF file. Note that the LRF format has no defined cover, so we use some heuristics to guess the cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:616 +#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:613 msgid "Set book ID" msgstr "" @@ -1135,49 +1139,49 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:343 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:345 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:70 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:353 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:998 msgid "Title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:344 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:346 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:358 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:999 msgid "Author(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:122 msgid "Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:346 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:348 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:347 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:349 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:489 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:517 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:314 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:58 msgid "Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:355 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:357 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:303 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:942 @@ -1187,7 +1191,7 @@ msgstr "" msgid "Tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:357 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:319 #: /home/kovid/work/calibre/src/calibre/gui2/status.py:59 @@ -1195,16 +1199,17 @@ msgstr "" msgid "Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:358 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:360 msgid "Language" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:360 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:941 msgid "Timestamp" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:362 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:120 msgid "Published" msgstr "" @@ -1283,7 +1288,7 @@ msgstr "" msgid "No cover found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:98 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:97 msgid "" "\n" "%prog [options] key\n" @@ -1296,19 +1301,19 @@ msgid "" "\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:109 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:108 msgid "The ISBN ID of the book you want metadata for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:111 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:110 msgid "The author whose book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:113 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:112 msgid "The title of the book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:115 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:114 msgid "The publisher of the book to search for." msgstr "" @@ -1350,92 +1355,81 @@ msgid "Title for any generated in-line table of contents." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:32 -msgid "When present, generate a periodical rather than a book." +msgid "Generate a periodical rather than a book." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:36 -msgid "Disable generation of MOBI index." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:40 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer.py:430 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer.py:875 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer.py:888 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:65 -msgid "Unnamed" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 msgid "Title Page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:166 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 msgid "Index" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 msgid "Glossary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 msgid "Acknowledgements" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 msgid "Bibliography" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 msgid "Colophon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Copyright" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1263 msgid "Dedication" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1264 msgid "Epigraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1265 msgid "Foreword" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1266 msgid "List of Illustrations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1267 msgid "List of Tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1268 msgid "Notes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1269 msgid "Preface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1270 msgid "Main Text" msgstr "" @@ -1471,7 +1465,7 @@ msgstr "" msgid "HTML TOC generation options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:85 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:86 msgid "Book Jacket" msgstr "" @@ -1479,6 +1473,10 @@ msgstr "" msgid "Could not find reasonable point at which to split: %s Sub-tree size: %d KB" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:65 +msgid "Unnamed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:32 msgid "OPF/NCX/etc. generation options." msgstr "" @@ -1508,6 +1506,14 @@ msgstr "" msgid "Specify the character encoding of the output document. The default is cp1252. Note: This option is not honored by all formats." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:22 +msgid "Do not extract images from the document" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24 +msgid "Scale used to determine the length at which a line should be unwrapped. Valid values are a decimal between 0 and 1. The default is 0.5, this is the median line length." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/cli.py:31 msgid "" "command ...\n" @@ -1678,19 +1684,19 @@ msgstr "" msgid "Split Options:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:33 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:31 msgid "The unit of measure. Default is inch. Choices are %s Note: This does not override the unit for margins!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:38 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:36 msgid "The size of the paper. This size will be overridden when an output profile is used. Default is letter. Choices are %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:42 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:40 msgid "Custom size of the document. Use the form widthxheight EG. `123x321` to specify the width and height. This overrides any specified paper-size." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:45 msgid "The orientation of the page. Default is portrait. Choices are %s" msgstr "" @@ -1698,10 +1704,6 @@ msgstr "" msgid "Could not find pdftohtml, check it is in your PATH" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:75 -msgid " is an image based PDF. Only conversion of text based PDFs is supported." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:75 msgid "This RTF file has a feature calibre does not support. Convert it to HTML first and then try it." msgstr "" @@ -1763,43 +1765,43 @@ msgstr "" msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:62 msgid "Delete books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:64 msgid "Show the cover flow in a separate window instead of in the main calibre window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:66 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:68 msgid "Default action to perform when send to device button is clicked" msgstr "" @@ -1848,28 +1850,31 @@ msgstr "" msgid "Comic Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 -msgid "input" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 msgid "Options specific to" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 +msgid "input" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:37 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:37 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:61 @@ -2087,7 +2092,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:23 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:142 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:167 msgid "Metadata" msgstr "" @@ -2101,23 +2106,23 @@ msgid "Choose cover for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:108 msgid "Cannot read" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:109 msgid "You do not have permission to read the file: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:113 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:117 msgid "Error reading file" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:114 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:118 msgid "

There was an error reading from file:
" msgstr "" @@ -2128,7 +2133,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:468 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 msgid "Book Cover" msgstr "" @@ -2141,14 +2146,14 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:161 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:469 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:497 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Change &cover image:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:470 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:498 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "Browse for an image to use as the cover of this book." msgstr "" @@ -2164,14 +2169,14 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config_ui.py:525 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:471 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:499 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:327 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:332 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:346 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:126 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:131 @@ -2188,14 +2193,14 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:473 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:501 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:324 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:334 msgid "&Title: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:474 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:502 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:335 msgid "Change the title of this book" msgstr "" @@ -2203,7 +2208,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:475 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:503 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:338 msgid "&Author(s): " msgstr "" @@ -2230,7 +2235,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:507 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:136 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:347 msgid "&Publisher: " msgstr "" @@ -2244,7 +2249,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:481 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:509 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:348 msgid "Ta&gs: " msgstr "" @@ -2252,7 +2257,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:482 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:510 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:349 msgid "Tags categorize the book. This is particularly useful while searching.

They can be any words or phrases, separated by commas." msgstr "" @@ -2260,7 +2265,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:483 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:511 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:342 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:352 msgid "&Series:" msgstr "" @@ -2272,15 +2277,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:513 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:343 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 msgid "List of known series. You can add new series." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/epub_ui.py:488 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:516 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 msgid "Book " msgstr "" @@ -2288,18 +2293,26 @@ msgstr "" msgid "MOBI Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:45 msgid "&Title for Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:46 msgid "Rescale images for &Palm devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:47 msgid "Use author &sort for author" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:48 +msgid "Disable compression of the file contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:49 +msgid "Generate a periodical rather than a book" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup.py:35 msgid "Page Setup" msgstr "" @@ -2344,6 +2357,18 @@ msgstr "" msgid "Format:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:12 +msgid "PDF Input" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:38 +msgid "Line Un-Wrapping Factor:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:39 +msgid "No Images" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:17 msgid "PDF Output" msgstr "" @@ -2946,7 +2971,7 @@ msgid "Access log:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config.py:607 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:543 msgid "Failed to start content server" msgstr "" @@ -3373,39 +3398,39 @@ msgstr "" msgid "Level &3 TOC" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:58 msgid "Author Sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:60 msgid "ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:146 msgid "Finding metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:158 msgid "Could not find metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:159 msgid "The metadata download seems to have stalled. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:168 msgid "Warning" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:169 msgid "Could not fetch metadata from:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 msgid "No metadata found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" @@ -3595,34 +3620,34 @@ msgid "Edit Meta information" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:127 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:333 msgid "Meta information" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:339 msgid "Author S&ort: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:340 msgid "Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:333 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:343 msgid "&Rating:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:334 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:345 msgid "Rating of this book. 0-5 stars" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:346 msgid " stars" msgstr "" @@ -3632,8 +3657,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:340 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:351 msgid "Open Tag Editor" msgstr "" @@ -3653,116 +3678,124 @@ msgstr "" msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:170 msgid "No format selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:180 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:181 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:190 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:390 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:394 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:413 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:403 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:414 msgid "Could not fetch cover.
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:404 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:408 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:420 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:413 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:421 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:459 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:449 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:460 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:332 msgid "Edit Meta Information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:336 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:341 msgid "Automatically create the author sort entry based on the current author entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 msgid "Remove unused series (Series that have no books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 msgid "IS&BN:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:350 -msgid "&Fetch metadata from server" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 +msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:351 -msgid "Available Formats" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:352 -msgid "Add a new format for this book to the database" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 -msgid "Remove the selected formats for this book from the database." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 -msgid "Set the cover for the book from the selected format" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 +msgid "MMM yyyy" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 -msgid "Reset cover to default" +msgid "&Fetch metadata from server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 +msgid "Available Formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 +msgid "Add a new format for this book to the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 +msgid "Remove the selected formats for this book from the database." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +msgid "Set the cover for the book from the selected format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +msgid "Reset cover to default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 msgid "Download &cover" msgstr "" @@ -4241,11 +4274,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:96 msgid "No match" msgstr "" @@ -4301,24 +4334,24 @@ msgstr "" msgid "Unknown job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:188 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:192 msgid "Cannot kill job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:190 msgid "Cannot kill jobs that communicate with the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:193 msgid "Job has already run" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:215 msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:226 msgid " - Jobs" msgstr "" @@ -4339,7 +4372,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:308 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:374 msgid "None" msgstr "" @@ -4392,7 +4425,7 @@ msgid "No matches for the search phrase %s were found." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:405 msgid "No matches found" msgstr "" @@ -4444,7 +4477,7 @@ msgid "Save single format to disk..." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:932 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:942 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:49 msgid "Error" msgstr "" @@ -4515,7 +4548,7 @@ msgid "Save to disk in a single directory" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:272 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1421 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1431 msgid "Save only %s format to disk" msgstr "" @@ -4536,44 +4569,44 @@ msgstr "" msgid "Bulk convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:321 msgid "Run welcome wizard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "Similar books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:412 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:411 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1549 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:415 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1559 msgid "Choose a location for your ebook library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:586 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:678 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:688 msgid "Device: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:690 msgid " detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:702 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:712 msgid "Connected " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:714 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:724 msgid "Device database corrupted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:715 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:725 msgid "" "\n" "

The database of books on the reader is corrupted. Try the following:\n" @@ -4584,286 +4617,286 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:782 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:825 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:835 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:790 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:800 msgid "Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:801 msgid "EPUB Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:802 msgid "LRF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:793 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:803 msgid "HTML Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:794 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:804 msgid "LIT Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:795 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:805 msgid "MOBI Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:796 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:806 msgid "Text books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:807 msgid "PDF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:798 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:808 msgid "Comics" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:799 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:809 msgid "Archives" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:846 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:856 msgid "The selected books will be permanently deleted and the files removed from your computer. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:863 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:873 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:894 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:904 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:895 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:945 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:975 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1000 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1131 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:905 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:955 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:985 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1010 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1141 msgid "No books selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:904 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:914 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:904 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:914 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:906 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:916 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:937 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:928 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:938 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:941 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:944 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:974 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:954 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:984 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:999 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1009 msgid "Cannot save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1002 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1012 msgid "Choose destination directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1025 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1035 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1026 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1036 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1030 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1031 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1040 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1041 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1032 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1042 msgid "as the %s format is not available for them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1033 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1043 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1052 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1062 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1075 msgid " fetched." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1130 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1140 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1315 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1334 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1325 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1344 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1315 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1364 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1325 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1374 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1321 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1369 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1331 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1379 msgid "Choose the format to view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1333 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1343 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1365 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1375 msgid "%s has no available formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1406 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1416 msgid "Cannot configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1407 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1417 msgid "Cannot configure while there are running jobs." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1450 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1460 msgid "No detailed info available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1451 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1461 msgid "No detailed information is available for books on the device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1499 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1509 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1500 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1510 msgid "There was a temporary error talking to the device. Please unplug and reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1517 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1532 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1527 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1542 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1518 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1528 msgid "

Could not convert: %s

It is a DRMed book. You must first remove the DRM using 3rd party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1533 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1543 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1558 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1568 msgid "Invalid library location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1559 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1569 msgid "Could not access %s. Using %s as the library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1607 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1617 msgid "is the result of the efforts of many volunteers from all over the world. If you find it useful, please consider donating to support its development." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1631 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1641 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1634 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1644 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1638 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1648 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1689 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1699 msgid "will keep running in the system tray. To close it, choose Quit in the context menu of the system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1708 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1718 msgid "Latest version: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1716 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1726 msgid "Update available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1717 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1727 msgid "%s has been updated to version %s. See the new features. Visit the download page?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1735 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1745 msgid "Use the library located at the specified path." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1737 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1747 msgid "Start minimized to system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1739 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1749 msgid "Log debugging information to console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1787 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1797 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1789 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1799 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1790 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1800 msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1793 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1803 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1795 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1805 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1797 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1807 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1800 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1810 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1802 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1822 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1812 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1832 msgid "try deleting the file" msgstr "" @@ -5049,30 +5082,30 @@ msgid "Publishers" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:30 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:94 msgid "Starting conversion of %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:129 msgid "Convert book %d of %d (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:70 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:146 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:147 msgid "Could not convert %d of %d books, because no suitable source format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:163 msgid "You must set a username and password for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:168 msgid "Fetch news from " msgstr "" @@ -5184,48 +5217,52 @@ msgstr "" msgid "&User stylesheet" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:52 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:633 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 msgid "Set the user CSS stylesheet. This can be used to customize the look of all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:65 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:69 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 msgid "The standard font type" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:143 +msgid "Book format" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:166 msgid "Go to..." msgstr "" @@ -5246,67 +5283,71 @@ msgstr "" msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:282 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:365 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:366 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:385 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:385 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:406 msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:445 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:446 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:473 msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:502 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:537 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:545 msgid "DRM Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:546 msgid "

This book is protected by DRM" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:550 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:630 msgid "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:638 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:635 +msgid "Print javascript alert and console messages to the console" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:641 msgid "" "%prog [options] file\n" "\n" @@ -5365,55 +5406,55 @@ msgstr "" msgid "Print eBook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:71 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:72 msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:164 msgid "" "Library\n" "%d\n" "books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:165 msgid "" "Reader\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:166 msgid "" "Card A\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:167 msgid "" "Card B\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:172 msgid "Click to see the books available on your computer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:173 msgid "Click to see the books in the main memory of your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:174 msgid "Click to see the books on storage card A in your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:175 msgid "Click to see the books on storage card B in your reader" msgstr "" @@ -5490,7 +5531,7 @@ msgid "WizardPage" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48 -msgid "

Congratulations!

You have succesfully setup calibre. Press the Finish button to apply your settings." +msgid "

Congratulations!

You have successfully setup calibre. Press the Finish button to apply your settings." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 @@ -5862,15 +5903,15 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1461 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1497 msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1490 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1526 msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1507 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1543 msgid "Compacting database" msgstr "" @@ -6114,6 +6155,40 @@ msgstr "" msgid "Serbian" msgstr "" +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_7dias.py:23 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_ambito.py:61 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_buenosaireseconomico.py:23 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_clarin.py:64 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_criticadigital.py:17 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_diagonales.py:23 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_el_mercurio_chile.py:61 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_el_pais.py:14 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_el_universal.py:23 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_elargentino.py:23 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_elcronista.py:16 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_elmundo.py:60 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_elperiodico_spanish.py:25 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_expansion_spanish.py:25 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_granma.py:24 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_infobae.py:21 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_juventudrebelde.py:23 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_la_cuarta.py:53 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_la_segunda.py:24 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_la_tercera.py:64 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_lamujerdemivida.py:22 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_lanacion.py:60 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_lanacion_chile.py:54 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_laprensa.py:60 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_laprensa_ni.py:25 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_lavanguardia.py:25 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_marca.py:25 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_miradasalsur.py:23 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_newsweek_argentina.py:23 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_pagina12.py:25 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_veintitres.py:23 +msgid "Spanish" +msgstr "" + #: #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_adventuregamers.py:13 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_adventuregamers.py:18 @@ -6146,7 +6221,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_freakonomics.py:13 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_fudzilla.py:15 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_glasgow_herald.py:10 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_globe_and_mail.py:16 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_globe_and_mail.py:15 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_guardian.py:16 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_harpers.py:14 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_harpers_full.py:26 @@ -6229,34 +6304,6 @@ msgstr "" msgid "English" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_ambito.py:61 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_clarin.py:64 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_criticadigital.py:17 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_el_mercurio_chile.py:61 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_el_pais.py:14 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_el_universal.py:23 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_elargentino.py:23 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_elcronista.py:16 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_elmundo.py:60 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_elperiodico_spanish.py:25 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_expansion_spanish.py:25 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_granma.py:24 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_infobae.py:21 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_juventudrebelde.py:23 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_la_cuarta.py:53 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_la_segunda.py:24 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_la_tercera.py:64 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_lamujerdemivida.py:22 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_lanacion.py:60 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_lanacion_chile.py:54 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_laprensa.py:60 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_laprensa_ni.py:25 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_lavanguardia.py:25 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_marca.py:25 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_pagina12.py:25 -msgid "Spanish" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_carta.py:24 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_der_standard.py:22 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_diepresse.py:23 @@ -6292,7 +6339,11 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_de_standaard.py:12 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_degentenaar.py:22 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_demorgen_be.py:16 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_gva_be.py:22 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_hln.py:22 +#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/recipe_tijd.py:22 msgid "Dutch" msgstr "" From a668e609445997c8c829a507ee0f80a9a5744777 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 24 Jun 2009 09:25:28 -0700 Subject: [PATCH 02/10] ... --- src/calibre/ebooks/oeb/stylizer.py | 4 ++-- src/calibre/gui2/wizard/__init__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/oeb/stylizer.py b/src/calibre/ebooks/oeb/stylizer.py index 8b0667c8b7..5f923c4311 100644 --- a/src/calibre/ebooks/oeb/stylizer.py +++ b/src/calibre/ebooks/oeb/stylizer.py @@ -169,11 +169,11 @@ class Stylizer(object): if not matches and class_sel_pat.match(text): found = False for x in tree.xpath('//*[@class]'): - if x.get('class').lower() == text[1:].lower(): + if '.'+x.get('class').lower() in text.lower(): matches.append(x) found = True if found: - self.logger.warn('Ignoring case mismatch for CSS selector: %s in %s' + self.logger.warn('Ignoring case mismatches for CSS selector: %s in %s' %(text, item.href)) for elem in matches: self.style(elem)._update_cssdict(cssdict) diff --git a/src/calibre/gui2/wizard/__init__.py b/src/calibre/gui2/wizard/__init__.py index 79da40b7c1..bfd01f58fd 100644 --- a/src/calibre/gui2/wizard/__init__.py +++ b/src/calibre/gui2/wizard/__init__.py @@ -482,7 +482,7 @@ class Wizard(QWizard): self.device_page = DevicePage() self.library_page = LibraryPage() self.finish_page = FinishPage() - bt = self.buttonText(self.FinishButton) + bt = unicode(self.buttonText(self.FinishButton)) t = unicode(self.finish_page.finish_text.text()) self.finish_page.finish_text.setText(t%bt) self.kindle_page = KindlePage() From 9603e3f385a7ada4b29105eb749d0ca53fed222e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 24 Jun 2009 10:22:12 -0700 Subject: [PATCH 03/10] Include the amazon metadata fetching module in the OS X build of calibre --- installer/osx/freeze.py | 1 + 1 file changed, 1 insertion(+) diff --git a/installer/osx/freeze.py b/installer/osx/freeze.py index 3ccdb9bd61..18e7f57f5e 100644 --- a/installer/osx/freeze.py +++ b/installer/osx/freeze.py @@ -352,6 +352,7 @@ def main(): 'BeautifulSoup', 'calibre.ebooks.lrf.fonts.prs500.*', 'dateutil', 'email.iterators', 'email.generator', + 'calibre.ebooks.metadata.amazon', ], 'packages' : ['PIL', 'Authorization', 'lxml', 'dns'], 'excludes' : ['IPython'], From 87e78c48e358ba901f2d00e29bde314a681be255 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 24 Jun 2009 17:51:35 -0700 Subject: [PATCH 04/10] ... --- src/calibre/ebooks/metadata/__init__.py | 2 +- src/calibre/ebooks/oeb/stylizer.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/metadata/__init__.py b/src/calibre/ebooks/metadata/__init__.py index 9be40f9b49..134a0c3c23 100644 --- a/src/calibre/ebooks/metadata/__init__.py +++ b/src/calibre/ebooks/metadata/__init__.py @@ -15,8 +15,8 @@ from calibre import relpath _author_pat = re.compile(',?\s+and\s+', re.IGNORECASE) def string_to_authors(raw): - raw = _author_pat.sub('&', raw) raw = raw.replace('&&', u'\uffff') + raw = _author_pat.sub('&', raw) authors = [a.strip().replace(u'\uffff', '&') for a in raw.split('&')] return authors diff --git a/src/calibre/ebooks/oeb/stylizer.py b/src/calibre/ebooks/oeb/stylizer.py index 5f923c4311..5fcc7e3fac 100644 --- a/src/calibre/ebooks/oeb/stylizer.py +++ b/src/calibre/ebooks/oeb/stylizer.py @@ -169,7 +169,7 @@ class Stylizer(object): if not matches and class_sel_pat.match(text): found = False for x in tree.xpath('//*[@class]'): - if '.'+x.get('class').lower() in text.lower(): + if text.lower().endswith('.'+x.get('class').lower()): matches.append(x) found = True if found: From e65d1325f85a2cfae7a95a0e64628c4fe4092131 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Jun 2009 09:02:56 -0700 Subject: [PATCH 05/10] Fix processing of --margin-x options for LRF output --- src/calibre/ebooks/lrf/output.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/lrf/output.py b/src/calibre/ebooks/lrf/output.py index a9763adeca..6ca27ba9a4 100644 --- a/src/calibre/ebooks/lrf/output.py +++ b/src/calibre/ebooks/lrf/output.py @@ -58,8 +58,8 @@ class LRFOptions(object): for x in ('top', 'bottom', 'left', 'right'): - setattr(self, x+'_margin', (self.profile.dpi/72.) * getattr(opts, - 'margin_'+x)) + setattr(self, x+'_margin', + (self.profile.dpi/72.) * float(getattr(opts, 'margin_'+x))) for x in ('wordspace', 'header', 'header_format', 'minimum_indent', 'serif_family', From f65151caaa96ca66a8c986fe0bed565fbbd0a80b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Jun 2009 09:11:23 -0700 Subject: [PATCH 06/10] Add type information to parser for command line arguments --- src/calibre/ebooks/conversion/cli.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/conversion/cli.py b/src/calibre/ebooks/conversion/cli.py index 3a34fa8675..0650fc73e9 100644 --- a/src/calibre/ebooks/conversion/cli.py +++ b/src/calibre/ebooks/conversion/cli.py @@ -70,11 +70,18 @@ def option_recommendation_to_cli_option(add_option, rec): switches.append('--'+opt.long_switch) attrs = dict(dest=opt.name, help=opt.help, choices=opt.choices, default=rec.recommended_value) - if opt.long_switch == 'verbose': - attrs['action'] = 'count' if isinstance(rec.recommended_value, type(True)): attrs['action'] = 'store_false' if rec.recommended_value else \ 'store_true' + else: + if isinstance(rec.recommended_value, int): + attrs['type'] = 'int' + if isinstance(rec.recommended_value, float): + attrs['type'] = 'float' + + if opt.long_switch == 'verbose': + attrs['action'] = 'count' + attrs.pop('type', '') add_option(Option(*switches, **attrs)) def add_input_output_options(parser, plumber): From caab42221b232334c969e77f0a25fa04e7915f94 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Jun 2009 11:38:40 -0700 Subject: [PATCH 07/10] Create clean metadata sections when outputting OEB/EPUB. Also fix #2671 (.6.0b8 - Not transferring author to PRS-505) --- src/calibre/ebooks/conversion/plumber.py | 3 +- src/calibre/ebooks/oeb/reader.py | 71 ++++-------- src/calibre/ebooks/oeb/transforms/metadata.py | 107 +++++++++--------- 3 files changed, 76 insertions(+), 105 deletions(-) diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py index a53e6050d1..11975094e3 100644 --- a/src/calibre/ebooks/conversion/plumber.py +++ b/src/calibre/ebooks/conversion/plumber.py @@ -616,8 +616,7 @@ OptionRecommendation(name='list_recipes', self.opts.dest = self.opts.output_profile from calibre.ebooks.oeb.transforms.metadata import MergeMetadata - MergeMetadata()(self.oeb, self.user_metadata, - self.opts.prefer_metadata_cover) + MergeMetadata()(self.oeb, self.user_metadata, self.opts) pr(0.2) self.flush() diff --git a/src/calibre/ebooks/oeb/reader.py b/src/calibre/ebooks/oeb/reader.py index 75d92f1815..9a637c1a24 100644 --- a/src/calibre/ebooks/oeb/reader.py +++ b/src/calibre/ebooks/oeb/reader.py @@ -6,7 +6,7 @@ from __future__ import with_statement __license__ = 'GPL v3' __copyright__ = '2008, Marshall T. Vandegrift ' -import sys, os, uuid, copy, re +import sys, os, uuid, copy, re, cStringIO from itertools import izip from urlparse import urldefrag, urlparse from urllib import unquote as urlunquote @@ -22,7 +22,7 @@ from calibre.ebooks.oeb.base import OEB_DOCS, OEB_STYLES, OEB_IMAGES, \ PAGE_MAP_MIME, JPEG_MIME, NCX_MIME, SVG_MIME from calibre.ebooks.oeb.base import XMLDECL_RE, COLLAPSE_RE, \ ENTITY_RE, MS_COVER_TYPE, iterlinks -from calibre.ebooks.oeb.base import namespace, barename, qname, XPath, xpath, \ +from calibre.ebooks.oeb.base import namespace, barename, XPath, xpath, \ urlnormalize, BINARY_MIME, \ OEBError, OEBBook, DirContainer from calibre.ebooks.oeb.writer import OEBWriter @@ -30,6 +30,7 @@ from calibre.ebooks.oeb.entitydefs import ENTITYDEFS from calibre.ebooks.metadata.epub import CoverRenderer from calibre.startup import get_lang from calibre.ptempfile import TemporaryDirectory +from calibre.constants import __appname__, __version__ __all__ = ['OEBReader'] @@ -123,53 +124,25 @@ class OEBReader(object): return opf def _metadata_from_opf(self, opf): - uid = opf.get('unique-identifier', None) - self.oeb.uid = None - metadata = self.oeb.metadata - for elem in xpath(opf, '/o2:package/o2:metadata//*'): - term = elem.tag - value = elem.text - attrib = dict(elem.attrib) - nsmap = elem.nsmap - if term == OPF('meta'): - term = qname(attrib.pop('name', None), nsmap) - value = attrib.pop('content', None) - if value: - value = COLLAPSE_RE.sub(' ', value.strip()) - if term and (value or attrib): - metadata.add(term, value, attrib, nsmap=nsmap) - haveuuid = haveid = False - for ident in metadata.identifier: - if unicode(ident).startswith('urn:uuid:'): - haveuuid = True - if 'id' in ident.attrib: - haveid = True - if not (haveuuid and haveid): - bookid = "urn:uuid:%s" % str(uuid.uuid4()) - metadata.add('identifier', bookid, id='calibre-uuid') - if uid is None: - self.logger.warn(u'Unique-identifier not specified') - for item in metadata.identifier: - if not item.id: - continue - if uid is None or item.id == uid: - self.oeb.uid = item - break - else: - self.logger.warn(u'Unique-identifier %r not found' % uid) - for ident in metadata.identifier: - if 'id' in ident.attrib: - self.oeb.uid = metadata.identifier[0] - break - if not metadata.language: - self.logger.warn(u'Language not specified') - metadata.add('language', get_lang()) - if not metadata.creator: - self.logger.warn('Creator not specified') - metadata.add('creator', self.oeb.translate(__('Unknown'))) - if not metadata.title: - self.logger.warn('Title not specified') - metadata.add('title', self.oeb.translate(__('Unknown'))) + from calibre.ebooks.metadata.opf2 import OPF + from calibre.ebooks.metadata import MetaInformation + from calibre.ebooks.oeb.transforms.metadata import meta_info_to_oeb_metadata + stream = cStringIO.StringIO(etree.tostring(opf)) + mi = MetaInformation(OPF(stream)) + if not mi.title: + mi.title = self.oeb.translate(__('Unknown')) + if not mi.authors: + mi.authors = [self.oeb.translate(__('Unknown'))] + if not mi.book_producer: + mi.book_producer = '%(a)s (%(v)s) [http://%(a)s.kovidgoyal.net]'%\ + dict(a=__appname__, v=__version__) + if not mi.language: + mi.language = get_lang() + meta_info_to_oeb_metadata(mi, self.oeb.metadata, self.logger) + bookid = "urn:uuid:%s" % str(uuid.uuid4()) if mi.application_id is None \ + else mi.applicaion_id + self.oeb.metadata.add('identifier', bookid, id='calibre-uuid') + self.oeb.uid = self.oeb.metadata.identifier[0] def _manifest_prune_invalid(self): ''' diff --git a/src/calibre/ebooks/oeb/transforms/metadata.py b/src/calibre/ebooks/oeb/transforms/metadata.py index 894cb4fb08..b2d254f76c 100644 --- a/src/calibre/ebooks/oeb/transforms/metadata.py +++ b/src/calibre/ebooks/oeb/transforms/metadata.py @@ -8,66 +8,65 @@ __docformat__ = 'restructuredtext en' import os +def meta_info_to_oeb_metadata(mi, m, log): + if mi.title: + m.clear('title') + m.add('title', mi.title) + if mi.title_sort: + if not m.title: + m.add('title', mi.title_sort) + m.title[0].file_as = mi.title_sort + if mi.authors: + m.filter('creator', lambda x : x.role.lower() == 'aut') + for a in mi.authors: + attrib = {'role':'aut'} + if mi.author_sort: + attrib['file_as'] = mi.author_sort + m.add('creator', a, attrib=attrib) + if mi.book_producer: + m.filter('contributor', lambda x : x.role.lower() == 'bkp') + m.add('contributor', mi.book_producer, role='bkp') + if mi.comments: + m.clear('description') + m.add('description', mi.comments) + if mi.publisher: + m.clear('publisher') + m.add('publisher', mi.publisher) + if mi.series: + m.clear('series') + m.add('series', mi.series) + if mi.isbn: + has = False + for x in m.identifier: + if x.scheme.lower() == 'isbn': + x.content = mi.isbn + has = True + if not has: + m.add('identifier', mi.isbn, scheme='ISBN') + if mi.language: + m.clear('language') + m.add('language', mi.language) + if mi.series_index is not None: + m.clear('series_index') + m.add('series_index', mi.format_series_index()) + if mi.rating is not None: + m.clear('rating') + m.add('rating', '%.2f'%mi.rating) + if mi.tags: + m.clear('subject') + for t in mi.tags: + m.add('subject', t) + + class MergeMetadata(object): 'Merge in user metadata, including cover' - def __call__(self, oeb, mi, prefer_metadata_cover=False, - prefer_author_sort=False): - from calibre.ebooks.oeb.base import DC + def __call__(self, oeb, mi, opts): self.oeb, self.log = oeb, oeb.log m = self.oeb.metadata + meta_info_to_oeb_metadata(mi, m, oeb.log) self.log('Merging user specified metadata...') - if mi.title: - m.clear('title') - m.add('title', mi.title) - if mi.title_sort: - if not m.title: - m.add(DC('title'), mi.title_sort) - m.title[0].file_as = mi.title_sort - if prefer_author_sort and mi.author_sort: - mi.authors = [mi.author_sort] - if mi.authors: - m.filter('creator', lambda x : x.role.lower() == 'aut') - for a in mi.authors: - attrib = {'role':'aut'} - if mi.author_sort: - attrib['file_as'] = mi.author_sort - m.add('creator', a, attrib=attrib) - if mi.comments: - m.clear('description') - m.add('description', mi.comments) - if mi.publisher: - m.clear('publisher') - m.add('publisher', mi.publisher) - if mi.series: - m.clear('series') - m.add('series', mi.series) - if mi.isbn: - has = False - for x in m.identifier: - if x.scheme.lower() == 'isbn': - x.content = mi.isbn - has = True - if not has: - m.add('identifier', mi.isbn, scheme='ISBN') - if mi.language: - m.clear('language') - m.add('language', mi.language) - if mi.book_producer: - m.filter('creator', lambda x : x.role.lower() == 'bkp') - m.add('creator', mi.book_producer, role='bkp') - if mi.series_index is not None: - m.clear('series_index') - m.add('series_index', mi.format_series_index()) - if mi.rating is not None: - m.clear('rating') - m.add('rating', '%.2f'%mi.rating) - if mi.tags: - m.clear('subject') - for t in mi.tags: - m.add('subject', t) - - cover_id = self.set_cover(mi, prefer_metadata_cover) + cover_id = self.set_cover(mi, opts.prefer_metadata_cover) m.clear('cover') if cover_id is not None: m.add('cover', cover_id) From 6cf45cecbe339d96695a279b57d08fa4e6034551 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Jun 2009 11:44:21 -0700 Subject: [PATCH 08/10] Fix #2709 (Unhandled Exception when adding meta data & covers) --- src/calibre/gui2/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index ee4ccd43d9..fdf630c620 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -934,9 +934,9 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): details = ['%s: %s'%(title, reason) for title, reason in x.failures.values()] details = '%s\n'%('\n'.join(details)) - warning_dialog(_('Failed to download some metadata'), + warning_dialog(self, _('Failed to download some metadata'), _('Failed to download metadata for the following:'), - details, self).exec_() + det_msg=details).exec_() else: err = _('Failed to download metadata:') error_dialog(self, _('Error'), err, det_msg=x.tb).exec_() From c1b818d639ab04cf8fd9e6028bc502a0e15f0d04 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Jun 2009 11:59:52 -0700 Subject: [PATCH 09/10] Fix #2698 (ebook-viewer.exe don't recognizes some .cbr files) --- src/calibre/gui2/main.py | 2 -- src/calibre/libunrar.py | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index fdf630c620..7766c61fe5 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -942,8 +942,6 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): error_dialog(self, _('Error'), err, det_msg=x.tb).exec_() - - def edit_metadata(self, checked, bulk=None): ''' Edit metadata of selected books in library. diff --git a/src/calibre/libunrar.py b/src/calibre/libunrar.py index 22f03731e8..40da8e3efc 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 +from calibre import iswindows, load_library, CurrentDir, prints from calibre.ptempfile import TemporaryDirectory _librar_name = 'libunrar' @@ -173,7 +173,7 @@ def extract(path, dir): try: if open_archive_data.OpenResult != 0: raise UnRARException(_interpret_open_error(open_archive_data.OpenResult, path)) - print 'Archive:', path + prints('Archive:', path) #print get_archive_info(open_archive_data.Flags) header_data = RARHeaderDataEx(CmtBuf=None) #_libunrar.RARSetCallback(arc_data, callback_func, mode) From e1aec91911786b82d2eb39047153687574de37b2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Jun 2009 16:09:25 -0700 Subject: [PATCH 10/10] Improve file locking on windows for config files. Should fix #2598 (Calibre 0.6b6 Crash While Converting) --- src/calibre/ebooks/oeb/reader.py | 2 +- src/calibre/ebooks/pdf/pdftohtml.py | 2 +- src/calibre/utils/lock.py | 109 ++++++++++++++++++++++++---- 3 files changed, 97 insertions(+), 16 deletions(-) diff --git a/src/calibre/ebooks/oeb/reader.py b/src/calibre/ebooks/oeb/reader.py index 9a637c1a24..ab8d9976fd 100644 --- a/src/calibre/ebooks/oeb/reader.py +++ b/src/calibre/ebooks/oeb/reader.py @@ -140,7 +140,7 @@ class OEBReader(object): mi.language = get_lang() meta_info_to_oeb_metadata(mi, self.oeb.metadata, self.logger) bookid = "urn:uuid:%s" % str(uuid.uuid4()) if mi.application_id is None \ - else mi.applicaion_id + else mi.application_id self.oeb.metadata.add('identifier', bookid, id='calibre-uuid') self.oeb.uid = self.oeb.metadata.identifier[0] diff --git a/src/calibre/ebooks/pdf/pdftohtml.py b/src/calibre/ebooks/pdf/pdftohtml.py index 11631c7fe0..9293d616ac 100644 --- a/src/calibre/ebooks/pdf/pdftohtml.py +++ b/src/calibre/ebooks/pdf/pdftohtml.py @@ -69,7 +69,7 @@ def pdftohtml(output_dir, pdf_path, no_images): if not os.path.exists(index) or os.stat(index).st_size < 100: raise DRMError() - with open(index, 'rb+wb') as i: + with open(index, 'r+b') as i: raw = i.read() raw = '\n' + raw i.seek(0) diff --git a/src/calibre/utils/lock.py b/src/calibre/utils/lock.py index b5d165dcb6..5098c78f90 100644 --- a/src/calibre/utils/lock.py +++ b/src/calibre/utils/lock.py @@ -13,6 +13,96 @@ import time, atexit, os class LockError(Exception): pass +class WindowsExclFile(object): + + def __init__(self, path, timeout=20): + self.name = path + import win32file as w + import pywintypes + + while timeout > 0: + timeout -= 1 + try: + self._handle = w.CreateFile(path, + w.GENERIC_READ|w.GENERIC_WRITE, # Open for reading and writing + 0, # Open exclusive + None, # No security attributes + w.OPEN_ALWAYS, # If file does not exist, create it + w.FILE_ATTRIBUTE_NORMAL, #Normal attributes + None, #No template file + ) + break + except pywintypes.error, err: + if getattr(err, 'args', [-1])[0] in (0x20, 0x21): + time.sleep(1) + continue + else: + raise + + def seek(self, amt, frm=0): + import win32file as w + if frm not in (0, 1, 2): + raise ValueError('Invalid from for seek: %s'%frm) + frm = {0:w.FILE_BEGIN, 1: w.FILE_CURRENT, 2:w.FILE_END}[frm] + if frm is w.FILE_END: + amt = 0 - amt + w.SetFilePointer(self._handle, amt, frm) + + def tell(self): + import win32file as w + return w.SetFilePointer(self._handle, 0, w.FILE_CURRENT) + + def flush(self): + import win32file as w + w.FlushFileBuffers(self._handle) + + def close(self): + if self._handle is not None: + import win32file as w + self.flush() + w.CloseHandle(self._handle) + self._handle = None + + def read(self, bytes=-1): + import win32file as w + sz = w.GetFileSize(self._handle) + max = sz - self.tell() + if bytes < 0: bytes = max + bytes = min(max, bytes) + if bytes < 1: + return '' + hr, ans = w.ReadFile(self._handle, bytes, None) + if hr != 0: + raise IOError('Error reading file: %s'%hr) + return ans + + def readlines(self, sizehint=-1): + return self.read().splitlines() + + def write(self, bytes): + if isinstance(bytes, unicode): + bytes = bytes.encode('utf-8') + import win32file as w + w.WriteFile(self._handle, bytes, None) + + def truncate(self, size=None): + import win32file as w + pos = self.tell() + if size is None: + size = pos + t = min(size, pos) + self.seek(t) + w.SetEndOfFile(self._handle) + self.seek(pos) + + def isatty(self): + return False + + @property + def closed(self): + return self._handle is None + + class ExclusiveFile(object): def __init__(self, path, timeout=15): @@ -20,17 +110,10 @@ class ExclusiveFile(object): self.timeout = timeout def __enter__(self): - self.file = open(self.path, 'a+b') + self.file = WindowsExclFile(self.path, self.timeout) if iswindows else open(self.path, 'a+b') self.file.seek(0) timeout = self.timeout - if iswindows: - name = ('Local\\'+(__appname__+self.file.name).replace('\\', '_'))[:201] - while self.timeout < 0 or timeout >= 0: - self.mutex = win32event.CreateMutex(None, False, name) - if win32api.GetLastError() != winerror.ERROR_ALREADY_EXISTS: break - time.sleep(1) - timeout -= 1 - else: + if not iswindows: while self.timeout < 0 or timeout >= 0: try: fcntl.lockf(self.file.fileno(), fcntl.LOCK_EX|fcntl.LOCK_NB) @@ -38,14 +121,12 @@ class ExclusiveFile(object): except IOError: time.sleep(1) timeout -= 1 - if timeout < 0 and self.timeout >= 0: - self.file.close() - raise LockError + if timeout < 0 and self.timeout >= 0: + self.file.close() + raise LockError('Failed to lock') return self.file def __exit__(self, type, value, traceback): - if iswindows: - win32api.CloseHandle(self.mutex) self.file.close() def _clean_lock_file(file):