mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -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 = []
|
self.redoStack = []
|
||||||
|
|
||||||
def _latestUndoRow(self):
|
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):
|
def _undoredo(self, src, dst):
|
||||||
self.s.flush()
|
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])
|
(start, end) = (u[1], u[2])
|
||||||
if end is None:
|
if end is None:
|
||||||
end = self._latestUndoRow()
|
end = self._latestUndoRow()
|
||||||
|
self.startProgress(_("Undo/Redo"), 0, 22)
|
||||||
sql = self.s.column0("""
|
sql = self.s.column0("""
|
||||||
select sql from undoLog where
|
select sql from undoLog where
|
||||||
seq > :s and seq <= :e order by seq desc""", s=start, e=end)
|
seq > :s and seq <= :e order by seq desc""", s=start, e=end)
|
||||||
|
mod = len(sql) / 20
|
||||||
|
self.updateProgress(_("Applying changes..."))
|
||||||
newstart = self._latestUndoRow()
|
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]
|
#print "--", s.encode("utf-8")[0:30]
|
||||||
self.s.execute(s)
|
self.engine.execute(s)
|
||||||
newend = self._latestUndoRow()
|
newend = self._latestUndoRow()
|
||||||
dst.append([u[0], newstart, newend])
|
dst.append([u[0], newstart, newend])
|
||||||
|
self.finishProgress()
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._undoredo(self.undoStack, self.redoStack)
|
self._undoredo(self.undoStack, self.redoStack)
|
||||||
|
|
|
@ -119,10 +119,14 @@ def rebuildMediaDir(deck, deleteRefs=False, dirty=True):
|
||||||
unusedFileCount = 0
|
unusedFileCount = 0
|
||||||
missingFileCount = 0
|
missingFileCount = 0
|
||||||
deck.mediaDir(create=True)
|
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
|
# rename all files to checksum versions, note non-renamed ones
|
||||||
deck.updateProgress(_("Checksum files..."))
|
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)
|
oldPath = os.path.join(deck.mediaDir(), oldBase)
|
||||||
if oldBase.startswith("."):
|
if oldBase.startswith("."):
|
||||||
continue
|
continue
|
||||||
|
@ -133,6 +137,7 @@ def rebuildMediaDir(deck, deleteRefs=False, dirty=True):
|
||||||
existingFiles[oldBase] = 1
|
existingFiles[oldBase] = 1
|
||||||
else:
|
else:
|
||||||
renamedFiles[oldBase] = newBase
|
renamedFiles[oldBase] = newBase
|
||||||
|
deck.updateProgress(value=10)
|
||||||
# now look through all fields, and update references to files
|
# now look through all fields, and update references to files
|
||||||
deck.updateProgress(_("Scan fields..."))
|
deck.updateProgress(_("Scan fields..."))
|
||||||
for (id, fid, val) in deck.s.all(
|
for (id, fid, val) in deck.s.all(
|
||||||
|
|
Loading…
Reference in a new issue