#!/usr/bin/env python

from sip import setapi
setapi("QDate", 2)
setapi("QDateTime", 2)
setapi("QTextStream", 2)
setapi("QTime", 2)
setapi("QVariant", 2)
setapi("QString", 2)
setapi("QUrl", 2)

from PyQt4.QtCore import QSizeF, Qt, QUrl
from PyQt4.QtGui import (QApplication, QFrame, QGraphicsView, QGraphicsScene,
                         QMainWindow)
from PyQt4.QtOpenGL import QGLWidget
from PyQt4.QtWebKit import QGraphicsWebView
import sys


def main():
    app = QApplication(sys.argv)
    demo = PosterCircles()
    demo.show()
    sys.exit(app.exec_())


class PosterCircles(QMainWindow):

    def __init__(self, parent=None):
        super(PosterCircles, self).__init__(parent)

        scene = QGraphicsScene()
        self.webView = QGraphicsWebView()
        frame = self.webView.page().mainFrame()
        frame.setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
        frame.setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)
        scene.addItem(self.webView)
        self.graphicsView = QGraphicsView(scene)
        self.graphicsView.setFrameShape(QFrame.NoFrame)
        self.glWidget = QGLWidget(self)
        self.graphicsView.setViewport(self.glWidget)
        self.setCentralWidget(self.graphicsView)
        url = 'http://www.webkit.org/blog-files/3d-transforms/'\
              'poster-circle.html'
        self.webView.setUrl(QUrl(url))

    def resizeEvent(self, e):
        rect = self.graphicsView.sceneRect()
        rect.setSize(QSizeF(self.graphicsView.viewport().size()))
        self.graphicsView.setSceneRect(rect)
        width = self.graphicsView.viewport().width()
        height = self.graphicsView.viewport().height()
        self.webView.resize(width, height)


if __name__ == '__main__':
    main()
