mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 07:22:23 -04:00
updates for new cram code; remove priority 0 highlight in browser
This commit is contained in:
parent
8032c4a66b
commit
f549dfcfa9
5 changed files with 65 additions and 101 deletions
|
@ -323,15 +323,6 @@ class StatusDelegate(QItemDelegate):
|
|||
painter.save()
|
||||
painter.fillRect(option.rect, brush)
|
||||
painter.restore()
|
||||
if row[CARD_PRIORITY] == 0:
|
||||
# custom render
|
||||
if index.row() % 2 == 0:
|
||||
brush = QBrush(QColor(COLOUR_INACTIVE1))
|
||||
else:
|
||||
brush = QBrush(QColor(COLOUR_INACTIVE2))
|
||||
painter.save()
|
||||
painter.fillRect(option.rect, brush)
|
||||
painter.restore()
|
||||
elif "Marked" in row[CARD_TAGS]:
|
||||
if index.row() % 2 == 0:
|
||||
brush = QBrush(QColor(COLOUR_MARKED1))
|
||||
|
@ -968,12 +959,8 @@ where id in %s""" % ids2str(sf))
|
|||
self.updateAfterCardChange()
|
||||
|
||||
def cram(self):
|
||||
if ui.utils.askUser(
|
||||
_("Cram selected cards in new deck?"),
|
||||
help="CramMode",
|
||||
parent=self):
|
||||
self.close()
|
||||
self.parent.onCram(self.selectedCards())
|
||||
self.close()
|
||||
self.parent.onCram(self.selectedCards())
|
||||
|
||||
def onChangeModel(self):
|
||||
sf = self.selectedFacts()
|
||||
|
|
|
@ -329,6 +329,7 @@ Please do not file a bug report with Anki.<br>""")
|
|||
if self.deck.isEmpty():
|
||||
return self.moveToState("deckEmpty")
|
||||
else:
|
||||
# timeboxing only supported using the standard scheduler
|
||||
if not self.deck.finishScheduler:
|
||||
if (self.config['showStudyScreen'] and
|
||||
not self.deck.sessionStartTime):
|
||||
|
@ -828,10 +829,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
|
|||
def onClose(self):
|
||||
# allow focusOut to save
|
||||
if self.inMainWindow() or not self.app.activeWindow():
|
||||
isCram = self.isCramming()
|
||||
self.saveAndClose(hideWelcome=isCram)
|
||||
if isCram:
|
||||
self.loadDeck(self.config['recentDeckPaths'][0])
|
||||
self.saveAndClose()
|
||||
else:
|
||||
self.app.activeWindow().close()
|
||||
|
||||
|
@ -1739,7 +1737,8 @@ learnt today")
|
|||
self.mainWin.failedCardsOption.currentIndex())
|
||||
self.deck.flushMod()
|
||||
self.deck.reset()
|
||||
self.deck.startSession()
|
||||
if not self.deck.finishScheduler:
|
||||
self.deck.startSession()
|
||||
self.config['studyOptionsScreen'] = self.mainWin.tabWidget.currentIndex()
|
||||
self.moveToState("getQuestion")
|
||||
|
||||
|
@ -1890,26 +1889,12 @@ learnt today")
|
|||
##########################################################################
|
||||
|
||||
def onAddCard(self):
|
||||
if self.isCramming():
|
||||
ui.utils.showInfo(_("""\
|
||||
You are currently cramming. Please close this deck first."""))
|
||||
return
|
||||
ui.dialogs.get("AddCards", self)
|
||||
|
||||
def cramEditWarning(self):
|
||||
self.showToolTip(_("""\
|
||||
<h1>Cramming</h1>
|
||||
You are currently cramming. Any edits you make to this deck
|
||||
will be lost when you close the deck."""))
|
||||
|
||||
def onEditDeck(self):
|
||||
ui.dialogs.get("CardList", self)
|
||||
if self.isCramming():
|
||||
self.cramEditWarning()
|
||||
|
||||
def onEditCurrent(self):
|
||||
if self.isCramming():
|
||||
self.cramEditWarning()
|
||||
self.moveToState("editCurrentFact")
|
||||
|
||||
def onDeckProperties(self):
|
||||
|
@ -1940,10 +1925,6 @@ will be lost when you close the deck."""))
|
|||
##########################################################################
|
||||
|
||||
def onImport(self):
|
||||
if self.isCramming():
|
||||
ui.utils.showInfo(_("""\
|
||||
You are currently cramming. Please close this deck first."""))
|
||||
return
|
||||
if self.deck is None:
|
||||
self.onNew()
|
||||
if not self.deck.path:
|
||||
|
@ -1974,59 +1955,48 @@ window will open."""))
|
|||
e.exportInto(path)
|
||||
return (e, path)
|
||||
|
||||
def isCramming(self):
|
||||
return self.deck is not None and self.deck.name() == "cram"
|
||||
|
||||
def onCram(self, cardIds=[]):
|
||||
if self.isCramming():
|
||||
ui.utils.showInfo(
|
||||
_("Already cramming. Please close this deck first."))
|
||||
return
|
||||
if not self.save(required=True):
|
||||
return
|
||||
if not cardIds:
|
||||
(s, ret) = ui.utils.getTag(self, self.deck, _("Tags to cram:"),
|
||||
help="CramMode", tags="all")
|
||||
if not ret:
|
||||
return
|
||||
s = unicode(s)
|
||||
# open tmp deck
|
||||
(e, path) = self._copyToTmpDeck(tags=s)
|
||||
else:
|
||||
(e, path) = self._copyToTmpDeck(ids=cardIds)
|
||||
if not e.exportedCards:
|
||||
ui.utils.showInfo(_("No cards matched the provided tags."))
|
||||
return
|
||||
if self.config['randomizeOnCram']:
|
||||
n = 3
|
||||
else:
|
||||
n = 2
|
||||
p = ui.utils.ProgressWin(self, n, 0, _("Cram"))
|
||||
p.update(_("Loading deck..."))
|
||||
oldMedia = self.deck.mediaDir()
|
||||
self.deck.close()
|
||||
self.deck = None
|
||||
self.loadDeck(path, media=oldMedia)
|
||||
self.config['recentDeckPaths'].pop(0)
|
||||
self.deck.newCardsPerDay = 99999
|
||||
self.deck.delay0 = 300
|
||||
self.deck.delay1 = 600
|
||||
self.deck.hardIntervalMin = 0.01388
|
||||
self.deck.hardIntervalMax = 0.02083
|
||||
self.deck.midIntervalMin = 0.0416
|
||||
self.deck.midIntervalMax = 0.0486
|
||||
self.deck.easyIntervalMin = 0.2083
|
||||
self.deck.easyIntervalMax = 0.25
|
||||
self.deck.newCardOrder = 0
|
||||
self.deck.syncName = None
|
||||
self.deck.collapseTime = 1
|
||||
p.update()
|
||||
self.deck.updateDynamicIndices()
|
||||
if self.config['randomizeOnCram']:
|
||||
p.update(_("Randomizing..."))
|
||||
self.deck.randomizeNewCards()
|
||||
self.reset()
|
||||
p.finish()
|
||||
te = ui.tagedit.TagEdit(self)
|
||||
te.setDeck(self.deck, "all")
|
||||
diag = ui.utils.GetTextDialog(
|
||||
self, _("Tags to cram:"), help="CramMode", edit=te)
|
||||
l = diag.layout()
|
||||
g = QGroupBox(_("Review Mode"))
|
||||
l.insertWidget(2, g)
|
||||
box = QVBoxLayout()
|
||||
g.setLayout(box)
|
||||
keep = QRadioButton(_("Show oldest modified first"))
|
||||
box.addWidget(keep)
|
||||
keep.setChecked(True)
|
||||
diag.setTabOrder(diag.l, keep)
|
||||
order = QRadioButton(_("Show in order added"))
|
||||
box.addWidget(order)
|
||||
random = QRadioButton(_("Show in random order"))
|
||||
box.addWidget(random)
|
||||
# hide tag list if we have ids
|
||||
if cardIds:
|
||||
diag.l.hide()
|
||||
diag.qlabel.hide()
|
||||
if diag.exec_():
|
||||
if keep.isChecked():
|
||||
order = "modified"
|
||||
elif order.isChecked():
|
||||
order = "created"
|
||||
else:
|
||||
order = "random()"
|
||||
if cardIds:
|
||||
active = cardIds
|
||||
else:
|
||||
active = unicode(diag.l.text())
|
||||
self.deck.setupCramScheduler(active, order)
|
||||
if self.state == "studyScreen":
|
||||
self.onStartReview()
|
||||
else:
|
||||
self.deck.reset()
|
||||
self.deck.getCard() # so scheduler will reset if empty
|
||||
self.moveToState("initial")
|
||||
if not self.deck.finishScheduler:
|
||||
ui.utils.showInfo(_("No cards matched the provided tags."))
|
||||
|
||||
def onShare(self, tags):
|
||||
pwd = os.getcwd()
|
||||
|
@ -2888,10 +2858,6 @@ Proceed?""")):
|
|||
ui.utils.showInfo(_("Database optimized.\nShrunk by %dKB") % (size/1024.0))
|
||||
|
||||
def onCheckMediaDB(self):
|
||||
if self.isCramming():
|
||||
ui.utils.showInfo(_("""\
|
||||
You are currently cramming. Please close this deck first."""))
|
||||
return
|
||||
mb = QMessageBox(self)
|
||||
mb.setWindowTitle(_("Anki"))
|
||||
mb.setIcon(QMessageBox.Warning)
|
||||
|
|
|
@ -173,11 +173,11 @@ class StatusView(object):
|
|||
if not self.main.currentCard:
|
||||
remStr += "%(failed1)s" + s + "%(rev1)s" + s + "%(new1)s"
|
||||
else:
|
||||
q = self.main.deck.queueForCard(self.main.currentCard)
|
||||
if q == "failed":
|
||||
t = self.main.deck.cardType(self.main.currentCard)
|
||||
if t == 0:
|
||||
remStr += ("<u>%(failed1)s</u>" + s +
|
||||
"%(rev1)s" + s + "%(new1)s")
|
||||
elif q == "rev":
|
||||
elif t == 1:
|
||||
remStr += ("%(failed1)s" + s + "<u>%(rev1)s</u>" + s +
|
||||
"%(new1)s")
|
||||
else:
|
||||
|
|
|
@ -120,8 +120,9 @@ class GetTextDialog(QDialog):
|
|||
self.setWindowTitle("Anki")
|
||||
self.question = question
|
||||
self.help = help
|
||||
self.qlabel = QLabel(question)
|
||||
v = QVBoxLayout()
|
||||
v.addWidget(QLabel(question))
|
||||
v.addWidget(self.qlabel)
|
||||
if not edit:
|
||||
edit = QLineEdit()
|
||||
self.l = edit
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>605</width>
|
||||
<height>563</height>
|
||||
<height>565</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
|
@ -791,6 +791,16 @@
|
|||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string><h1>Study Options</h1></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_4">
|
||||
<property name="orientation">
|
||||
|
@ -802,7 +812,7 @@
|
|||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>6</height>
|
||||
<height>12</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
|
@ -1324,7 +1334,7 @@
|
|||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Review</string>
|
||||
<string>&Review</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
|
|
Loading…
Reference in a new issue