type in the answer limits to a single field now

This commit is contained in:
Damien Elmes 2009-01-21 01:22:17 +09:00
parent 75b865d52e
commit a652a0979d
3 changed files with 62 additions and 47 deletions

View file

@ -293,7 +293,20 @@ class ModelProperties(QDialog):
self.dialog.cardAnswer.setPlainText(card.aformat.replace("<br>", "\n"))
self.dialog.questionInAnswer.setChecked(card.questionInAnswer)
self.dialog.allowEmptyAnswer.setChecked(card.allowEmptyAnswer)
self.dialog.typeAnswer.setChecked(card.typeAnswer)
self.dialog.typeAnswer.clear()
self.fieldNames = self.deck.s.column0("""
select fieldModels.name as n from fieldModels, cardModels
where cardModels.modelId = fieldModels.modelId
and cardModels.id = :id
order by n""", id=card.id)
s = [_("Don't ask me to type in the answer")]
s += [_("Compare with field '%s'") % f for f in self.fieldNames]
self.dialog.typeAnswer.insertItems(0, QStringList(s))
try:
idx = self.fieldNames.index(card.typeAnswer)
except ValueError:
idx = -1
self.dialog.typeAnswer.setCurrentIndex(idx + 1)
self.updateToggleButtonText(card)
def enableCardMoveButtons(self):
@ -330,7 +343,11 @@ class ModelProperties(QDialog):
changed = changed or changed2
self.updateField(card, 'questionInAnswer', self.dialog.questionInAnswer.isChecked())
self.updateField(card, 'allowEmptyAnswer', self.dialog.allowEmptyAnswer.isChecked())
self.updateField(card, 'typeAnswer', self.dialog.typeAnswer.isChecked())
idx = self.dialog.typeAnswer.currentIndex()
if not idx:
self.updateField(card, 'typeAnswer', u"")
else:
self.updateField(card, 'typeAnswer', self.fieldNames[idx-1])
if changed:
# need to generate all question/answers for this card
self.deck.updateCardsFromModel(self.m)

View file

@ -136,27 +136,32 @@ class View(object):
"Show the answer."
a = self.main.currentCard.htmlAnswer()
if self.main.currentCard.cardModel.typeAnswer:
cor = stripHTML(self.main.currentCard.answer)
given = unicode(self.main.typeAnswerField.text())
res = []
if len(given) < len(cor):
given += " " * (len(cor) - len(given))
sz = self.main.currentCard.cardModel.answerFontSize
ok = "background: %s; color: #000; font-size: %dpx" % (
passedCharColour, sz)
bad = "background: %s; color: #000; font-size: %dpx;" % (
failedCharColour, sz)
for (i, c) in enumerate(given):
try:
yes = c == cor[i]
except IndexError:
yes = False
if yes:
res.append(
"<span style='%s'>%s</span>" % (ok, c))
else:
res.append("<span style='%s'>%s</span>" % (bad, c))
a = "".join(res) + "<br>" + a
try:
cor = stripHTML(self.main.currentCard.fact[
self.main.currentCard.cardModel.typeAnswer])
except KeyError:
cor = ""
if cor:
given = unicode(self.main.typeAnswerField.text())
res = []
if len(given) < len(cor):
given += " " * (len(cor) - len(given))
sz = self.main.currentCard.cardModel.answerFontSize
ok = "background: %s; color: #000; font-size: %dpx" % (
passedCharColour, sz)
bad = "background: %s; color: #000; font-size: %dpx;" % (
failedCharColour, sz)
for (i, c) in enumerate(given):
try:
yes = c == cor[i]
except IndexError:
yes = False
if yes:
res.append(
"<span style='%s'>%s</span>" % (ok, c))
else:
res.append("<span style='%s'>%s</span>" % (bad, c))
a = "".join(res) + "<br>" + a
self.write(self.center('<span id=answer />' +
self.mungeQA(self.main.deck, a)))
if self.state != self.oldState:

View file

@ -387,13 +387,6 @@
</property>
</widget>
</item>
<item row="3" column="1" >
<widget class="QCheckBox" name="questionInAnswer" >
<property name="text" >
<string>Hide the question when showing answer</string>
</property>
</widget>
</item>
<item row="2" column="1" >
<widget class="QTextEdit" name="cardAnswer" >
<property name="sizePolicy" >
@ -457,13 +450,6 @@
</property>
</widget>
</item>
<item row="4" column="1" >
<widget class="QCheckBox" name="allowEmptyAnswer" >
<property name="text" >
<string>Allow the answer to be blank</string>
</property>
</widget>
</item>
<item row="0" column="0" >
<widget class="QLabel" name="label_12" >
<property name="text" >
@ -490,10 +476,20 @@
</property>
</widget>
</item>
<item row="5" column="1" >
<widget class="QCheckBox" name="typeAnswer" >
<item row="3" column="1" >
<widget class="QComboBox" name="typeAnswer" />
</item>
<item row="4" column="1" >
<widget class="QCheckBox" name="questionInAnswer" >
<property name="text" >
<string>Ask me to type in the answer</string>
<string>Hide the question when showing answer</string>
</property>
</widget>
</item>
<item row="5" column="1" >
<widget class="QCheckBox" name="allowEmptyAnswer" >
<property name="text" >
<string>Allow the answer to be blank</string>
</property>
</widget>
</item>
@ -544,9 +540,6 @@
<tabstop>cardName</tabstop>
<tabstop>cardQuestion</tabstop>
<tabstop>cardAnswer</tabstop>
<tabstop>questionInAnswer</tabstop>
<tabstop>allowEmptyAnswer</tabstop>
<tabstop>typeAnswer</tabstop>
<tabstop>buttonBox</tabstop>
</tabstops>
<resources/>
@ -558,8 +551,8 @@
<slot>accept()</slot>
<hints>
<hint type="sourcelabel" >
<x>248</x>
<y>254</y>
<x>252</x>
<y>513</y>
</hint>
<hint type="destinationlabel" >
<x>157</x>
@ -574,8 +567,8 @@
<slot>reject()</slot>
<hints>
<hint type="sourcelabel" >
<x>316</x>
<y>260</y>
<x>320</x>
<y>513</y>
</hint>
<hint type="destinationlabel" >
<x>286</x>