개정판 12ce6b0f
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