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 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.gui2.convert.metadata_ui import Ui_Form
from calibre.ebooks.metadata import authors_to_string, string_to_authors, \ from calibre.ebooks.metadata import authors_to_string, string_to_authors, \
MetaInformation MetaInformation
@ -185,7 +185,7 @@ class MetadataWidget(Widget, Ui_Form):
opf.render(self.opf_file) opf.render(self.opf_file)
self.opf_file.close() self.opf_file.close()
if self.cover_changed: 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) cover = self.db.cover(self.book_id, index_is_id=True)
if cover: if cover:
cf = PersistentTemporaryFile('.jpeg') 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 PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog
from calibre.gui2 import qstring_to_unicode, error_dialog, file_icon_provider, \ 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.metadata_single_ui import Ui_MetadataSingleDialog
from calibre.gui2.dialogs.fetch_metadata import FetchMetadata from calibre.gui2.dialogs.fetch_metadata import FetchMetadata
from calibre.gui2.dialogs.tag_editor import TagEditor 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())) self.db.set_pubdate(self.id, datetime(d.year(), d.month(), d.day()))
if self.cover_changed: 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) QDialog.accept(self)
if callable(self.accepted_callback): if callable(self.accepted_callback):
self.accepted_callback(self.id) 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 itertools import repeat
from datetime import datetime from datetime import datetime
from PyQt4.QtCore import QCoreApplication, QThread, QReadWriteLock from PyQt4.QtCore import QThread, QReadWriteLock
from PyQt4.QtGui import QApplication, QImage try:
__app = None 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.ebooks.metadata import title_sort
from calibre.library.database import LibraryDatabase from calibre.library.database import LibraryDatabase
@ -819,14 +825,11 @@ class LibraryDatabase2(LibraryDatabase):
if callable(getattr(data, 'save', None)): if callable(getattr(data, 'save', None)):
data.save(path) data.save(path)
else: else:
if not QCoreApplication.instance(): f = data
global __app if not callable(getattr(data, 'read', None)):
__app = QApplication([]) f = cStringIO.StringIO(data)
p = QImage() im = PILImage.open(f)
if callable(getattr(data, 'read', None)): im.convert('RGB').save(path, 'JPEG')
data = data.read()
p.loadFromData(data)
p.save(path)
def all_formats(self): def all_formats(self):
formats = self.conn.get('SELECT format from data') formats = self.conn.get('SELECT format from data')
@ -1528,6 +1531,7 @@ class LibraryDatabase2(LibraryDatabase):
return data return data
def migrate_old(self, db, progress): 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 header = _(u'<p>Migrating old database to ebook library in %s<br><center>')%self.library_path
progress.setValue(0) progress.setValue(0)
progress.setLabelText(header) progress.setLabelText(header)