コード例 #1
0
ファイル: vectorgraphic.py プロジェクト: Artanidos/UXDesigner
class Vectorgraphic(DesignItem):
    def __init__(self, filename, scene):
        super(Vectorgraphic, self).__init__(scene)
        self.renderer = QSvgRenderer()
        self.renderer.load(filename)
        self.svg = QGraphicsSvgItem(self)
        self.svg.setSharedRenderer(self.renderer)
        self.setRect(0, 0,
                     self.svg.boundingRect().width(),
                     self.svg.boundingRect().height())

    def typeName(self):
        return "Vectorgraphic"

    def paint(self, paint, option, widget):
        if option.state & QStyle.State_Selected:
            self.drawHighlightSelected(paint, option)

    def scaleObjects(self):
        self.xscale = self.rect.width() / self.svg.boundingRect().width()
        self.yscale = self.rect.height() / self.svg.boundingRect().height()
        trans = QTransform()
        trans.scale(self.xscale, self.yscale)
        self.svg.setTransform(trans)

    def setScale(self, x, y):
        self.xscale = x
        self.yscale = y
        trans = QTransform()
        trans.scale(self.xscale, self.yscale)
        self.svg.setTransform(trans)
        self.setRect(0, 0,
                     self.svg.boundingRect().width() * x,
                     self.svg.boundingRect().height() * y)
class qfi_TC(QGraphicsView):

    viewUpdate = pyqtSignal()

    def __init__(self, winParent):
        QGraphicsView.__init__(self)

        self.winParent = winParent

        self.viewUpdate.connect(self.updateView)

        self.m_itemBack = None
        self.m_itemBall = None
        self.m_itemFace_1 = None
        self.m_itemFace_2 = None
        self.m_itemMark = None
        self.m_itemCase = None

        self.m_turnRate = 0
        self.m_slipSkid = 0

        self.m_scaleX = 0
        self.m_scaleY = 0

        self.m_originalHeight = 240
        self.m_originalWidth = 240

        self.m_originalMarkCtr = QPointF(120, 120)
        self.m_originalBallCtr = QPointF(120, -36)

        self.m_backZ = -70
        self.m_ballZ = -60
        self.m_face1Z = -50
        self.m_face2Z = -40
        self.m_markZ = -30
        self.m_caseZ = 10

        self.setStyleSheet("background: transparent; border: none")
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)

        self.reset()

        self.m_scene = QGraphicsScene(self)
        self.setScene(self.m_scene)

        self.m_scene.clear()
        self.init()

    def init(self):
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight

        self.reset()

        self.m_itemBack = QGraphicsSvgItem(":/qfi/images/tc/tc_back.svg")
        self.m_itemBack.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemBack.setZValue(self.m_backZ)
        self.m_itemBack.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_scene.addItem(self.m_itemBack)

        self.m_itemBall = QGraphicsSvgItem(":/qfi/images/tc/tc_ball.svg")
        self.m_itemBall.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemBall.setZValue(self.m_ballZ)
        self.m_itemBall.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemBall.setTransformOriginPoint(self.m_originalBallCtr)
        self.m_scene.addItem(self.m_itemBall)

        self.m_itemFace_1 = QGraphicsSvgItem(":/qfi/images/tc/tc_face_1.svg")
        self.m_itemFace_1.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemFace_1.setZValue(self.m_face1Z)
        self.m_itemFace_1.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_scene.addItem(self.m_itemFace_1)

        self.m_itemFace_2 = QGraphicsSvgItem(":/qfi/images/tc/tc_face_2.svg")
        self.m_itemFace_2.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemFace_2.setZValue(self.m_face2Z)
        self.m_itemFace_2.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_scene.addItem(self.m_itemFace_2)

        self.m_itemMark = QGraphicsSvgItem(":/qfi/images/tc/tc_mark.svg")
        self.m_itemMark.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemMark.setZValue(self.m_markZ)
        self.m_itemMark.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemMark.setTransformOriginPoint(self.m_originalMarkCtr)
        self.m_scene.addItem(self.m_itemMark)

        self.m_itemCase = QGraphicsSvgItem(":/qfi/images/tc/tc_case.svg")
        self.m_itemCase.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemCase.setZValue(self.m_caseZ)
        self.m_itemCase.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_scene.addItem(self.m_itemCase)

        self.centerOn(self.width() / 2, self.height() / 2)

        self.updateView()

    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()

    def update(self):
        self.updateView()

    def setTurnRate(self, turnRate):
        self.m_turnRate = turnRate
        if (self.m_turnRate < -6):
            self.m_turnRate = -6
        if (self.m_turnRate > 6):
            self.m_turnRate = 6

    def setSlipSkid(self, slipSkid):
        self.m_slipSkid = slipSkid
        if (self.m_slipSkid < -15):
            self.m_slipSkid = -15
        if (self.m_slipSkid > 15):
            self.m_slipSkid = 15

    def resizeEvent(self, event):
        QGraphicsView.resizeEvent(self, event)
        self.reinit()

    def reset(self):
        self.m_itemCase = None

        self.m_turnRate = 0
        self.m_slipSkid = 0

    def updateView(self):
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight

        self.m_itemBall.setRotation(-self.m_slipSkid)

        angle = (self.m_turnRate / 3) * 20

        self.m_itemMark.setRotation(angle)
        self.m_scene.update()
class qfi_HSI (QGraphicsView):

    viewUpdate = pyqtSignal()


    def __init__(self,winParent):
        QGraphicsView.__init__(self)

        self.winParent=winParent

        self.viewUpdate.connect(self.update)
        
        self.m_heading = 0

        self.m_scaleX = 0
        self.m_scaleY = 0

        self.m_originalHeight = 240
        self.m_originalWidth = 240

        self.m_originalHsiCtr = QPointF(120,120)


        self.m_faceZ = -20
        self.m_handZ = -10
        self.m_caseZ = 10

        self.m_itemHand = None
        self.m_itemFace = None
        self.m_itemCase = None

        self.setStyleSheet("background: transparent; border: none");
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)


        self.m_scene = QGraphicsScene(self)
        
        self.setScene(self.m_scene)

        self.init()

        

    def init (self):
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight


        self.m_itemFace = QGraphicsSvgItem(":/qfi/images/hsi/hsi_face.svg")
        self.m_itemFace.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace.setZValue( self.m_faceZ )
        self.m_itemFace.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemFace.setTransformOriginPoint( self.m_originalHsiCtr )
        self.m_scene.addItem (self.m_itemFace)


        self.m_itemCase = QGraphicsSvgItem(":/qfi/images/hsi/hsi_case.svg")
        self.m_itemCase.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemCase.setZValue( self.m_caseZ )
        self.m_itemCase.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemCase.setTransformOriginPoint( self.m_originalHsiCtr )
        self.m_scene.addItem (self.m_itemCase)

        self.centerOn (self.width()/2, self.height()/2)

        self.updateView()

    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()


    def update(self):
        self.updateView()


    def setHeading (self, heading):
        self.m_heading = heading


    def resizeEvent (self, event):
        QGraphicsView.resizeEvent (self,event)
        self.reinit()

    def reset (self):
        self.m_itemFace = None
        self.m_itemCase   = None

        self.m_heading =  0.0


    def updateView(self):


        self.m_itemFace.setRotation( - self.m_heading )

        self.m_scene.update()
コード例 #4
0
class Attitude(QGraphicsView):

    viewUpdate = pyqtSignal()

    def __init__(self, winParent):
        QGraphicsView.__init__(self)

        self.winParent = winParent

        self.viewUpdate.connect(self.update)

        self.m_roll = 0
        self.m_pitch = 0

        self.m_faceDeltaX_new = 0
        self.m_faceDeltaX_old = 0
        self.m_faceDeltaY_new = 0
        self.m_faceDeltaY_old = 0

        self.m_originalHeight = 240
        self.m_originalWidth = 240

        self.m_originalPixPerDeg = 1.7

        self.m_originalAdiCtr = QPointF(120, 120)

        self.m_backZ = -30
        self.m_faceZ = -20
        self.m_ringZ = -10
        self.m_caseZ = 10

        self.setStyleSheet("background: transparent; border: none")
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)

        self.m_scene = QGraphicsScene(self)

        self.setScene(self.m_scene)

        self.init()

    def init(self):
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight

        self.m_itemBack = QGraphicsSvgItem(":/qfi/images/adi/adi_back.svg")
        self.m_itemBack.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemBack.setZValue(self.m_backZ)
        self.m_itemBack.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemBack.setTransformOriginPoint(self.m_originalAdiCtr)
        self.m_scene.addItem(self.m_itemBack)

        self.m_itemFace = QGraphicsSvgItem(":/qfi/images/adi/adi_face.svg")
        self.m_itemFace.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemFace.setZValue(self.m_faceZ)
        self.m_itemFace.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemFace.setTransformOriginPoint(self.m_originalAdiCtr)
        self.m_scene.addItem(self.m_itemFace)

        self.m_itemRing = QGraphicsSvgItem(":/qfi/images/adi/adi_ring.svg")
        self.m_itemRing.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemRing.setZValue(self.m_ringZ)
        self.m_itemRing.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemRing.setTransformOriginPoint(self.m_originalAdiCtr)
        self.m_scene.addItem(self.m_itemRing)

        self.m_itemCase = QGraphicsSvgItem(":/qfi/images/alt/alt_case.svg")
        self.m_itemCase.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemCase.setZValue(self.m_caseZ)
        self.m_itemCase.setTransform(
            QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemCase.setTransformOriginPoint(self.m_originalAdiCtr)
        self.m_scene.addItem(self.m_itemCase)

        self.centerOn(self.width() / 2, self.height() / 2)

        self.updateView()

    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()

    def update(self):
        self.updateView()
        self.m_faceDeltaX_old = self.m_faceDeltaX_new
        self.m_faceDeltaY_old = self.m_faceDeltaY_new

    def setRoll(self, roll):
        self.m_roll = roll

        if (self.m_roll < -180):
            self.m_roll = -180
        if (self.m_roll > 180):
            self.m_roll = 180

    def setPitch(self, pitch):
        self.m_pitch = pitch
        if (self.m_pitch < -25):
            self.m_pitch = -25
        if (self.m_pitch > 25):
            self.m_pitch = 25

    def resizeEvent(self, event):
        QGraphicsView.resizeEvent(self, event)
        self.reinit()

    def reset(self):
        self.m_itemBack = None
        self.m_itemFace = None
        self.m_itemRing = None
        self.m_itemCase = None

        self.m_roll = 0.0
        self.m_pitch = 0.0

    def updateView(self):

        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight

        self.m_itemBack.setRotation(-self.m_roll)
        self.m_itemRing.setRotation(-self.m_roll)
        self.m_itemFace.setRotation(-self.m_roll)

        roll_rad = math.pi * self.m_roll / 180.0
        delta = self.m_originalPixPerDeg * self.m_pitch

        self.m_faceDeltaX_new = self.m_scaleX * delta * math.sin(roll_rad)
        self.m_faceDeltaY_new = self.m_scaleY * delta * math.cos(roll_rad)

        self.m_itemFace.moveBy(self.m_faceDeltaX_new - self.m_faceDeltaX_old,
                               self.m_faceDeltaY_new - self.m_faceDeltaY_old)

        self.m_scene.update()
コード例 #5
0
ファイル: __init__.py プロジェクト: budebulai/LightGCS
class flt_adi(QGraphicsView):
    def __init__(self, parent=None):
        super(flt_adi, self).__init__(parent)
        self.__paramsInit()

    def reinit(self):
        """
        reinitiate widget
        """
        self.__scene.clear()
        self.__init()

    def update(self):
        """
        redraws widget
        """
        self.__updateView()
        self.__faceDeltaXOld = self.__faceDeltaXNew
        self.__faceDeltaYOld = self.__faceDeltaYNew

    def setRoll(self, roll):
        """
        set roll angle, deg
        roll: float
        """
        self.__roll = roll

        if self.__roll < -180.0:
            self.__roll = -180.0
        elif self.__roll > 180.0:
            self.__roll = 180.0

    def setPitch(self, pitch):
        """
        set pitch angle, deg
        pitch: float
        """
        self.__pitch = pitch
        if self.__pitch < -25.0:
            self.__pitch = -25.0
        elif self.__pitch > 25.0:
            self.__pitch = 25.0

    def resizeEvent(self, event):
        QGraphicsView.resizeEvent(event)
        self.reinit()

    def __paramsInit(self):
        self.__roll = 0.0
        self.__pitch = 0.0

        self.__faceDeltaXNew = 0.0
        self.__faceDeltaXOld = 0.0
        self.__faceDeltaYNew = 0.0
        self.__faceDeltaYOld = 0.0

        self.__scaleX = 1.0
        self.__scaleY = 1.0

        self.__originalPixPerDeg = 1.7

        self.__originalHeight = 240
        self.__originalWidth = 240

        self.__backZ = -30
        self.__faceZ = -20
        self.__ringZ = -10
        self.__caseZ = 10

        self.__originalAdiCtr = QPointF(120.0, 120.0)

        self.__scene = QGraphicsScene(self)
        self.__scene.clear()

    def __del__(self):
        self.__scene.clear()
        del self.__scene

        self.__reset()

    def __init(self):
        self.__scaleX = width() / self.__originalWidth
        self.__scaleY = height() / self.__originalHeight

        self.__reset()
        # "border-image: url(:/side_btn/LightGCS_image/setter.png);"
        self.__itemBack = QGraphicsSvgItem(
            ":/fi_img/monitor/flightInstruments/img/adi/adi_back.svg")
        self.__itemBack.setCacheMode(QGraphicsItem.NoCache)
        self.__itemBack.setZvalue(self.__backZ)
        self.__itemBack.setTransform(
            QTransform.fromScale(self.__scaleX, self.__scaleY), True)
        self.__itemBack.setTransformOriginPoint(self.__originalAdiCtr)
        self.__scene.addItem(self.__itemBack)

        self.__itemFace = QGraphicsSvgItem(
            ":/fi_img/monitor/flightInstruments/img/adi/adi_face.svg")
        self.__itemFace.setCacheMode(QGraphicsItem.NoCache)
        self.__itemFace.setZvalue(self.__faceZ)
        self.__itemFace.setTransform(
            QTransform.fromScale(self.__scaleX, self.__scaleY), True)
        self.__itemFace.setTransformOriginPoint(self.__originalAdiCtr)
        self.__scene.addItem(self.__itemFace)

        self.__itemRing = QGraphicsSvgItem(
            ":/fi_img/monitor/flightInstruments/img/adi/adi_ring.svg")
        self.__itemRing.setCacheMode(QGraphicsItem.NoCache)
        self.__itemRing.setZvalue(self.__ringZ)
        self.__itemRing.setTransform(
            QTransform.fromScale(self.__scaleX, self.__scaleY), True)
        self.__itemRing.setTransformOriginPoint(self.__originalAdiCtr)
        self.__scene.addItem(self.__itemRing)

        self.__itemCase = QGraphicsSvgItem(
            ":/fi_img/monitor/flightInstruments/img/adi/adi_case.svg")
        self.__itemCase.setCacheMode(QGraphicsItem.NoCache)
        self.__itemCase.setZvalue(self.__ringZ)
        self.__itemCase.setTransform(
            QTransform.fromScale(self.__scaleX, self.__scaleY), True)
        self.__itemCase.setTransformOriginPoint(self.__originalAdiCtr)
        self.__scene.addItem(self.__itemCase)

        centerOn(width() / 2.0, height() / 2.0)

        self.__updateView()

    def __reset(self):
        self.__roll = 0.0
        self.__pitch = 0.0

        self.__faceDeltaXNew = 0.0
        self.__faceDeltaXOld = 0.0
        self.__faceDeltaYNew = 0.0
        self.__faceDeltaYOld = 0.0

        del self.__itemBack
        del self.__itemFace
        del self.__itemRing
        del self.__itemCase

    def __updateView(self):
        self.__scaleX = width() / self.__originalWidth
        self.__scaleY = height() / self.__originalHeight

        self.__itemBack.setRotation(-self.__roll)
        self.__itemFace.setRotation(-self.__roll)
        self.__itemRing.setRotation(-self.__roll)

        roll_rad = math.PI * self.__roll / 180.0
        delta = self.__originalPixPerDeg * self.__pitch

        self.__faceDeltaXNew = self.__scaleX * delta * sin(roll_rad)
        self.__faceDeltaYNew = self.__scaleY * delta * cos(roll_rad)

        self.__itemFace.moveBy(self.__faceDeltaXNew - self.__faceDeltaXOld,
                               self.__faceDeltaYNew - self.__faceDeltaYOld)
        self.__scene.update()
コード例 #6
0
ファイル: qfi_ALT.py プロジェクト: JdeRobot/ThirdParty
class qfi_ALT (QGraphicsView):

    viewUpdate = pyqtSignal()

    def __init__(self,winParent):
        QGraphicsView.__init__(self)

        self.winParent=winParent

        self.viewUpdate.connect(self.updateView)
        
        self.m_altitude = 0
        self.m_pressure = 28

        self.m_originalHeight = 240
        self.m_originalWidth = 240

        self.m_originalAltCtr = QPointF(120,120)

        self.m_face1Z = -50
        self.m_face2Z = -40
        self.m_face3Z = -30
        self.m_hand1Z = -20
        self.m_hand2Z = -10
        self.m_caseZ = 10

        self.setStyleSheet("background: transparent; border: none")
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)


        self.m_scene = QGraphicsScene(self)
        
        self.setScene(self.m_scene)

        self.init()

        

    def init (self):
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight


        self.m_itemFace_1 = QGraphicsSvgItem(":/qfi/images/alt/alt_face_1.svg")
        self.m_itemFace_1.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace_1.setZValue( self.m_face1Z )
        self.m_itemFace_1.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemFace_1.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemFace_1)

        self.m_itemFace_2 = QGraphicsSvgItem(":/qfi/images/alt/alt_face_2.svg")
        self.m_itemFace_2.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace_2.setZValue( self.m_face2Z )
        self.m_itemFace_2.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemFace_2.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemFace_2)

        self.m_itemFace_3 = QGraphicsSvgItem(":/qfi/images/alt/alt_face_3.svg")
        self.m_itemFace_3.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace_3.setZValue( self.m_face3Z )
        self.m_itemFace_3.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemFace_3.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemFace_3)

        self.m_itemHand_1 = QGraphicsSvgItem(":/qfi/images/alt/alt_hand_1.svg")
        self.m_itemHand_1.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemHand_1.setZValue( self.m_hand1Z )
        self.m_itemHand_1.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemHand_1.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemHand_1)

        self.m_itemHand_2 = QGraphicsSvgItem(":/qfi/images/alt/alt_hand_2.svg")
        self.m_itemHand_2.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemHand_2.setZValue( self.m_hand2Z )
        self.m_itemHand_2.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemHand_2.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemHand_2)

        self.m_itemCase = QGraphicsSvgItem(":/qfi/images/alt/alt_case.svg")
        self.m_itemCase.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemCase.setZValue( self.m_caseZ )
        self.m_itemCase.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemCase.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemCase)

        self.centerOn (self.width()/2, self.height()/2)

        self.updateView()

    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()

    def update(self):
        self.updateView()

    def setAltitude (self, altitude):
        self.m_altitude = altitude

    def setPressure (self, pressure):
        self.m_pressure = pressure
        if (self.m_pressure < 28):
            self.m_pressure = 28
        if (self.m_pressure > 31.5):
            self.m_pressure = 31.5

    def resizeEvent (self, event):
        QGraphicsView.resizeEvent (self,event)
        self.reinit()

    def reset (self):
        self.m_itemFace_1 = None
        self.m_itemFace_2 = None
        self.m_itemFace_3 = None
        self.m_itemHand_1 = None
        self.m_itemHand_2 = None
        self.m_itemCase   = None

        self.m_altitude =  0.0
        self.m_pressure = 28.0


    def updateView(self):
        altitude = math.ceil(self.m_altitude + 0.5)
        angleH1 = self.m_altitude * 0.036
        angleH2 = ( altitude % 1000 ) * 0.36
        angleF1 = (self.m_pressure - 28.0 ) * 100.0
        angleF3 = self.m_altitude * 0.0036

        self.m_itemHand_1.setRotation(angleH1)
        self.m_itemHand_2.setRotation(angleH2)
        self.m_itemFace_1.setRotation(- angleF1)
        self.m_itemFace_3.setRotation(angleF3)

        self.m_scene.update()
コード例 #7
0
class Battery(QGraphicsView):
    
    viewUpdate = pyqtSignal()

    def __init__(self,winParent):
        QGraphicsView.__init__(self)
        self.winParent=winParent
        self.viewUpdate.connect(self.update)
        
        self.m_currentValue = 0
        
        self.m_scaleX = 0
        self.m_scaleY = 0
        
        self.m_originalHeight = 245
        self.m_originalWidth = 245
    
        self.m_originalCtr = QPointF(120,120)   
        
        self.m_faceZ = -20
        self.m_caseZ = 10   
        self.m_markZ = -30
        self.m_mark2Z = -30
        self.m_mark3Z = -30
        self.m_mark4Z = -30
        self.m_mark5Z = -30
        
        self.m_itemFace = None
        self.m_itemCase = None 
        self.m_itemMark = None
        self.m_itemMark2 = None
        self.m_itemMark3 = None
        self.m_itemMark4 = None
        self.m_itemMark5 = None
        
        self.setStyleSheet("background: transparent; border: none");
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)

        self.m_scene = QGraphicsScene(self)
        self.setScene(self.m_scene)
        self.init()
        
    def init (self):
        # os.chdir('/Users/zeyneptuna/Desktop/during_flight/widget/battery')
        
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight
    
        self.m_itemFace = QGraphicsSvgItem("widget/battery/battery_face.svg")
        self.m_itemFace.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace.setZValue(self.m_faceZ)
        self.m_itemFace.setTransform(QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemFace.setTransformOriginPoint(self.m_originalCtr)
        self.m_scene.addItem(self.m_itemFace)
    
        self.m_itemCase = QGraphicsSvgItem("widget/battery/battery_case.svg")        
        self.m_itemCase.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemCase.setZValue(self.m_caseZ)
        self.m_itemCase.setTransform(QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemCase.setTransformOriginPoint(self.m_originalCtr)
        self.m_scene.addItem(self.m_itemCase)
        
        self.m_itemMark = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemMark.setZValue(self.m_markZ)
        self.m_itemMark.setPos(57, 120)
        self.m_itemMark.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark)   
        
        self.m_itemMark2 = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark2.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemMark2.setZValue(self.m_mark2Z)
        self.m_itemMark2.setPos(57, 92.5)
        self.m_itemMark2.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark2)     
        
        self.m_itemMark3 = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark3.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemMark3.setZValue(self.m_mark3Z)
        self.m_itemMark3.setPos(57, 65)
        self.m_itemMark3.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark3)
        
        self.m_itemMark4 = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark4.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemMark4.setZValue(self.m_mark4Z)
        self.m_itemMark4.setPos(57, 37.5)
        self.m_itemMark4.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark4)
        
        self.m_itemMark5 = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark5.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemMark5.setZValue(self.m_mark5Z)
        self.m_itemMark5.setPos(57, 10)
        self.m_itemMark5.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark5)        
        
        self.centerOn(self.width()/2, self.height()/2)
        self.updateView()
        
    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()

    def update(self):
        self.updateView()
        
    def setCurrentVal(self, val):
        self.m_currentValue = val
        
    def resizeEvent (self, event):
        QGraphicsView.resizeEvent (self,event)
        self.reinit()

    def reset (self):
        self.m_itemFace = None
        self.m_itemCase = None
        self.m_itemMark = None
        self.m_itemMark2 = None
        self.m_itemMark3 = None
        self.m_itemMark4 = None        
        self.m_itemMark5 = None        
        
        self.m_currentValue =  0
    
    def updateView(self):        
        if self.m_currentValue <= 20:
            self.m_itemMark2.setZValue(-30)
            
        elif self.m_currentValue <= 40:
            self.m_itemMark3.setZValue(-30)
            
        elif self.m_currentValue <= 60: 
            self.m_itemMark4.setZValue(-30)
            
        elif self.m_currentValue <= 80:  
            self.m_itemMark5.setZValue(-30)
            
        elif self.m_currentValue <= 100:
            self.m_itemMark.setZValue(20)
            self.m_itemMark2.setZValue(20)
            self.m_itemMark3.setZValue(20)
            self.m_itemMark4.setZValue(20)
            self.m_itemMark5.setZValue(20)
            
            self.m_scene.update()
コード例 #8
0
class Altimeter (QGraphicsView):

    viewUpdate = pyqtSignal()

    def __init__(self,winParent):
        QGraphicsView.__init__(self)

        self.winParent=winParent

        self.viewUpdate.connect(self.updateView)
        
        self.m_altitude = 0
        self.m_pressure = 28

        self.m_originalHeight = 240
        self.m_originalWidth = 240

        self.m_originalAltCtr = QPointF(120,120)

        self.m_face1Z = -50
        self.m_face2Z = -40
        self.m_face3Z = -30
        self.m_hand1Z = -20
        self.m_hand2Z = -10
        self.m_caseZ = 10

        self.setStyleSheet("background: transparent; border: none")
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)


        self.m_scene = QGraphicsScene(self)
        
        self.setScene(self.m_scene)

        self.init()

        

    def init (self):
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight


        self.m_itemFace_1 = QGraphicsSvgItem(":/qfi/images/alt/alt_face_1.svg")
        self.m_itemFace_1.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace_1.setZValue( self.m_face1Z )
        self.m_itemFace_1.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemFace_1.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemFace_1)

        self.m_itemFace_2 = QGraphicsSvgItem(":/qfi/images/alt/alt_face_2.svg")
        self.m_itemFace_2.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace_2.setZValue( self.m_face2Z )
        self.m_itemFace_2.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemFace_2.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemFace_2)

        self.m_itemFace_3 = QGraphicsSvgItem(":/qfi/images/alt/alt_face_3.svg")
        self.m_itemFace_3.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace_3.setZValue( self.m_face3Z )
        self.m_itemFace_3.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemFace_3.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemFace_3)

        self.m_itemHand_1 = QGraphicsSvgItem(":/qfi/images/alt/alt_hand_1.svg")
        self.m_itemHand_1.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemHand_1.setZValue( self.m_hand1Z )
        self.m_itemHand_1.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemHand_1.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemHand_1)

        self.m_itemHand_2 = QGraphicsSvgItem(":/qfi/images/alt/alt_hand_2.svg")
        self.m_itemHand_2.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemHand_2.setZValue( self.m_hand2Z )
        self.m_itemHand_2.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemHand_2.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemHand_2)

        self.m_itemCase = QGraphicsSvgItem(":/qfi/images/alt/alt_case.svg")
        self.m_itemCase.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemCase.setZValue( self.m_caseZ )
        self.m_itemCase.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemCase.setTransformOriginPoint( self.m_originalAltCtr )
        self.m_scene.addItem (self.m_itemCase)

        self.centerOn (self.width()/2, self.height()/2)

        self.updateView()

    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()

    def update(self):
        self.updateView()

    def setAltitude (self, altitude):
        self.m_altitude = altitude

    def setPressure (self, pressure):
        self.m_pressure = pressure
        if (self.m_pressure < 28):
            self.m_pressure = 28
        if (self.m_pressure > 31.5):
            self.m_pressure = 31.5

    def resizeEvent (self, event):
        QGraphicsView.resizeEvent (self,event)
        self.reinit()

    def reset (self):
        self.m_itemFace_1 = None
        self.m_itemFace_2 = None
        self.m_itemFace_3 = None
        self.m_itemHand_1 = None
        self.m_itemHand_2 = None
        self.m_itemCase   = None

        self.m_altitude =  0.0
        self.m_pressure = 28.0


    def updateView(self):
        altitude = math.ceil(self.m_altitude + 0.5)
        angleH1 = self.m_altitude * 0.036
        angleH2 = ( altitude % 1000 ) * 0.36
        angleF1 = (self.m_pressure - 28.0 ) * 100.0
        angleF3 = self.m_altitude * 0.0036

        self.m_itemHand_1.setRotation(angleH1)
        self.m_itemHand_2.setRotation(angleH2)
        self.m_itemFace_1.setRotation(- angleF1)
        self.m_itemFace_3.setRotation(angleF3)

        self.m_scene.update()
コード例 #9
0
ファイル: text.py プロジェクト: Artanidos/UXDesigner
class Text(DesignItem):
    def __init__(self, text, scene):
        super(Text, self).__init__(scene)
        self.font = QFont("Arial")
        self.font.setPointSize(14)
        self.font.setStyleName("Standard")
        self.text = text
        self.textcolor = QColor(Qt.black)

        self.data = str.encode(self.getSvg())
        self.renderer = QSvgRenderer()
        self.renderer.load(self.data)
        self.svg = QGraphicsSvgItem(self)
        self.svg.setSharedRenderer(self.renderer)
        self.setRect(0, 0,
                     self.svg.boundingRect().width(),
                     self.svg.boundingRect().height())

    def typeName(self):
        return "Text"

    def paint(self, paint, option, widget):
        if option.state & QStyle.State_Selected:
            self.drawHighlightSelected(paint, option)

    def getTextTag(self, id):
        fm = QFontMetrics(self.font)
        svg = "<text "
        if id:
            svg += "id=\"" + id + "\" "
        svg += "x=\"0\" y=\"" + str(fm.ascent()) + "\" "
        svg += "font-family=\"" + self.font.family() + "\" "
        svg += "font-size=\"" + str(self.font.pointSize() * 1.25) + "px\" "
        if self.font.bold():
            svg += "font-weight=\"bold\" "
        if self.font.italic():
            svg += "font-style=\"italic\" "
        svg += "fill=\"" + self.textcolor.name() + "\" "
        svg += "opacity=\"" + str(self.opacity()) + "\" "
        svg += ">"
        svg += self.text
        svg += "</text>"
        return svg

    def getSvg(self):
        font = QFont(self.font.family())
        font.setBold(self.font.bold())
        font.setItalic(self.font.italic())
        font.setPixelSize(self.font.pointSize() * 1.25)
        fm = QFontMetrics(font)
        self.width = fm.width(self.text) + 2
        self.height = fm.height()

        svg = "<svg width=\"" + str(self.width) + "\" "
        svg += "height=\"" + str(self.height) + "\" >"
        svg += self.getTextTag("")
        svg += "</svg>"
        return svg

    def setScale(self, x, y):
        self.xscale = x
        self.yscale = y
        trans = QTransform()
        trans.scale(self.xscale, self.yscale)
        self.svg.setTransform(trans)
        self.setRect(0, 0,
                     self.svg.boundingRect().width() * x,
                     self.svg.boundingRect().height() * y)

    def scaleObjects(self):
        self.xscale = self.rect.width() / self.svg.boundingRect().width()
        self.yscale = self.rect.height() / self.svg.boundingRect().height()
        trans = QTransform()
        trans.scale(self.xscale, self.yscale)
        self.svg.setTransform(trans)
コード例 #10
0
ファイル: qfi_VSI.py プロジェクト: JdeRobot/ThirdParty
class qfi_VSI (QGraphicsView):

    viewUpdate = pyqtSignal()


    def __init__(self,winParent):
        QGraphicsView.__init__(self)

        self.winParent=winParent

        self.viewUpdate.connect(self.update)
        
        self.m_climbRate = 0

        self.m_scaleX = 0
        self.m_scaleY = 0

        self.m_originalHeight = 240
        self.m_originalWidth = 240

        self.m_originalVsiCtr = QPointF(120,120)


        self.m_faceZ = -20
        self.m_handZ = -10
        self.m_caseZ = 10

        self.m_itemHand = None
        self.m_itemFace = None
        self.m_itemCase = None

        self.setStyleSheet("background: transparent; border: none");
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)


        self.m_scene = QGraphicsScene(self)
        
        self.setScene(self.m_scene)

        self.init()

        

    def init (self):
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight


        self.m_itemHand = QGraphicsSvgItem(":/qfi/images/vsi/vsi_hand.svg")
        self.m_itemHand.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemHand.setZValue( self.m_handZ )
        self.m_itemHand.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemHand.setTransformOriginPoint( self.m_originalVsiCtr )
        self.m_scene.addItem (self.m_itemHand)

        self.m_itemFace = QGraphicsSvgItem(":/qfi/images/vsi/vsi_face.svg")
        self.m_itemFace.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace.setZValue( self.m_faceZ )
        self.m_itemFace.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemFace.setTransformOriginPoint( self.m_originalVsiCtr )
        self.m_scene.addItem (self.m_itemFace)


        self.m_itemCase = QGraphicsSvgItem(":/qfi/images/vsi/vsi_case.svg")
        self.m_itemCase.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemCase.setZValue( self.m_caseZ )
        self.m_itemCase.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemCase.setTransformOriginPoint( self.m_originalVsiCtr )
        self.m_scene.addItem (self.m_itemCase)

        self.centerOn (self.width()/2, self.height()/2)

        self.updateView()

    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()


    def update(self):
        self.updateView()


    def setClimbRate (self, climbRate):
        self.m_climbRate = climbRate

        if (self.m_climbRate < -2000):
            self.m_climbRate = -2000
        if (self.m_climbRate > 2000):
            self.m_climbRate = 2000


    def resizeEvent (self, event):
        QGraphicsView.resizeEvent (self,event)
        self.reinit()

    def reset (self):
        self.m_itemHand = None
        self.m_itemFace = None
        self.m_itemCase   = None

        self.m_climbRate =  0.0


    def updateView(self):

        self.m_itemHand.setRotation( self.m_climbRate * 0.086 )

        self.m_scene.update()
コード例 #11
0
class fDuration (QGraphicsView):

    viewUpdate = pyqtSignal()

    def __init__(self,winParent):
        QGraphicsView.__init__(self)
        self.winParent=winParent
        self.viewUpdate.connect(self.update)
        
        self.m_hour = 0
        self.m_min = 0
        self.m_sec = 0        

        self.m_scaleX = 0
        self.m_scaleY = 0

        self.m_originalHeight = 245
        self.m_originalWidth = 245

        self.m_originalFdCtr = QPointF(120,120)
        self.m_originalMarkCtr = QPointF(120, 120)        

        self.m_faceZ = -20
        self.m_handZ = -10
        self.m_caseZ = 10
        self.m_mark1Z = 20
        self.m_mark2Z = 30
        self.m_mark3Z = 40       

        self.m_itemHand = None
        self.m_itemFace = None
        self.m_itemCase = None
        self.m_itemMark1 = None
        self.m_itemMark2 = None
        self.m_itemMark3 = None

        self.setStyleSheet("background: transparent; border: none");
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)

        self.m_scene = QGraphicsScene(self)
        self.setScene(self.m_scene)
        self.init()

    def init (self):
        #os.chdir('/Users/zeyneptuna/Desktop/during_flight/widget/flight_duration')
        
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight
                
        self.m_itemFace = QGraphicsSvgItem("widget/flight_duration/fd_face.svg")
        self.m_itemFace.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemFace.setZValue(self.m_faceZ)
        self.m_itemFace.setTransform(QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemFace.setTransformOriginPoint(self.m_originalFdCtr)
        self.m_scene.addItem(self.m_itemFace)

        self.m_itemCase = QGraphicsSvgItem("widget/flight_duration/fd_case.svg")        
        self.m_itemCase.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemCase.setZValue(self.m_caseZ)
        self.m_itemCase.setTransform(QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemCase.setTransformOriginPoint(self.m_originalFdCtr)
        self.m_scene.addItem(self.m_itemCase)
        
        #self.m_itemMark1 = QGraphicsSvgItem("fd_mark_1.svg")        
        #self.m_itemMark1.setCacheMode(QGraphicsItem.NoCache)
        #self.m_itemMark1.setZValue(self.m_mark1Z)
        #self.m_itemMark1.setTransformOriginPoint(self.m_originalMarkCtr)
        #self.m_itemMark1.setTransform(QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        #self.m_scene.addItem(self.m_itemMark1)       
        
        #self.m_itemMark2 = QGraphicsSvgItem("fd_mark_2.svg")        
        #self.m_itemMark2.setCacheMode(QGraphicsItem.NoCache)
        #self.m_itemMark2.setZValue(self.m_mark2Z)
        #self.m_itemMark2.setTransformOriginPoint(self.m_originalMarkCtr)
        #self.m_itemMark2.setTransform(QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        #self.m_scene.addItem(self.m_itemMark2)        
        
        #self.m_itemMark3 = QGraphicsSvgItem("fd_mark_3.svg")               
        #self.m_itemMark3.setCacheMode(QGraphicsItem.NoCache)
        #self.m_itemMark3.setZValue(self.m_mark3Z)
        #self.m_itemMark3.setTransformOriginPoint(self.m_originalMarkCtr)
        #self.m_itemMark3.setTransform(QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        #self.m_scene.addItem(self.m_itemMark3)                

        self.centerOn (self.width()/2, self.height()/2)
        self.updateView()

    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()

    def update(self):
        self.updateView()

    def setHour (self, hour):
        self.m_hour = hour
        
    def setMin (self, mins):
        self.m_min = mins    
        
    def setSec (self, sec):
        self.m_sec = sec   

    def resizeEvent (self, event):
        QGraphicsView.resizeEvent (self,event)
        self.reinit()

    def reset (self):
        self.m_itemFace = None
        self.m_itemCase = None
        self.m_itemMark1 = None
        self.m_itemMark2 = None
        self.m_itemMark3 = None        

        self.m_hour =  0
        self.m_min = 0
        self.m_sec = 0

    def updateView(self):
            
        #angle1 = 90*((self.m_hour - 9)/3)
        #angle2 = 90*((self.m_min)/15)        
        #angle3 = 90*((self.m_sec - 54)/15)

        #self.m_itemMark1.setRotation( angle1 )
        #self.m_itemMark2.setRotation( angle2 )
        #self.m_itemMark3.setRotation( angle3 )

        self.m_scene.update()
コード例 #12
0
ファイル: qfi_ADI.py プロジェクト: JdeRobot/ThirdParty
class qfi_ADI (QGraphicsView):

    viewUpdate = pyqtSignal()

    def __init__(self,winParent):
        QGraphicsView.__init__(self)

        self.winParent=winParent

        self.viewUpdate.connect(self.update)

        
        self.m_roll = 0
        self.m_pitch = 0

        self.m_faceDeltaX_new = 0
        self.m_faceDeltaX_old = 0
        self.m_faceDeltaY_new = 0
        self.m_faceDeltaY_old = 0

        self.m_originalHeight = 240
        self.m_originalWidth = 240

        self.m_originalPixPerDeg = 1.7

        self.m_originalAdiCtr = QPointF(120,120)

        self.m_backZ = -30
        self.m_faceZ = -20
        self.m_ringZ = -10
        self.m_caseZ = 10

        self.setStyleSheet("background: transparent; border: none");
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)


        self.m_scene = QGraphicsScene(self)
        
        self.setScene(self.m_scene)

        self.init()

        

    def init (self):
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight


        self.m_itemBack = QGraphicsSvgItem(":/qfi/images/adi/adi_back.svg")
        self.m_itemBack.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemBack.setZValue( self.m_backZ )
        self.m_itemBack.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemBack.setTransformOriginPoint( self.m_originalAdiCtr )
        self.m_scene.addItem (self.m_itemBack)

        self.m_itemFace = QGraphicsSvgItem(":/qfi/images/adi/adi_face.svg")
        self.m_itemFace.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace.setZValue( self.m_faceZ )
        self.m_itemFace.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemFace.setTransformOriginPoint( self.m_originalAdiCtr )
        self.m_scene.addItem (self.m_itemFace)

        self.m_itemRing = QGraphicsSvgItem(":/qfi/images/adi/adi_ring.svg")
        self.m_itemRing.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemRing.setZValue( self.m_ringZ )
        self.m_itemRing.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemRing.setTransformOriginPoint( self.m_originalAdiCtr )
        self.m_scene.addItem (self.m_itemRing)


        self.m_itemCase = QGraphicsSvgItem(":/qfi/images/alt/alt_case.svg")
        self.m_itemCase.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemCase.setZValue( self.m_caseZ )
        self.m_itemCase.setTransform( QTransform.fromScale( self.m_scaleX, self.m_scaleY ), True )
        self.m_itemCase.setTransformOriginPoint( self.m_originalAdiCtr )
        self.m_scene.addItem (self.m_itemCase)

        self.centerOn (self.width()/2, self.height()/2)

        self.updateView()

    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()


    def update(self):
        self.updateView()
        self.m_faceDeltaX_old  = self.m_faceDeltaX_new
        self.m_faceDeltaY_old  = self.m_faceDeltaY_new


    def setRoll (self, roll):
        self.m_roll = roll

        if (self.m_roll < -180):
            self.m_roll = -180
        if (self.m_roll > 180):
            self.m_roll = 180


    def setPitch (self, pitch):
        self.m_pitch = pitch
        if (self.m_pitch < -25):
            self.m_pitch = -25
        if (self.m_pitch > 25):
            self.m_pitch = 25

    def resizeEvent (self, event):
        QGraphicsView.resizeEvent (self,event)
        self.reinit()

    def reset (self):
        self.m_itemBack = None
        self.m_itemFace = None
        self.m_itemRing = None
        self.m_itemCase   = None

        self.m_roll =  0.0
        self.m_pitch = 0.0


    def updateView(self):

        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight
        
        self.m_itemBack.setRotation(- self.m_roll)
        self.m_itemRing.setRotation(- self.m_roll)
        self.m_itemFace.setRotation(- self.m_roll)

        roll_rad = math.pi * self.m_roll / 180.0
        delta  = self.m_originalPixPerDeg * self.m_pitch

        self.m_faceDeltaX_new = self.m_scaleX * delta * math.sin( roll_rad )
        self.m_faceDeltaY_new = self.m_scaleY * delta * math.cos( roll_rad )

        self.m_itemFace.moveBy( self.m_faceDeltaX_new - self.m_faceDeltaX_old, self.m_faceDeltaY_new - self.m_faceDeltaY_old )


        self.m_scene.update()