Example #1
0
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()
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()
Example #3
0
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()