From 7afc38ba2cde8c7e8026c637a6c64b6df0d5fb39 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 13 Jul 2009 17:37:03 -0600 Subject: [PATCH] Simplify setting of covers in database and remove unneccessary Qt dependancy --- src/calibre/gui2/convert/metadata.py | 4 ++-- src/calibre/gui2/dialogs/metadata_single.py | 4 ++-- src/calibre/library/database2.py | 26 ++++++++++++--------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/calibre/gui2/convert/metadata.py b/src/calibre/gui2/convert/metadata.py index cfb248da74..5e633ba82d 100644 --- a/src/calibre/gui2/convert/metadata.py +++ b/src/calibre/gui2/convert/metadata.py @@ -10,7 +10,7 @@ import os, uuid from PyQt4.Qt import QPixmap, SIGNAL -from calibre.gui2 import choose_images, error_dialog, pixmap_to_data +from calibre.gui2 import choose_images, error_dialog from calibre.gui2.convert.metadata_ui import Ui_Form from calibre.ebooks.metadata import authors_to_string, string_to_authors, \ MetaInformation @@ -185,7 +185,7 @@ class MetadataWidget(Widget, Ui_Form): opf.render(self.opf_file) self.opf_file.close() if self.cover_changed: - self.db.set_cover(self.book_id, pixmap_to_data(self.cover.pixmap())) + self.db.set_cover(self.book_id, self.cover.pixmap()) cover = self.db.cover(self.book_id, index_is_id=True) if cover: cf = PersistentTemporaryFile('.jpeg') diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 13acd161ae..723e1d01b9 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -16,7 +16,7 @@ from PyQt4.QtCore import SIGNAL, QObject, QCoreApplication, Qt, QTimer, QThread, from PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog from calibre.gui2 import qstring_to_unicode, error_dialog, file_icon_provider, \ - choose_files, pixmap_to_data, choose_images, ResizableDialog + choose_files, choose_images, ResizableDialog from calibre.gui2.dialogs.metadata_single_ui import Ui_MetadataSingleDialog from calibre.gui2.dialogs.fetch_metadata import FetchMetadata from calibre.gui2.dialogs.tag_editor import TagEditor @@ -512,7 +512,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.db.set_pubdate(self.id, datetime(d.year(), d.month(), d.day())) if self.cover_changed: - self.db.set_cover(self.id, pixmap_to_data(self.cover.pixmap())) + self.db.set_cover(self.id, self.cover.pixmap()) QDialog.accept(self) if callable(self.accepted_callback): self.accepted_callback(self.id) diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 334cb78992..3af4002eae 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -11,9 +11,15 @@ import os, re, sys, shutil, cStringIO, glob, collections, textwrap, \ from itertools import repeat from datetime import datetime -from PyQt4.QtCore import QCoreApplication, QThread, QReadWriteLock -from PyQt4.QtGui import QApplication, QImage -__app = None +from PyQt4.QtCore import QThread, QReadWriteLock +try: + from PIL import Image as PILImage + PILImage +except ImportError: + import Image as PILImage + + +from PyQt4.QtGui import QImage from calibre.ebooks.metadata import title_sort from calibre.library.database import LibraryDatabase @@ -819,14 +825,11 @@ class LibraryDatabase2(LibraryDatabase): if callable(getattr(data, 'save', None)): data.save(path) else: - if not QCoreApplication.instance(): - global __app - __app = QApplication([]) - p = QImage() - if callable(getattr(data, 'read', None)): - data = data.read() - p.loadFromData(data) - p.save(path) + f = data + if not callable(getattr(data, 'read', None)): + f = cStringIO.StringIO(data) + im = PILImage.open(f) + im.convert('RGB').save(path, 'JPEG') def all_formats(self): formats = self.conn.get('SELECT format from data') @@ -1528,6 +1531,7 @@ class LibraryDatabase2(LibraryDatabase): return data def migrate_old(self, db, progress): + from PyQt4.QtCore import QCoreApplication header = _(u'

Migrating old database to ebook library in %s

')%self.library_path progress.setValue(0) progress.setLabelText(header)