This commit is contained in:
Kovid Goyal 2008-06-10 17:59:56 -07:00
parent 77e877e564
commit 706059d838
5 changed files with 25 additions and 16 deletions

View File

@ -127,7 +127,6 @@ class MetadataSingleDialog(QDialog, Ui_MetadataSingleDialog):
self.formats_changed = False self.formats_changed = False
self.cover_changed = False self.cover_changed = False
self.cpixmap = None self.cpixmap = None
self.changed = False
self.cover.setAcceptDrops(True) self.cover.setAcceptDrops(True)
self.connect(self.cover, SIGNAL('cover_changed()'), self.cover_dropped) self.connect(self.cover, SIGNAL('cover_changed()'), self.cover_dropped)
QObject.connect(self.cover_button, SIGNAL("clicked(bool)"), \ QObject.connect(self.cover_button, SIGNAL("clicked(bool)"), \
@ -331,6 +330,4 @@ class MetadataSingleDialog(QDialog, Ui_MetadataSingleDialog):
self.db.set_comment(self.id, qstring_to_unicode(self.comments.toPlainText())) self.db.set_comment(self.id, qstring_to_unicode(self.comments.toPlainText()))
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, pixmap_to_data(self.cover.pixmap()))
self.changed = True
QDialog.accept(self) QDialog.accept(self)

View File

@ -125,6 +125,11 @@ class BooksModel(QAbstractTableModel):
db = LibraryDatabase(os.path.expanduser(db)) db = LibraryDatabase(os.path.expanduser(db))
self.db = db self.db = db
def refresh_ids(self, ids):
rows = self.db.refresh_ids(ids)
for row in rows:
self.emit(SIGNAL('dataChanged(QModelIndex,QModelIndex)'), self.index(row, 0), self.index(row, self.columnCount(None)-1))
def close(self): def close(self):
self.db.close() self.db.close()
self.db = None self.db = None

View File

@ -2,13 +2,14 @@ __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
import os, sys, textwrap, collections, traceback, shutil, time import os, sys, textwrap, collections, traceback, shutil, time
from xml.parsers.expat import ExpatError from xml.parsers.expat import ExpatError
from functools import partial
from PyQt4.QtCore import Qt, SIGNAL, QObject, QCoreApplication, \ from PyQt4.QtCore import Qt, SIGNAL, QObject, QCoreApplication, \
QVariant, QThread, QString, QSize, QUrl QVariant, QThread, QString, QSize, QUrl
from PyQt4.QtGui import QPixmap, QColor, QPainter, QMenu, QIcon, QMessageBox, \ from PyQt4.QtGui import QPixmap, QColor, QPainter, QMenu, QIcon, QMessageBox, \
QToolButton, QDialog, QSizePolicy, QDesktopServices QToolButton, QDialog, QDesktopServices
from PyQt4.QtSvg import QSvgRenderer from PyQt4.QtSvg import QSvgRenderer
from calibre import __version__, __appname__, islinux, sanitize_file_name, launch, \ from calibre import __version__, __appname__, islinux, sanitize_file_name, \
Settings, pictureflowerror, iswindows, isosx Settings, pictureflowerror, iswindows, isosx
from calibre.ptempfile import PersistentTemporaryFile from calibre.ptempfile import PersistentTemporaryFile
from calibre.ebooks.metadata.meta import get_metadata, get_filename_pat, set_filename_pat from calibre.ebooks.metadata.meta import get_metadata, get_filename_pat, set_filename_pat
@ -75,6 +76,7 @@ class Main(MainWindow, Ui_MainWindow):
self.delete_memory = {} self.delete_memory = {}
self.conversion_jobs = {} self.conversion_jobs = {}
self.persistent_files = [] self.persistent_files = []
self.metadata_dialogs = []
self.viewer_job_id = 1 self.viewer_job_id = 1
self.default_thumbnail = None self.default_thumbnail = None
self.device_error_dialog = ConversionErrorDialog(self, _('Error communicating with device'), ' ') self.device_error_dialog = ConversionErrorDialog(self, _('Error communicating with device'), ' ')
@ -568,15 +570,13 @@ class Main(MainWindow, Ui_MainWindow):
d = error_dialog(self, _('Cannot edit metadata'), _('No books selected')) d = error_dialog(self, _('Cannot edit metadata'), _('No books selected'))
d.exec_() d.exec_()
return return
changed = False
for row in rows: for row in rows:
if MetadataSingleDialog(self, row.row(), d = MetadataSingleDialog(self, row.row(),
self.library_view.model().db).changed: self.library_view.model().db)
changed = True self.connect(d, SIGNAL('accepted()'), partial(self.metadata_edited, d.id), Qt.QueuedConnection)
if changed: def metadata_edited(self, id):
self.library_view.model().resort(reset=False) self.library_view.model().refresh_ids([id])
self.library_view.model().research()
def edit_bulk_metadata(self, checked): def edit_bulk_metadata(self, checked):
''' '''

View File

@ -870,6 +870,13 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE;
self.data = self.cache self.data = self.cache
self.conn.commit() self.conn.commit()
def refresh_ids(self, ids):
indices = map(self.index, ids)
for id, idx in zip(ids, indices):
row = self.conn.execute('SELECT * from meta WHERE id=?', (id,)).fetchone()
self.data[idx] = row
return indices
def filter(self, filters, refilter=False, OR=False): def filter(self, filters, refilter=False, OR=False):
''' '''
Filter data based on filters. All the filters must match for an item to Filter data based on filters. All the filters must match for an item to

View File

@ -220,7 +220,7 @@ def build_linux():
vmware = ('vmware', '-q', '-x', '-n', vm) vmware = ('vmware', '-q', '-x', '-n', vm)
subprocess.Popen(vmware) subprocess.Popen(vmware)
print 'Waiting for linux to boot up...' print 'Waiting for linux to boot up...'
time.sleep(60) time.sleep(75)
check_call('ssh linux make -C /mnt/hgfs/giskard/work/calibre all egg linux_binary') check_call('ssh linux make -C /mnt/hgfs/giskard/work/calibre all egg linux_binary')
check_call('ssh linux sudo poweroff') check_call('ssh linux sudo poweroff')
@ -301,7 +301,7 @@ def main():
upload_docs() upload_docs()
upload_user_manual() upload_user_manual()
check_call('rm -f dist/*.bz2 dist/*.exe dist/*.dmg') check_call('rm -f dist/*.bz2 dist/*.exe dist/*.dmg')
check_call('python setup.py register upload') check_call('python setup.py register bdist_egg --exclude-source-files upload')
check_call('''rm -rf dist/* build/*''') check_call('''rm -rf dist/* build/*''')
if __name__ == '__main__': if __name__ == '__main__':