프로젝트

일반

사용자정보

개정판 12ce6b0f

ID12ce6b0f239b427267bd042683e37b709dac38e6
상위 8d6386dd
하위 e4c359d0

백흠경이(가) 일년 이상 전에 추가함

Feature: 심볼 수평(Shift), 수직(Alt) 이동 기능 추가

Change-Id: I5ebf2dd14542d7256e8d9f552187416b6c3357b6

차이점 보기:

DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
54 54
        self.text_area = None
55 55
        self.angle = 0
56 56
        self.origin = None
57
        self._origin = None # 원점 저장
57 58
        self.loc = None
58 59
        self.size = None
59 60
        self._owner = None
......
533 534
        """ call signals when item's position or rotation is changed """
534 535
        if not self.scene(): return super().itemChange(change, value)
535 536

  
536
        if change == QGraphicsItem.ItemPositionHasChanged or change == QGraphicsItem.ItemRotationHasChanged or change == QGraphicsItem.ItemScaleHasChanged:
537
        if (change == QGraphicsItem.ItemPositionHasChanged or change == QGraphicsItem.ItemRotationHasChanged or
538
                change == QGraphicsItem.ItemScaleHasChanged):
537 539
            from EngineeringLineItem import QEngineeringLineItem
538 540
            for connector in self.connectors:
539 541
                if connector.connectedItem is not None and type(connector.connectedItem) is QEngineeringLineItem:
......
1030 1032
    '''
1031 1033
    def mousePressEvent(self, event):
1032 1034
        if event.buttons() == Qt.LeftButton:
1035
            """마우스 클릭한 위치를 저장한다."""
1036
            self._origin = [self.origin[0], self.origin[1]]
1037

  
1033 1038
            self.clicked.emit(self)
1034 1039

  
1035 1040
    def mouseReleaseEvent(self, event):
......
1087 1092

  
1088 1093
            self.setScale(self._scale + scale if self._scale + scale > 0.3 else 0.3)
1089 1094

  
1090
        modifiers = QApplication.keyboardModifiers()
1091
        if modifiers == Qt.ShiftModifier:
1092
            super(SymbolSvgItem, self).mouseMoveEvent(event)
1093
    
1095
        if event.buttons() == Qt.MouseButton.LeftButton:
1096
            if event.modifiers() == Qt.ShiftModifier:
1097
                """수평으로만 심볼을 이동시킨다."""
1098
                dx = event.scenePos().x() - self._origin[0]
1099
                dy = event.scenePos().y() - self._origin[1]
1100

  
1101
                x = self._origin[0] + dx
1102
                dx = x - self.origin[0]
1103
                dy = self._origin[1] - self.origin[1]
1104
                self.moveBy(dx, dy)
1105
            elif event.modifiers() == Qt.AltModifier:
1106
                """수직으로만 심볼을 이동시킨다."""
1107
                dx = event.scenePos().x() - self._origin[0]
1108
                dy = event.scenePos().y() - self._origin[1]
1109

  
1110
                dx = self._origin[0] - self.origin[0]
1111
                y = self._origin[1] + dy
1112
                dy = y - self.origin[1]
1113
                self.moveBy(dx, dy)
1114

  
1094 1115
    def removeSelfAttr(self, attributeName):
1095 1116
        target = None
1096 1117
        for attr in self.attrs:

내보내기 Unified diff