diff --git a/ankiqt/ui/facteditor.py b/ankiqt/ui/facteditor.py
index ea9cf1af6..2036f7ab4 100644
--- a/ankiqt/ui/facteditor.py
+++ b/ankiqt/ui/facteditor.py
@@ -15,6 +15,8 @@ import ankiqt
from ankiqt.ui.utils import mungeQA, saveGeom, restoreGeom
from anki.hooks import addHook
+clozeColour = "#0000ff"
+
class FactEditor(object):
"""An editor for new/existing facts.
@@ -34,6 +36,7 @@ class FactEditor(object):
self.onFactInvalid = None
self.lastFocusedEdit = None
self.changeTimer = None
+ self.lastCloze = None
addHook("deckClosed", self.deckClosedHook)
def setFact(self, fact, noFocus=False, check=False):
@@ -612,27 +615,34 @@ class FactEditor(object):
dst = self.fields.values()[0][1]
if dst == w:
return
- # create
- s = unicode(src.toHtml())
- s2 = re.sub("\(.+?\)", "(...)", s)
# check if there's alredy something there
- src1 = stripHTML(tidyHTML(unicode(src.toHtml())).strip())
- dst1 = stripHTML(tidyHTML(unicode(dst.toHtml())).strip())
- if dst1:
- # is it the cloze we just generated?
- if (re.sub("\(.+?\)", "", src1) ==
- re.sub("\(.+?\)", "", dst1)):
- # then undo
- src.setHtml(dst.toHtml())
+ oldDst = dst.toHtml()
+ if unicode(dst.toPlainText()):
+ if self.lastCloze and self.lastCloze[1] == oldDst:
+ src.setHtml(self.lastCloze[0])
dst.setHtml("")
+ self.lastCloze = None
+ self.saveFields()
+ return
else:
ui.utils.showInfo(_("Next field must be blank."),
parent=self.parent)
return
- else:
- # ok to add
- src.setHtml(s2)
- dst.setHtml(s)
+ # create
+ s = unicode(src.toHtml())
+ def repl(match):
+ exp = ""
+ if match.group(2):
+ exp = match.group(2)
+ return '(...%s)' % (
+ clozeColour, exp)
+ new = re.sub("\(.+?(:(.+?))?\)", repl, s)
+ old = re.sub("\((.+?)(:.+?)?\)", '\\1'
+ % clozeColour, s)
+ oldSrc = unicode(src.toHtml())
+ src.setHtml(new)
+ dst.setHtml(old)
+ self.lastCloze = (oldSrc, unicode(dst.toHtml()))
self.saveFields()
def onClozeUndo(self):