class PendulumGraphics(Pendulum):
    """pendulum which renders itself in a QGraphicsView"""

    def initGraphics(self, gView):
        self.gView = gView
        self.gScene = QGraphicsScene(self.gView)
        self.gView.setScene(self.gScene)

        self.gText = QGraphicsTextItem("Pendulum")
        self.gText.moveBy(0, -120)
        self.gGrid = Graphics.Items.Grid(size=(-140, -140, 140, 140), xstep=20, ystep=20,
            toolTip='the main grid')
        self.gCross = Graphics.Items.CrossX(toolTip='this is the fix point of the pendulum')
        self.gAxes = Graphics.Items.Axes(toolTip='theese are x,y-axes')
        self.gPendulum = GPendulum()
        self.gPendulum.setProperties((self.mass, self.length, self.radius, self.gravity,
            self.omega, self.friction))
        self.gScene.addItem(self.gGrid)
        self.gScene.addItem(self.gText)
        self.gScene.addItem(self.gCross)
        self.gScene.addItem(self.gAxes)
        self.gScene.addItem(self.gPendulum)
        self.gView.setSceneRect(QRectF(-140, -140, 280, 280))
        self.gPendulum.rotate(self.phi.v)

    def reset(self):
        self.gPendulum.rotate(self.initValues['phi']-self.phi.v)
        Pendulum.reset(self)

    def update(self, timeStep):
        Pendulum.update(self, timeStep)
        self.gPendulum.rotate(self.phiStep)