diff --git a/aqt/deckbrowser.py b/aqt/deckbrowser.py index b62374db6..850dbce95 100644 --- a/aqt/deckbrowser.py +++ b/aqt/deckbrowser.py @@ -25,8 +25,7 @@ class DeckBrowser(object): else: cmd = url if cmd == "open": - deck = self._decks[int(arg)] - self._selDeck(deck) + self._selDeck(arg) elif cmd == "opts": self._optsForRow(int(arg)) elif cmd == "download": @@ -42,8 +41,9 @@ class DeckBrowser(object): elif cmd == "refresh": self.refresh() - def _selDeck(self, rec): - print rec + def _selDeck(self, did): + self.mw.col.decks.select(did) + self.mw.moveToState("overview") # HTML generation ########################################################################## diff --git a/aqt/main.py b/aqt/main.py index 2d3549cd2..fb8e8f4d9 100755 --- a/aqt/main.py +++ b/aqt/main.py @@ -190,7 +190,7 @@ Are you sure?"""): self.onSync() # then load collection and launch into the deck browser self.col = Collection(self.pm.collectionPath()) - self.moveToState("deckBrowser") + self.moveToState("overview") def unloadProfile(self): self.col = None @@ -227,6 +227,7 @@ Are you sure?"""): self.reviewer.show() def _reviewCleanup(self, newState): + print "rethink cleanup code?" if newState != "resetRequired": self.reviewer.cleanup() diff --git a/aqt/modelchooser.py b/aqt/modelchooser.py index f697a2d53..9ca540231 100644 --- a/aqt/modelchooser.py +++ b/aqt/modelchooser.py @@ -15,7 +15,7 @@ class ModelChooser(QHBoxLayout): QHBoxLayout.__init__(self) self.widget = widget self.mw = mw - self.deck = mw.deck + self.deck = mw.col self.handleCards = cards self.label = label self._ignoreReset = False @@ -151,7 +151,7 @@ class AddModel(QDialog): def __init__(self, mw, parent=None): self.parent = parent or mw self.mw = mw - self.deck = mw.deck + self.deck = mw.col QDialog.__init__(self, self.parent, Qt.Window) self.model = None self.dialog = aqt.forms.addmodel.Ui_Dialog() @@ -191,7 +191,7 @@ class AddModel(QDialog): self.model = model(self.deck) else: # add copy to deck - self.mw.deck.addModel(model) + self.mw.col.addModel(model) self.model = model QDialog.accept(self) diff --git a/aqt/models.py b/aqt/models.py index 002b951ae..42ceec5ea 100644 --- a/aqt/models.py +++ b/aqt/models.py @@ -10,7 +10,7 @@ class Models(QDialog): self.mw = mw self.parent = parent or mw QDialog.__init__(self, self.parent, Qt.Window) - self.deck = mw.deck + self.deck = mw.col self.mw.checkpoint(_("Models")) self.form = aqt.forms.models.Ui_Dialog() self.form.setupUi(self) diff --git a/aqt/overview.py b/aqt/overview.py index 02b5f34f8..5ad9463d9 100644 --- a/aqt/overview.py +++ b/aqt/overview.py @@ -17,7 +17,6 @@ class Overview(object): addHook("reset", self.refresh) def show(self): - self._setupToolbar() self.web.setKeyHandler(self._keyHandler) self.web.setLinkHandler(self._linkHandler) self.refresh() @@ -41,11 +40,11 @@ class Overview(object): def _linkHandler(self, url): print "link", url if url == "study": - self.mw.deck.reset() + self.mw.col.reset() self.mw.moveToState("review") elif url == "cram": return showInfo("not yet implemented") - #self.mw.deck.cramGroups() + #self.mw.col.cramGroups() #self.mw.moveToState("review") elif url == "opts": self.mw.onStudyOptions() @@ -60,18 +59,28 @@ class Overview(object): fc = self._ovForecast() tbl = self._overviewTable() but = self.mw.button + deck = self.mw.col.decks.current() + dname = deck['name'] + sid = deck.get("sharedFrom") + if True: # sid: + shareLink = 'Reviews and Updates' + else: + shareLink = "" self.web.stdHtml(self._overviewBody % dict( title=_("Overview"), table=tbl, fcsub=_("Reviews over next two weeks"), + deck=deck['name'], + shareLink=shareLink, + desc="", fcdata=fc, ), css) _overviewBody = """
-

%(title)s

-

-%(table)s +

%(deck)s

+%(shareLink)s +%(desc)s

%(fcsub)s @@ -101,10 +110,12 @@ $(function () { .due { text-align: right; } .new { text-align: right; } .sub { font-size: 80%; color: #555; } +.smallLink { font-size: 12px; } +h3 { margin-bottom: 0; } """ def _overviewTable(self): - counts = self._ovCounts() + return "" but = self.mw.button buf = "" buf += "" % _("Due") @@ -129,27 +140,8 @@ $(function () { # Data ########################################################################## - def _ovCounts(self): - # we have the limited count already - selcnt = [0,0,0] #self.mw.deck.sched.selCounts() - allcnt = [0,0,0] #self.mw.deck.sched.allCounts() - return [ - limitedCount(selcnt[1] + selcnt[2]), - selcnt[0], - limitedCount(allcnt[1] + allcnt[2]), - allcnt[0], - ] - def _ovForecast(self): - fc = self.mw.deck.sched.dueForecast(14) + fc = self.mw.col.sched.dueForecast(14) if not sum(fc): return "'%s'" % _('No cards due in next two weeks') return simplejson.dumps(tuple(enumerate(fc))) - - # Toolbar - ########################################################################## - - def _setupToolbar(self): - if not self.mw.config['showToolbar']: - return - self.mw.form.toolBar.show() diff --git a/aqt/reviewer.py b/aqt/reviewer.py index 155ef9486..a20dd6e48 100644 --- a/aqt/reviewer.py +++ b/aqt/reviewer.py @@ -37,7 +37,7 @@ class Reviewer(object): def lastCard(self): if self._answeredIds: if not self.card or self._answeredIds[-1] != self.card.id: - return self.mw.deck.getCard(self._answeredIds[-1]) + return self.mw.col.getCard(self._answeredIds[-1]) def cleanup(self): self._hideStatus() @@ -52,7 +52,7 @@ class Reviewer(object): # a card has been retrieved from undo c = self.cardQueue.pop() else: - c = self.mw.deck.sched.getCard() + c = self.mw.col.sched.getCard() self.card = c clearAudioQueue() if c: @@ -65,7 +65,7 @@ class Reviewer(object): else: self._hideStatus() self.mw.disableCardMenuItems() - if self.mw.deck.cardCount(): + if self.mw.col.cardCount(): self._showCongrats() else: self._showEmpty() @@ -184,7 +184,7 @@ $(".ansbut").focus(); if self.mw.config['autoplaySounds']: playFromText(q) # render - esc = self.mw.deck.media.escapeImages + esc = self.mw.col.media.escapeImages q=esc(mungeQA(q)) + self.typeAnsInput() a=esc(mungeQA(a)) self.web.eval("_updateQA(%s);" % simplejson.dumps( @@ -208,13 +208,13 @@ $(".ansbut").focus(); ########################################################################## def _defaultEase(self): - if self.mw.deck.sched.answerButtons(self.card) == 4: + if self.mw.col.sched.answerButtons(self.card) == 4: return 3 else: return 2 def _answerButtons(self): - if self.mw.deck.sched.answerButtons(self.card) == 4: + if self.mw.col.sched.answerButtons(self.card) == 4: labels = (_("Again"), _("Hard"), _("Good"), _("Easy")) else: labels = (_("Again"), _("Good"), _("Easy")) @@ -240,7 +240,7 @@ $(".ansbut").focus(); def _buttonTime(self, i, green): if self.mw.config['suppressEstimates']: return "" - txt = self.mw.deck.sched.nextIvlStr(self.card, i+1, True) + txt = self.mw.col.sched.nextIvlStr(self.card, i+1, True) if i == 0: txt = '%s' % txt elif i == green: @@ -252,7 +252,7 @@ $(".ansbut").focus(); def _answerCard(self, ease): "Reschedule card and show next." - self.mw.deck.sched.answerCard(self.card, ease) + self.mw.col.sched.answerCard(self.card, ease) self._answeredIds.append(self.card.id) self.mw.autosave() self.nextCard() @@ -373,7 +373,7 @@ div#filler { def _styles(self): css = self.mw.sharedCSS - css += self.mw.deck.models.css() + css += self.mw.col.models.css() css += self._css return css @@ -401,7 +401,7 @@ div#filler { def processTypedAns(self, given): ord = self.typeAns() try: - cor = self.mw.deck.media.strip( + cor = self.mw.col.media.strip( stripHTML(self.card.note().fields[ord])) except IndexError: self.card.template()['typeAns'] = None @@ -481,7 +481,7 @@ div#filler {

%s -""" % (self.mw.deck.sched.finishedMsg(), +""" % (self.mw.col.sched.finishedMsg(), self.mw.button(key="o", name=_("Overview"), link="ov", id='ov')) self.web.stdHtml(buf, css=self.mw.sharedCSS) runHook('deckFinished') @@ -574,8 +574,8 @@ div#filler { # fixme: only show progress for reviews, and only when revs due? def _updateRemaining(self): - counts = list(self.mw.deck.sched.repCounts()) - idx = self.mw.deck.sched.countIdx(self.card) + counts = list(self.mw.col.sched.repCounts()) + idx = self.mw.col.sched.countIdx(self.card) counts[idx] = "%s" % (counts[idx]+1) space = " " * 2 ctxt = '%s' % counts[0] diff --git a/aqt/stats.py b/aqt/stats.py index 919930e62..8f082c259 100644 --- a/aqt/stats.py +++ b/aqt/stats.py @@ -45,7 +45,7 @@ class CardStats(object): return txt = "" r = self.mw.reviewer - d = self.mw.deck + d = self.mw.col if r.card: txt += _("

Current

") txt += d.cardStats(r.card) @@ -70,9 +70,9 @@ class DeckStats(QDialog): self.mw = mw self.name = "deckStats" self.period = 0 - self.sel = True self.form = aqt.forms.stats.Ui_Dialog() self.oldPos = None + self.wholeCollection = False f = self.form f.setupUi(self) restoreGeom(self, self.name) @@ -82,9 +82,9 @@ class DeckStats(QDialog): b.setAutoDefault(False) c = self.connect s = SIGNAL("clicked()") - c(f.groups, s, lambda: self.changeSel(True)) + c(f.groups, s, lambda: self.changeScope("deck")) f.groups.setShortcut("g") - c(f.all, s, lambda: self.changeSel(False)) + c(f.all, s, lambda: self.changeScope("collection")) c(f.month, s, lambda: self.changePeriod(0)) c(f.year, s, lambda: self.changePeriod(1)) c(f.life, s, lambda: self.changePeriod(2)) @@ -115,10 +115,8 @@ class DeckStats(QDialog): self.period = n self.refresh() - def changeSel(self, sel): - self.sel = sel - if sel: - self.mw.onGroups(self) + def changeScope(self, type): + self.wholeCollection = type == "collection" self.refresh() def loadFin(self, b): @@ -127,8 +125,8 @@ class DeckStats(QDialog): def refresh(self): self.mw.progress.start(immediate=True) self.oldPos = self.form.web.page().mainFrame().scrollPosition() - self.report = self.mw.deck.stats().report( - type=self.period) + stats = self.mw.col.stats() + stats.wholeCollection = self.wholeCollection + self.report = stats.report(type=self.period) self.form.web.setHtml(self.report) - self.mw.progress.finish() diff --git a/aqt/studyopts.py b/aqt/studyopts.py index 87930c3a4..1cc3687c6 100644 --- a/aqt/studyopts.py +++ b/aqt/studyopts.py @@ -30,7 +30,7 @@ class StudyOptions(QDialog): def load(self): f = self.form - d = self.mw.deck + d = self.mw.col qc = d.conf f.newPerDay.setValue(qc['newPerDay']) f.newOrder.setCurrentIndex(qc['newOrder']) @@ -47,7 +47,7 @@ class StudyOptions(QDialog): def accept(self): f = self.form - d = self.mw.deck + d = self.mw.col qc = d.conf old = qc['newOrder'] qc['newOrder'] = f.newOrder.currentIndex() @@ -71,7 +71,7 @@ class StudyOptions(QDialog): return self.mw.progress.start() if new == 1: - self.mw.deck.sched.orderCards() + self.mw.col.sched.orderCards() else: - self.mw.deck.sched.randomizeCards() + self.mw.col.sched.randomizeCards() self.mw.progress.finish() diff --git a/designer/stats.ui b/designer/stats.ui index 611558784..1b7da307b 100644 --- a/designer/stats.ui +++ b/designer/stats.ui @@ -59,7 +59,7 @@ - groups + deck true @@ -69,7 +69,7 @@ - all + collection
%s