From 3b23275204a7f5e9b942532ea0832d01b9075c62 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 27 Mar 2011 10:56:40 +0900 Subject: [PATCH] instead of opening page in browser, save to image file --- aqt/stats.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/aqt/stats.py b/aqt/stats.py index 54740325f..e0d52d3d2 100644 --- a/aqt/stats.py +++ b/aqt/stats.py @@ -80,7 +80,7 @@ class PrintableReport(QDialog): self.report = func() self.web.stdHtml(self.report, css=css) self.box = QDialogButtonBox(QDialogButtonBox.Close) - b = self.box.addButton(_("Open In Browser"), QDialogButtonBox.ActionRole) + b = self.box.addButton(_("Save Image"), QDialogButtonBox.ActionRole) b.connect(b, SIGNAL("clicked()"), self.browser) b.setAutoDefault(False) self.layout = QHBoxLayout() @@ -101,10 +101,16 @@ class PrintableReport(QDialog): def browser(self): # dump to a temporary file tmpdir = tempfile.mkdtemp(prefix="anki") - path = os.path.join(tmpdir, "report.html") - open(path, "w").write(""" -%s""" % ( - self.css, self.report)) + path = os.path.join(tmpdir, "report.png") + p = self.web.page() + oldsize = p.viewportSize() + p.setViewportSize(p.mainFrame().contentsSize()) + image = QImage(p.viewportSize(), QImage.Format_ARGB32) + painter = QPainter(image) + p.mainFrame().render(painter) + painter.end() + image.save(path, "png") + p.setViewportSize(oldsize) QDesktopServices.openUrl(QUrl("file://" + path)) # Deck stats