diff --git a/resources/compiled_coffeescript.zip b/resources/compiled_coffeescript.zip index a2b20c7a69..78ef638abc 100644 Binary files a/resources/compiled_coffeescript.zip and b/resources/compiled_coffeescript.zip differ diff --git a/src/calibre/ebooks/pdf/render/engine.py b/src/calibre/ebooks/pdf/render/engine.py index a99059f635..8a724c9f20 100644 --- a/src/calibre/ebooks/pdf/render/engine.py +++ b/src/calibre/ebooks/pdf/render/engine.py @@ -89,23 +89,28 @@ class GraphicsState(object): def __call__(self, engine): canvas = engine.canvas ops = self.ops - if self.stack_reset_needed: + current_transform = ops.get('transform', None) + srn = self.stack_reset_needed + + if srn: canvas.restoreState() canvas.saveState() # Since we have reset the stack we need to re-apply all previous # operations ops = engine.graphics_state.ops.copy() + if 'clip' in ops and 'clip' not in self.ops: + # Re-apply previous clip, we do so before applying the + # transform as the transform could also have changed + prev_clip = ops.pop('clip', (None, None))[1] + engine.set_clip(prev_clip) ops.update(self.ops) self.ops = ops - # Apply operations - if 'transform' in ops: - engine.qt_system = ops['transform'] - set_transform(ops['transform'], canvas.transform) - if 'clip' in ops: prev_clip_path = engine.graphics_state.ops.get('clip', (None, None))[1] op, path = ops['clip'] + if current_transform is not None and path is not None: + path = current_transform.map(path) if op == Qt.ReplaceClip: pass elif op == Qt.IntersectClip: @@ -120,6 +125,11 @@ class GraphicsState(object): if path is not None: engine.set_clip(path) + # Apply operations + if current_transform is not None: + engine.qt_system = current_transform + set_transform(current_transform, canvas.transform) + if 'fill_color' in ops: canvas.setFillColor(ops['fill_color']) if 'stroke_color' in ops: @@ -137,7 +147,7 @@ class GraphicsState(object): if 'line_join' in ops: canvas.setLineJoin(ops['line_join']) - if not self.stack_reset_needed: + if not srn: # Add the operations from the previous state object that were not # updated in this state object. This is needed to allow stack # resetting to work. diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index c91ccbf0ae..959ef2fe5d 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.9.9\n" -"POT-Creation-Date: 2012-12-07 09:25+IST\n" -"PO-Revision-Date: 2012-12-07 09:25+IST\n" +"Project-Id-Version: calibre 0.9.10\n" +"POT-Creation-Date: 2012-12-14 09:05+IST\n" +"PO-Revision-Date: 2012-12-14 09:05+IST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -163,8 +163,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:261 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:402 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:174 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:202 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:191 @@ -1005,15 +1005,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:497 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1143 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1190 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3293 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3335 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3292 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3334 #, python-format msgid "%(num)d of %(tot)d" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:505 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1195 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3342 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3341 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:110 msgid "finished" msgstr "" @@ -1031,7 +1031,7 @@ msgid "" "Click 'Show Details' for a list." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2817 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2816 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 @@ -1054,13 +1054,13 @@ msgstr "" msgid "News" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2818 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2817 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3342 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3360 msgid "Catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3185 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3184 msgid "Communicate with iTunes." msgstr "" @@ -3420,7 +3420,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:222 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1074 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 @@ -3511,7 +3511,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:782 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "" @@ -4768,19 +4768,19 @@ msgid "None of the selected books are on the device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:263 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:363 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:321 msgid "Some of the selected books are on the attached device. Where do you want the selected files deleted from?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:333 msgid "The selected books will be permanently deleted and the files removed from your calibre library. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:355 msgid "The selected books will be permanently deleted from your device. Are you sure?" msgstr "" @@ -4931,8 +4931,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:514 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:830 msgid "Download failed" msgstr "" @@ -4964,7 +4964,7 @@ msgid "Download complete" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:892 msgid "Download log" msgstr "" @@ -8265,7 +8265,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/mtp_config.py:411 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:885 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:344 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:220 msgid "Copy to clipboard" @@ -8822,7 +8822,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:527 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:721 msgid "No matches found" msgstr "" @@ -9001,8 +9001,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:946 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1055 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:950 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1059 #: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -11581,7 +11581,7 @@ msgid "Previous Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:947 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:208 msgid "Back" @@ -12026,7 +12026,7 @@ msgid "Edit Metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:940 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:108 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 @@ -12163,15 +12163,15 @@ msgstr "" msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:207 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12179,62 +12179,62 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:292 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:442 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:446 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:468 msgid "Please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:500 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:519 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:528 msgid "Failed to find any books that match your search. Try making the search less specific. For example, use only the author's last name and a single distinctive word from the title.
To see the full log, click Show Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:632 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:636 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:639 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:796 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:800 #, python-format msgid "Downloading covers for %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:831 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:833 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:837 #, python-format msgid "Could not find any covers for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:835 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:839 #, python-format msgid "Found %(num)d covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:928 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1039 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 msgid "Downloading cover..." msgstr ""