fix undo bugs, add progress, improve progress of check media db

This commit is contained in:
Damien Elmes 2009-01-16 18:54:32 +09:00
parent 8bdb1b8c26
commit 87fbd896fc
2 changed files with 16 additions and 5 deletions

View file

@ -1857,7 +1857,7 @@ insert into undoLog values (null, 'insert into %(t)s (rowid""" % {'t': table}
self.redoStack = []
def _latestUndoRow(self):
return self.s.scalar("select max(rowid) from undoLog")
return self.s.scalar("select max(rowid) from undoLog") or 0
def _undoredo(self, src, dst):
self.s.flush()
@ -1868,15 +1868,21 @@ insert into undoLog values (null, 'insert into %(t)s (rowid""" % {'t': table}
(start, end) = (u[1], u[2])
if end is None:
end = self._latestUndoRow()
self.startProgress(_("Undo/Redo"), 0, 22)
sql = self.s.column0("""
select sql from undoLog where
seq > :s and seq <= :e order by seq desc""", s=start, e=end)
mod = len(sql) / 20
self.updateProgress(_("Applying changes..."))
newstart = self._latestUndoRow()
for s in sql:
for c, s in enumerate(sql):
if mod and not c % mod:
self.updateProgress()
#print "--", s.encode("utf-8")[0:30]
self.s.execute(s)
self.engine.execute(s)
newend = self._latestUndoRow()
dst.append([u[0], newstart, newend])
self.finishProgress()
def undo(self):
self._undoredo(self.undoStack, self.redoStack)

View file

@ -119,10 +119,14 @@ def rebuildMediaDir(deck, deleteRefs=False, dirty=True):
unusedFileCount = 0
missingFileCount = 0
deck.mediaDir(create=True)
deck.startProgress(_("Check Media DB"), 0, 6)
deck.startProgress(_("Check Media DB"), 0, 16)
# rename all files to checksum versions, note non-renamed ones
deck.updateProgress(_("Checksum files..."))
for oldBase in os.listdir(unicode(deck.mediaDir())):
files = os.listdir(unicode(deck.mediaDir()))
mod = len(files) / 10
for c, oldBase in enumerate(files):
if mod and not c % mod:
deck.updateProgress()
oldPath = os.path.join(deck.mediaDir(), oldBase)
if oldBase.startswith("."):
continue
@ -133,6 +137,7 @@ def rebuildMediaDir(deck, deleteRefs=False, dirty=True):
existingFiles[oldBase] = 1
else:
renamedFiles[oldBase] = newBase
deck.updateProgress(value=10)
# now look through all fields, and update references to files
deck.updateProgress(_("Scan fields..."))
for (id, fid, val) in deck.s.all(