개정판 a6e21860
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