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.cardAnswer.setPlainText(card.aformat.replace("<br>", "\n"))
self.dialog.questionInAnswer.setChecked(card.questionInAnswer) self.dialog.questionInAnswer.setChecked(card.questionInAnswer)
self.dialog.allowEmptyAnswer.setChecked(card.allowEmptyAnswer) 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) self.updateToggleButtonText(card)
def enableCardMoveButtons(self): def enableCardMoveButtons(self):
@ -330,7 +343,11 @@ class ModelProperties(QDialog):
changed = changed or changed2 changed = changed or changed2
self.updateField(card, 'questionInAnswer', self.dialog.questionInAnswer.isChecked()) self.updateField(card, 'questionInAnswer', self.dialog.questionInAnswer.isChecked())
self.updateField(card, 'allowEmptyAnswer', self.dialog.allowEmptyAnswer.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: if changed:
# need to generate all question/answers for this card # need to generate all question/answers for this card
self.deck.updateCardsFromModel(self.m) self.deck.updateCardsFromModel(self.m)

View file

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

View file

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