instead of opening page in browser, save to image file

This commit is contained in:
Damien Elmes 2011-03-27 10:56:40 +09:00
parent 1ddbc80053
commit 3b23275204

View file

@ -80,7 +80,7 @@ class PrintableReport(QDialog):
self.report = func() self.report = func()
self.web.stdHtml(self.report, css=css) self.web.stdHtml(self.report, css=css)
self.box = QDialogButtonBox(QDialogButtonBox.Close) 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.connect(b, SIGNAL("clicked()"), self.browser)
b.setAutoDefault(False) b.setAutoDefault(False)
self.layout = QHBoxLayout() self.layout = QHBoxLayout()
@ -101,10 +101,16 @@ class PrintableReport(QDialog):
def browser(self): def browser(self):
# dump to a temporary file # dump to a temporary file
tmpdir = tempfile.mkdtemp(prefix="anki") tmpdir = tempfile.mkdtemp(prefix="anki")
path = os.path.join(tmpdir, "report.html") path = os.path.join(tmpdir, "report.png")
open(path, "w").write(""" p = self.web.page()
<html><head><style>%s</style></head><body>%s</body></html>""" % ( oldsize = p.viewportSize()
self.css, self.report)) 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)) QDesktopServices.openUrl(QUrl("file://" + path))
# Deck stats # Deck stats