mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 08:46:37 -04:00
fix undo bugs, add progress, improve progress of check media db
This commit is contained in:
parent
8bdb1b8c26
commit
87fbd896fc
2 changed files with 16 additions and 5 deletions
12
anki/deck.py
12
anki/deck.py
|
@ -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)
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in a new issue