개정판 fb3d352a
issue #538: symbol rotate fix
Change-Id: I3cb8436a175907b8012e47ac68d2ed43fc04f311
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py | ||
---|---|---|
67 | 67 |
self.currentCursor = 0 |
68 | 68 |
self.transfer = Transfer() |
69 | 69 |
|
70 |
self._angle = 0 |
|
71 |
|
|
70 | 72 |
try: |
71 | 73 |
f = QFile(path) |
72 | 74 |
f.open(QIODevice.ReadOnly) |
... | ... | |
875 | 877 |
''' |
876 | 878 |
|
877 | 879 |
def mouseReleaseEvent(self, event): |
878 |
if hasattr(self, '_rotating') and event.button() == Qt.RightButton and hasattr(self, '__angle'):
|
|
879 |
self.angle = -self.__angle if self.__angle > -math.pi and self.__angle < 0 else 2 * math.pi - self.__angle
|
|
880 |
if hasattr(self, '_rotating') and event.button() == Qt.RightButton: |
|
881 |
self.angle = -self._angle if self._angle > -math.pi and self._angle < 0 else 2 * math.pi - self._angle
|
|
880 | 882 |
self.ungrabMouse() |
881 | 883 |
del self._rotating |
882 | 884 |
|
... | ... | |
893 | 895 |
dy = (event.scenePos().y() - origin[1]) |
894 | 896 |
length = math.sqrt(dx * dx + dy * dy) |
895 | 897 |
|
896 |
self.__angle = 0
|
|
898 |
self._angle = 0 |
|
897 | 899 |
if length > 0: |
898 |
self.__angle = math.acos(dx / length)
|
|
899 |
cross = np.cross([1, 0], [dx, dy])
|
|
900 |
self.__angle = -self.__angle if cross < 0 else self.__angle
|
|
900 |
self._angle = math.acos(dx / length) |
|
901 |
cross = int(np.cross([1, 0], [dx, dy]))
|
|
902 |
self._angle = -self._angle if cross < 0 else self._angle
|
|
901 | 903 |
|
902 |
self.rotate(self.getCurrentPoint(), -self.__angle)
|
|
904 |
self.rotate(self.getCurrentPoint(), -self._angle) |
|
903 | 905 |
|
904 | 906 |
def removeSelfAttr(self, attributeName): |
905 | 907 |
target = None |
내보내기 Unified diff