Simplify setting of covers in database and remove unneccessary Qt dependancy

This commit is contained in:
Kovid Goyal 2009-07-13 17:37:03 -06:00
parent 272437e901
commit 7afc38ba2c
3 changed files with 19 additions and 15 deletions

View File

@ -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')

View File

@ -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)

View File

@ -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'<p>Migrating old database to ebook library in %s<br><center>')%self.library_path
progress.setValue(0)
progress.setLabelText(header)