From c226e38062407d83de21cb2c1fa8068b16fc6796 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 16 Jul 2009 12:24:16 -0600 Subject: [PATCH] Don't use Qt to process metadata covers as it causes image corruption in some windows installs --- src/calibre/gui2/dialogs/metadata_single.py | 10 ++++++++-- src/calibre/gui2/widgets.py | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 723e1d01b9..9d698bd689 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -88,6 +88,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): pix = QPixmap(':/images/book.svg') self.cover.setPixmap(pix) self.cover_changed = True + self.cover_data = None def select_cover(self, checked): files = choose_images(self, 'change cover dialog', @@ -121,6 +122,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.cover.setPixmap(pix) self.cover_changed = True self.cpixmap = pix + self.cover_data = cover def add_format(self, x): @@ -191,6 +193,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.cover.setPixmap(pix) self.cover_changed = True self.cpixmap = pix + self.cover_data = cdata def sync_formats(self): old_extensions, new_extensions, paths = set(), set(), {} @@ -300,6 +303,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): pm.loadFromData(cover) if not pm.isNull(): self.cover.setPixmap(pm) + self.cover_data = cover def show_format(self, item, *args): fmt = item.ext @@ -319,6 +323,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): def cover_dropped(self): self.cover_changed = True + self.cover_data = self.cover.cover_data def initialize_combos(self): self.initalize_authors() @@ -430,6 +435,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.cover.setPixmap(pix) self.cover_changed = True self.cpixmap = pix + self.cover_data = self.cover_fetcher.cover_data finally: self.fetch_cover_button.setEnabled(True) self.unsetCursor() @@ -511,8 +517,8 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): d = self.pubdate.date() self.db.set_pubdate(self.id, datetime(d.year(), d.month(), d.day())) - if self.cover_changed: - self.db.set_cover(self.id, self.cover.pixmap()) + if self.cover_changed and self.cover_data is not None: + self.db.set_cover(self.id, self.cover_data) QDialog.accept(self) if callable(self.accepted_callback): self.accepted_callback(self.id) diff --git a/src/calibre/gui2/widgets.py b/src/calibre/gui2/widgets.py index fc77d3cd08..0457f6db6e 100644 --- a/src/calibre/gui2/widgets.py +++ b/src/calibre/gui2/widgets.py @@ -141,6 +141,7 @@ class ImageView(QLabel): if not pmap.isNull(): self.setPixmap(pmap) event.accept() + self.cover_data = open(path, 'rb').read() self.emit(SIGNAL('cover_changed()'), paths, Qt.QueuedConnection) break