개정판 9c878e3e
issue #000: fix symbol move
Change-Id: If1a9a43e784920c2b38db678c7a24b447152ba18
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py | ||
---|---|---|
373 | 373 |
def itemChange(self, change, value): |
374 | 374 |
""" call signals when item's position or rotation is changed """ |
375 | 375 |
if not self.scene(): return super().itemChange(change, value) |
376 |
|
|
376 |
|
|
377 | 377 |
if change == QGraphicsItem.ItemPositionChange or change == QGraphicsItem.ItemRotationChange: |
378 | 378 |
for conn in self.connectors: |
379 | 379 |
conn.sceneConnectPoint = (conn.sceneBoundingRect().center().x(), conn.sceneBoundingRect().center().y()) |
... | ... | |
830 | 830 |
self.angle = angle |
831 | 831 |
self.loc = [x - self.symbolOrigin[0], y - self.symbolOrigin[1]] |
832 | 832 |
self.origin = [x, y] |
833 |
scene = self.scene() |
|
834 |
scene.removeItem(self) |
|
835 |
self.addSvgItemToScene(scene) |
|
833 |
#scene = self.scene() |
|
834 |
#scene.removeItem(self) |
|
835 |
#self.addSvgItemToScene(scene) |
|
836 |
self.rotate(self.getCurrentPoint(), self.angle) |
|
836 | 837 |
self.setZValue(z) |
837 | 838 |
elif event.key() == Qt.Key_Escape: |
838 | 839 |
if hasattr(self, '_rotating'): |
... | ... | |
846 | 847 |
|
847 | 848 |
del self._rotating |
848 | 849 |
elif event.key() == Qt.Key_Up: ### translate up/down/left/right symbol |
849 |
self.moveBy(0, -1) |
|
850 |
self.loc[1] = self.loc[1] - 1 |
|
851 |
self.origin[1] = self.origin[1] - 1 |
|
852 |
self.rotate(self.getCurrentPoint(), self.angle) |
|
850 | 853 |
elif event.key() == Qt.Key_Down: |
851 |
self.moveBy(0, 1) |
|
854 |
self.loc[1] = self.loc[1] + 1 |
|
855 |
self.origin[1] = self.origin[1] + 1 |
|
856 |
self.rotate(self.getCurrentPoint(), self.angle) |
|
852 | 857 |
elif event.key() == Qt.Key_Left: |
853 |
self.moveBy(-1, 0) |
|
858 |
self.loc[0] = self.loc[0] - 1 |
|
859 |
self.origin[0] = self.origin[0] - 1 |
|
860 |
self.rotate(self.getCurrentPoint(), self.angle) |
|
854 | 861 |
elif event.key() == Qt.Key_Right: |
855 |
self.moveBy(1, 0) |
|
862 |
self.loc[0] = self.loc[0] + 1 |
|
863 |
self.origin[0] = self.origin[0] + 1 |
|
864 |
self.rotate(self.getCurrentPoint(), self.angle) |
|
856 | 865 |
|
857 | 866 |
''' |
858 | 867 |
@brief connect attribute |
... | ... | |
1057 | 1066 |
node.append(connectionNode) |
1058 | 1067 |
|
1059 | 1068 |
locNode = Element('LOCATION') |
1069 |
locNode.text = '{},{}'.format(self.loc[0], self.loc[1]) |
|
1070 |
''' |
|
1060 | 1071 |
# calculate symbol's left-top corner |
1061 | 1072 |
transform = QTransform() |
1062 | 1073 |
transform.translate(self.scenePos().x(), self.scenePos().y()) |
... | ... | |
1064 | 1075 |
loc = transform.map(QPointF(self.symbolOrigin[0], self.symbolOrigin[1])) |
1065 | 1076 |
# up to here |
1066 | 1077 |
locNode.text = '{},{}'.format(loc.x() - self.symbolOrigin[0], loc.y() - self.symbolOrigin[1]) |
1078 |
''' |
|
1067 | 1079 |
node.append(locNode) |
1068 | 1080 |
|
1069 | 1081 |
sizeNode = Element('SIZE') |
... | ... | |
1565 | 1577 |
@date 2018.07.24 |
1566 | 1578 |
''' |
1567 | 1579 |
def rotate(self, standardPoint, angle): |
1568 |
self.setRotation(0) # force to emit itemChange signal |
|
1580 |
#self.setRotation(0) # force to emit itemChange signal
|
|
1569 | 1581 |
self.setTransform(self.get_transform(standardPoint, angle)) |
1570 | 1582 |
|
1571 | 1583 |
''' |
내보내기 Unified diff