Ver Fonte

Disable snapping while Alt is pressed

Kentaro Wada há 3 anos atrás
pai
commit
3f9350b99c
1 ficheiros alterados com 11 adições e 1 exclusões
  1. 11 1
      labelme/widgets/canvas.py

+ 11 - 1
labelme/widgets/canvas.py

@@ -76,6 +76,7 @@ class Canvas(QtWidgets.QWidget):
         self.hEdge = None
         self.prevhEdge = None
         self.movingShape = False
+        self.snapping = True
         self._painter = QtGui.QPainter()
         self._cursor = CURSOR_DEFAULT
         # Menus:
@@ -206,7 +207,8 @@ class Canvas(QtWidgets.QWidget):
                 # Project the point to the pixmap's edges.
                 pos = self.intersectionPoint(self.current[-1], pos)
             elif (
-                len(self.current) > 1
+                self.snapping
+                and len(self.current) > 1
                 and self.createMode == "polygon"
                 and self.closeEnough(pos, self.current[0])
             ):
@@ -730,6 +732,7 @@ class Canvas(QtWidgets.QWidget):
         ev.accept()
 
     def keyPressEvent(self, ev):
+        modifiers = ev.modifiers()
         key = ev.key()
         if key == QtCore.Qt.Key_Escape and self.current:
             self.current = None
@@ -737,6 +740,13 @@ class Canvas(QtWidgets.QWidget):
             self.update()
         elif key == QtCore.Qt.Key_Return and self.canCloseShape():
             self.finalise()
+        elif modifiers == QtCore.Qt.AltModifier:
+            self.snapping = False
+
+    def keyReleaseEvent(self, ev):
+        modifiers = ev.modifiers()
+        if int(modifiers) == 0:
+            self.snapping = True
 
     def setLastLabel(self, text, flags):
         assert text