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()
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()
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 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()
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()
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()
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)
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()
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()
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()