give the graphs an option to change period

This commit is contained in:
Damien Elmes 2011-03-26 20:22:35 +09:00
parent dcd603bbf0
commit 5682043427

View file

@ -72,22 +72,23 @@ class PrintableReport(QDialog):
self.setModal(True) self.setModal(True)
self.mw.progress.start() self.mw.progress.start()
self.web = AnkiWebView(self) self.web = AnkiWebView(self)
stats = func()
l = QVBoxLayout(self) l = QVBoxLayout(self)
l.setContentsMargins(0,0,0,0) l.setContentsMargins(0,0,0,0)
l.addWidget(self.web) l.addWidget(self.web)
self.setLayout(l) self.setLayout(l)
self.report = func()
self.css = css self.css = css
self.web.stdHtml(self.report, css=css) if func:
box = QDialogButtonBox(QDialogButtonBox.Close) self.report = func()
b = box.addButton(_("Open In Browser"), QDialogButtonBox.ActionRole) self.web.stdHtml(self.report, css=css)
self.box = QDialogButtonBox(QDialogButtonBox.Close)
b = self.box.addButton(_("Open In Browser"), QDialogButtonBox.ActionRole)
b.connect(b, SIGNAL("clicked()"), self.browser) b.connect(b, SIGNAL("clicked()"), self.browser)
b.setAutoDefault(False) b.setAutoDefault(False)
l.addWidget(box) l.addWidget(self.box)
self.connect(box, SIGNAL("accepted()"), self.browser) self.connect(self.box, SIGNAL("rejected()"), self, SLOT("reject()"))
self.connect(box, SIGNAL("rejected()"), self, SLOT("reject()"))
self.mw.progress.finish() self.mw.progress.finish()
def run(self):
self.exec_() self.exec_()
def reject(self): def reject(self):
@ -119,11 +120,47 @@ h1 { font-size: 18px; border-bottom: 1px solid #000; margin-top: 1em;
"deckstats", "deckstats",
_("Deck Statistics"), _("Deck Statistics"),
mw.deck.deckStats, mw.deck.deckStats,
css) css).run()
# Graphs # Graphs
###################################################################### ######################################################################
class Graphs(PrintableReport):
def __init__(self, *args):
self.period = 0
self.periods = [
_("Period: 1 month"),
_("Period: 1 year"),
_("Period: deck life")]
PrintableReport.__init__(self, *args)
b = self.box.addButton("", QDialogButtonBox.ActionRole)
b.connect(b, SIGNAL("clicked()"), self.changePeriod)
self.periodBut = b
self.updatePeriodBut()
self.refresh()
def changePeriod(self):
m = QMenu(self)
for c, p in enumerate(self.periods):
a = m.addAction(p)
a.connect(a, SIGNAL("activated()"), lambda n=c: self._changePeriod(n))
m.exec_(QCursor.pos())
def _changePeriod(self, n):
self.period = n
self.updatePeriodBut()
self.refresh()
def refresh(self):
self.mw.progress.start(immediate=True)
self.report = self.mw.deck.graphs().report(type=self.period)
self.web.stdHtml(self.report, css=self.css)
self.mw.progress.finish()
def updatePeriodBut(self):
self.periodBut.setText(self.periods[self.period])
def graphs(mw): def graphs(mw):
css=mw.sharedCSS+""" css=mw.sharedCSS+"""
body { margin: 2em; font-family: arial; background: #eee; } body { margin: 2em; font-family: arial; background: #eee; }
@ -132,9 +169,9 @@ h1 { font-size: 18px; border-bottom: 1px solid #000; margin-top: 1em;
.info {float:right; padding: 10px; max-width: 300px; border-radius: 5px; .info {float:right; padding: 10px; max-width: 300px; border-radius: 5px;
background: #ddd; font-size: 14px; } background: #ddd; font-size: 14px; }
""" """
return PrintableReport( return Graphs(
mw, mw,
"graphs", "graphs",
_("Graphs"), _("Graphs"),
lambda: mw.deck.graphs().report(), None,
css) css).run()