프로젝트

일반

사용자정보

개정판 a6e21860

IDa6e218604d4df2bee201f64df094c1dd536d1f9c
상위 2b5a2d25
하위 62ff6ef5

함의성이(가) 일년 이상 전에 추가함

symbol scale test

Change-Id: I6d7ad43faad5a5df955888da788584917759ef15

차이점 보기:

DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
499 499
        """ call signals when item's position or rotation is changed """
500 500
        if not self.scene(): return super().itemChange(change, value)
501 501

  
502
        if change == QGraphicsItem.ItemPositionHasChanged or change == QGraphicsItem.ItemRotationHasChanged:
502
        if change == QGraphicsItem.ItemPositionHasChanged or change == QGraphicsItem.ItemRotationHasChanged or change == QGraphicsItem.ItemScaleHasChanged:
503 503
            from EngineeringLineItem import QEngineeringLineItem
504 504
            for connector in self.connectors:
505 505
                if connector.connectedItem is not None and type(connector.connectedItem) is QEngineeringLineItem:
......
997 997
            self.ungrabMouse()
998 998
            del self._rotating
999 999

  
1000
        if hasattr(self, '_scale') and event.button() == Qt.RightButton:
1001
            self.ungrabMouse()
1002
            del self._scale
1003
            del self._scale_x
1004

  
1000 1005
        super().mouseReleaseEvent(event)
1001 1006

  
1002 1007
    def mouseMoveEvent(self, event):
......
1020 1025
                if modifiers == Qt.ShiftModifier:
1021 1026
                    self.rotate(self._angle)
1022 1027
                else:
1023
                    step = math.radians(15)
1028
                    step = math.radians(10)
1024 1029
                    quotient = int(self._angle / step)
1025 1030
                    angle = quotient * step
1026 1031
                    self._angle = angle if (self._angle - angle) < step * 0.5 else (quotient + 1) * step
1027 1032

  
1028 1033
                    self.rotate(self._angle)
1029 1034

  
1035
        if hasattr(self, '_scale'):
1036
            dx = event.scenePos().x() - self._scale_x
1037
            step = 15
1038
            quotient = int(dx / step)
1039
            scale = 0.1 * quotient
1040

  
1041
            self.setScale(self._scale + scale if self._scale + scale > 0.3 else 0.3)
1042

  
1030 1043
        modifiers = QApplication.keyboardModifiers()
1031 1044
        if modifiers == Qt.ShiftModifier:
1032 1045
            super(SymbolSvgItem, self).mouseMoveEvent(event)
......
1180 1193

  
1181 1194
                self.rotate(math.radians(self._rotating))
1182 1195
                del self._rotating
1196
            if hasattr(self, '_scale'):
1197
                self.ungrabMouse()
1198

  
1199
                self.setScale(self._scale)
1200
                del self._scale
1201
                del self._scale_x
1183 1202
        elif event.key() == Qt.Key_Up:  # translate up/down/left/right symbol
1184 1203
            modifiers = QApplication.keyboardModifiers()
1185 1204
            delta = 10 if modifiers == Qt.ControlModifier else 1
......
1626 1645
        @date       2019.04.16
1627 1646
    '''
1628 1647
    def mouseDoubleClickEvent(self, event):
1629
        if not hasattr(self, '_rotating'):
1648
        modifiers = QApplication.keyboardModifiers()
1649
        if not hasattr(self, '_rotating') and modifiers == Qt.NoModifier:
1630 1650
            self._rotating = self.rotation()
1631 1651
            self.grabMouse()
1632

  
1652
        elif not hasattr(self, '_scale') and modifiers == Qt.ControlModifier:
1653
            self._scale = self.scale()
1654
            self._scale_x = event.scenePos().x()
1655
            self.grabMouse()
1656
        
1633 1657
    def toXml(self):
1634 1658
        """
1635 1659
        generate xml code

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)