diff --git a/aqt/addcards.py b/aqt/addcards.py index c49b28f08..598207ad7 100644 --- a/aqt/addcards.py +++ b/aqt/addcards.py @@ -6,7 +6,6 @@ from aqt.qt import * import sys, re import aqt.forms import anki -from anki.facts import Fact from anki.errors import * from anki.utils import stripHTML from aqt.utils import saveGeom, restoreGeom, showWarning, askUser, shortcut, \ @@ -37,7 +36,7 @@ class AddCards(QDialog): addHook('currentModelChanged', self.onReset) self.mw.requireReset(modal=True) self.open() - self.setupNewFact() + self.setupNewNote() def setupEditor(self): self.editor = aqt.editor.Editor(self.mw, self.form.fieldsArea, True) @@ -75,78 +74,78 @@ class AddCards(QDialog): b.setEnabled(False) self.historyButton = b - # FIXME: need to make sure to clean up fact on exit - def setupNewFact(self, set=True): - f = self.mw.deck.newFact() + # FIXME: need to make sure to clean up note on exit + def setupNewNote(self, set=True): + f = self.mw.deck.newNote() f.tags = f.model()['tags'] if set: - self.editor.setFact(f) + self.editor.setNote(f) return f def onReset(self, model=None, keep=False): - oldFact = self.editor.fact - fact = self.setupNewFact(set=False) - flds = fact.model()['flds'] - # copy fields from old fact - if oldFact: + oldNote = self.editor.note + note = self.setupNewNote(set=False) + flds = note.model()['flds'] + # copy fields from old note + if oldNote: if not keep: - self.removeTempFact(oldFact) - for n in range(len(fact.fields)): + self.removeTempNote(oldNote) + for n in range(len(note.fields)): try: if not keep or flds[n]['sticky']: - fact.fields[n] = oldFact.fields[n] + note.fields[n] = oldNote.fields[n] else: - fact.fields[n] = "" + note.fields[n] = "" except IndexError: break - self.editor.setFact(fact) + self.editor.setNote(note) - def removeTempFact(self, fact): - if not fact or not fact.id: + def removeTempNote(self, note): + if not note or not note.id: return - # we don't have to worry about cards; just the fact - self.mw.deck._remFacts([fact.id]) + # we don't have to worry about cards; just the note + self.mw.deck._remNotes([note.id]) - def addHistory(self, fact): - txt = stripHTMLMedia(",".join(fact.fields))[:30] - self.history.append((fact.id, txt)) + def addHistory(self, note): + txt = stripHTMLMedia(",".join(note.fields))[:30] + self.history.append((note.id, txt)) self.history = self.history[-15:] self.historyButton.setEnabled(True) def onHistory(self): m = QMenu(self) - for fid, txt in self.history: + for nid, txt in self.history: a = m.addAction(_("Edit %s" % txt)) a.connect(a, SIGNAL("triggered()"), - lambda fid=fid: self.editHistory(fid)) + lambda nid=nid: self.editHistory(nid)) m.exec_(self.historyButton.mapToGlobal(QPoint(0,0))) - def editHistory(self, fid): + def editHistory(self, nid): browser = aqt.dialogs.open("Browser", self.mw) - browser.form.searchEdit.setText("fid:%d" % fid) + browser.form.searchEdit.setText("nid:%d" % nid) browser.onSearch() - def addFact(self, fact): - if any(fact.problems()): + def addNote(self, note): + if any(note.problems()): showWarning(_( "Some fields are missing or not unique."), help="AddItems#AddError") return - cards = self.mw.deck.addFact(fact) + cards = self.mw.deck.addNote(note) if not cards: showWarning(_("""\ The input you have provided would make an empty question or answer on all cards."""), help="AddItems") return - self.addHistory(fact) + self.addHistory(note) # FIXME: return to overview on add? - return fact + return note def addCards(self): self.editor.saveNow() - fact = self.editor.fact - fact = self.addFact(fact) - if not fact: + note = self.editor.note + note = self.addNote(note) + if not note: return tooltip("Added", period=500) # stop anything playing @@ -168,8 +167,8 @@ question or answer on all cards."""), help="AddItems") removeHook('reset', self.onReset) removeHook('currentModelChanged', self.onReset) clearAudioQueue() - self.removeTempFact(self.editor.fact) - self.editor.setFact(None) + self.removeTempNote(self.editor.note) + self.editor.setNote(None) self.modelChooser.cleanup() self.mw.maybeReset() saveGeom(self, "add") diff --git a/aqt/browser.py b/aqt/browser.py index 2f86dc46d..a8f782830 100644 --- a/aqt/browser.py +++ b/aqt/browser.py @@ -36,7 +36,7 @@ class DeckModel(QAbstractTableModel): self.deck = browser.deck self.sortKey = None self.activeCols = self.deck.conf.get( - "activeCols", ["factFld", "template", "cardDue", "cardEase"]) + "activeCols", ["noteFld", "template", "cardDue", "cardEase"]) self.cards = [] self.cardObjs = {} @@ -46,9 +46,9 @@ class DeckModel(QAbstractTableModel): self.cardObjs[id] = self.deck.getCard(id) return self.cardObjs[id] - def refreshFact(self, fact): + def refreshNote(self, note): refresh = False - for c in fact.cards(): + for c in note.cards(): if c.id in self.cardObjs: del self.cardObjs[c.id] refresh = True @@ -123,7 +123,7 @@ class DeckModel(QAbstractTableModel): def beginReset(self): self.browser.editor.saveNow() - self.browser.editor.setFact(None, hide=False) + self.browser.editor.setNote(None, hide=False) self.browser.mw.progress.start() self.saveSelection() self.beginResetModel() @@ -192,7 +192,7 @@ class DeckModel(QAbstractTableModel): except: # debugging print column, self.activeCols - return "factFld" + return "noteFld" return type def columnData(self, index): @@ -204,17 +204,17 @@ class DeckModel(QAbstractTableModel): return self.question() elif type == "answer": return self.answer() - elif type == "factFld": - f = c.fact() + elif type == "noteFld": + f = c.note() return self.formatQA(f.fields[self.deck.models.sortIdx(f.model())]) elif type == "template": return c.template()['name'] elif type == "cardDue": return self.nextDue(c, index) - elif type == "factCrt": - return time.strftime("%Y-%m-%d", time.localtime(c.fact().id/1000)) - elif type == "factMod": - return time.strftime("%Y-%m-%d", time.localtime(c.fact().mod)) + elif type == "noteCrt": + return time.strftime("%Y-%m-%d", time.localtime(c.note().id/1000)) + elif type == "noteMod": + return time.strftime("%Y-%m-%d", time.localtime(c.note().mod)) elif type == "cardMod": return time.strftime("%Y-%m-%d", time.localtime(c.mod)) elif type == "cardReps": @@ -231,8 +231,8 @@ class DeckModel(QAbstractTableModel): return "%d%%" % (c.factor/10) elif type == "cardGroup": return self.browser.mw.deck.groups.name(c.gid) - elif type == "factGroup": - return self.browser.mw.deck.groups.name(c.fact().gid) + elif type == "noteGroup": + return self.browser.mw.deck.groups.name(c.note().gid) def question(self): return self.formatQA(c.a()) @@ -280,7 +280,7 @@ class StatusDelegate(QItemDelegate): painter.save() painter.fillRect(option.rect, brush) painter.restore() - elif c.fact().hasTag("Marked"): + elif c.note().hasTag("Marked"): if index.row() % 2 == 0: brush = QBrush(QColor(COLOUR_MARKED1)) else: @@ -355,14 +355,14 @@ class Browser(QMainWindow): c(f.actionOptions, s, self.onOptions) c(f.actionUndo, s, self.mw.onUndo) c(f.actionInvertSelection, s, self.invertSelection) - c(f.actionSelectFacts, s, self.selectFacts) + c(f.actionSelectNotes, s, self.selectNotes) c(f.actionFindReplace, s, self.onFindReplace) c(f.actionFindDuplicates, s, self.onFindDupes) # jumps c(f.actionPreviousCard, s, self.onPreviousCard) c(f.actionNextCard, s, self.onNextCard) c(f.actionFind, s, self.onFind) - c(f.actionFact, s, self.onFact) + c(f.actionNote, s, self.onNote) c(f.actionTags, s, self.onTags) c(f.actionSort, s, self.onSort) c(f.actionCardList, s, self.onCardList) @@ -381,7 +381,7 @@ class Browser(QMainWindow): saveSplitter(self.form.splitter_2, "editor2") saveSplitter(self.form.splitter_3, "editor3") self.editor.saveNow() - self.editor.setFact(None) + self.editor.setNote(None) saveGeom(self, "editor") saveState(self, "editor") saveHeader(self.form.tableView.horizontalHeader(), "editor") @@ -407,10 +407,10 @@ class Browser(QMainWindow): ('answer', _("Answer")), ('template', _("Card")), ('cardGroup', _("C.Group")), - ('factGroup', _("I.Group")), - ('factFld', _("Sort Field")), - ('factCrt', _("Created")), - ('factMod', _("Edited")), + ('noteGroup', _("I.Group")), + ('noteFld', _("Sort Field")), + ('noteCrt', _("Created")), + ('noteMod', _("Edited")), ('cardMod', _("Reviewed")), ('cardDue', _("Due")), ('cardIvl', _("Interval")), @@ -439,7 +439,7 @@ class Browser(QMainWindow): self.form.searchEdit.setCompleter(self.searchComp) def onSearch(self, reset=True): - "Careful: if reset is true, the current fact is saved." + "Careful: if reset is true, the current note is saved." txt = unicode(self.form.searchEdit.text()).strip() sh = self.mw.config['searchHistory'] if txt not in sh: @@ -471,7 +471,7 @@ class Browser(QMainWindow): return selected def onReset(self): - self.editor.setFact(None) + self.editor.setNote(None) self.onSearch() # Table view & editor @@ -494,21 +494,21 @@ class Browser(QMainWindow): self.editor.stealFocus = False def onRowChanged(self, current, previous): - "Update current fact and hide/show editor." + "Update current note and hide/show editor." show = self.model.cards and self.updateTitle() == 1 self.form.splitter_2.widget(1).setShown(not not show) if not show: - self.editor.setFact(None) + self.editor.setNote(None) else: self.card = self.model.getCard( self.form.tableView.selectionModel().currentIndex()) - self.editor.setFact(self.card.fact()) + self.editor.setNote(self.card.note()) self.editor.card = self.card self.showCardInfo(self.card) self.updateToggles() - def refreshCurrentCard(self, fact): - self.model.refreshFact(fact) + def refreshCurrentCard(self, note): + self.model.refreshNote(note) # Headers & sorting ###################################################################### @@ -533,7 +533,7 @@ class Browser(QMainWindow): def onSortChanged(self, idx, ord): type = self.model.activeCols[idx] - noSort = ("question", "answer", "template", "cardGroup", "factGroup") + noSort = ("question", "answer", "template", "cardGroup", "noteGroup") if type in noSort: showInfo(_("Sorting on this column is not supported. Please " "choose another.")) @@ -541,7 +541,7 @@ class Browser(QMainWindow): if self.deck.conf['sortType'] != type: self.deck.conf['sortType'] = type # default to descending for non-text fields - if type == "factFld": + if type == "noteFld": ord = not ord self.deck.conf['sortBackwards'] = ord self.onSearch() @@ -592,7 +592,7 @@ class Browser(QMainWindow): def setColumnSizes(self): hh = self.form.tableView.horizontalHeader() for c, i in enumerate(self.model.activeCols): - if i in ("question", "answer", "factFld"): + if i in ("question", "answer", "noteFld"): hh.setResizeMode(c, QHeaderView.Stretch) else: hh.setResizeMode(c, QHeaderView.Interactive) @@ -809,24 +809,24 @@ class Browser(QMainWindow): return [self.model.cards[idx.row()] for idx in self.form.tableView.selectionModel().selectedRows()] - def selectedFacts(self): + def selectedNotes(self): return self.deck.db.list(""" -select distinct fid from cards +select distinct nid from cards where id in %s""" % ids2str( [self.model.cards[idx.row()] for idx in self.form.tableView.selectionModel().selectedRows()])) - def selectedFactsAsCards(self): + def selectedNotesAsCards(self): return self.deck.db.list( - "select id from cards where fid in (%s)" % - ",".join([str(s) for s in self.selectedFacts()])) + "select id from cards where nid in (%s)" % + ",".join([str(s) for s in self.selectedNotes()])) - def oneModelFacts(self): - sf = self.selectedFacts() + def oneModelNotes(self): + sf = self.selectedNotes() if not sf: return mods = self.deck.db.scalar(""" -select count(distinct mid) from facts +select count(distinct mid) from notes where id in %s""" % ids2str(sf)) if mods > 1: showInfo(_("Please select cards from only one model.")) @@ -840,14 +840,14 @@ where id in %s""" % ids2str(sf)) ###################################################################### def genCards(self): - fids = self.oneModelFacts() - if fids: - GenCards(self, fids) + nids = self.oneModelNotes() + if nids: + GenCards(self, nids) def onChangeModel(self): - fids = self.oneModelFacts() - if fids: - ChangeModel(self, fids) + nids = self.oneModelNotes() + if nids: + ChangeModel(self, nids) def cram(self): return showInfo("not yet implemented") @@ -900,11 +900,11 @@ where id in %s""" % ids2str(sf)) self.selectedCards()), mod, gid) if frm.setInitial.isChecked(): self.deck.db.execute( - "update facts set mod=?, gid=? where id in " + ids2str( - self.selectedFacts()), mod, gid) + "update notes set mod=?, gid=? where id in " + ids2str( + self.selectedNotes()), mod, gid) else: self.deck.db.execute(""" -update cards set mod=?, gid=(select gid from facts where id = cards.fid) +update cards set mod=?, gid=(select gid from notes where id = cards.nid) where id in %s""" % ids2str(self.selectedCards()), mod) self.onSearch(reset=False) self.mw.requireReset() @@ -929,7 +929,7 @@ where id in %s""" % ids2str(self.selectedCards()), mod) label = _("Add Tags") if label: self.mw.checkpoint(label) - func(self.selectedFacts(), tags) + func(self.selectedNotes(), tags) self.onSearch(reset=False) self.mw.requireReset() self.model.endReset() @@ -962,7 +962,7 @@ where id in %s""" % ids2str(self.selectedCards()), mod) self.mw.requireReset() def isMarked(self): - return not not (self.card and self.card.fact().hasTag("Marked")) + return not not (self.card and self.card.note().hasTag("Marked")) def onMark(self, mark): if mark: @@ -1023,9 +1023,9 @@ where id in %s""" % ids2str(self.selectedCards()), mod) # Edit: selection ###################################################################### - def selectFacts(self): - fids = self.selectedFacts() - self.form.searchEdit.setText("fid:"+",".join([str(x) for x in fids])) + def selectNotes(self): + nids = self.selectedNotes() + self.form.searchEdit.setText("nid:"+",".join([str(x) for x in nids])) # clear the selection so we don't waste energy preserving it tv = self.form.tableView tv.selectionModel().clear() @@ -1084,7 +1084,7 @@ where id in %s""" % ids2str(self.selectedCards()), mod) ###################################################################### def onFindReplace(self): - sf = self.selectedFacts() + sf = self.selectedNotes() if not sf: return import anki.find @@ -1123,8 +1123,8 @@ where id in %s""" % ids2str(self.selectedCards()), mod) self.model.endReset() self.mw.progress.finish() showInfo(ngettext( - "%(a)d of %(b)d fact updated", - "%(a)d of %(b)d facts updated", len(sf)) % { + "%(a)d of %(b)d note updated", + "%(a)d of %(b)d notes updated", len(sf)) % { 'a': changed, 'b': len(sf), }) @@ -1141,7 +1141,7 @@ where id in %s""" % ids2str(self.selectedCards()), mod) aqt = ankiqt.forms.finddupes.Ui_Dialog() dialog.setupUi(win) restoreGeom(win, "findDupes") - fields = sorted(self.card.fact.model.fieldModels, key=attrgetter("name")) + fields = sorted(self.card.note.model.fieldModels, key=attrgetter("name")) # per-model data data = self.deck.db.all(""" select fm.id, m.name || '>' || fm.name from fieldmodels fm, models m @@ -1196,7 +1196,7 @@ select fm.id, fm.name from fieldmodels fm""") for group in res: t += '