mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 06:22:22 -04:00
77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
# Copyright: Damien Elmes <anki@ichi2.net>
|
|
# -*- 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 += _("<h1>Current card</h1>")
|
|
txt += d.cardStats(r.card)
|
|
lc = r.lastCard()
|
|
if lc:
|
|
txt += _("<h1>Last card</h1>")
|
|
txt += d.cardStats(lc)
|
|
if not txt:
|
|
txt = _("No current card or last card.")
|
|
print txt
|
|
self.web.setHtml("""
|
|
<html><head>
|
|
<style>table { font-size: 12px; } h1 { font-size: 14px; }</style>
|
|
</head><body><center>%s</center></body></html>"""%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_()
|