# Copyright: Damien Elmes # -*- coding: utf-8 -*- # License: GNU GPL, version 3 or later; http://www.gnu.org/copyleft/gpl.html from PyQt4.QtGui import * from PyQt4.QtCore import * from aqt.webview import AnkiWebView from anki.hooks import addHook # Card stats ###################################################################### class CardStats(object): def __init__(self, mw): self.mw = mw self.shown = False addHook("showQuestion", self._update) addHook("deckClosing", self.hide) def show(self): if not self.shown: self.web = AnkiWebView(self.mw) self.web.setMaximumWidth(400) self.shown = self.mw.addDockable(_("Card Statistics"), self.web) self.shown.connect(self.shown, SIGNAL("visibilityChanged(bool)"), self._visChange) self._update() def hide(self): if self.shown: self.mw.rmDockable(self.shown) self.shown = None def _visChange(self, vis): if not vis: # schedule removal for after evt has finished self.mw.progress.timer(100, self.hide, False) def _update(self): if not self.shown: return txt = "" r = self.mw.reviewer d = self.mw.deck if r.card: txt += _("

Current card

") txt += d.cardStats(r.card) lc = r.lastCard() if lc: txt += _("

Last card

") txt += d.cardStats(lc) if not txt: txt = _("No current card or last card.") print txt self.web.setHtml("""
%s
"""%txt) # Deck stats ###################################################################### class DeckStats(QDialog): def __init__(self, mw): self.mw = mw QDialog.__init__(self, mw) self.setModal(True) self.mw.progress.start() self.web = AnkiWebView(self) stats = self.mw.deck.deckStats() l = QVBoxLayout(self) l.addWidget(self.web) self.setLayout(l) self.web.setHtml(stats) self.mw.progress.finish() self.exec_()