ソースを参照

Fixes #462, check shape type before emitting signal to allow to add points

Jakub Gregorek 5 年 前
コミット
f9752e46a0
3 ファイル変更6 行追加5 行削除
  1. 1 3
      labelme/app.py
  2. 3 0
      labelme/shape.py
  3. 2 2
      labelme/widgets/canvas.py

+ 1 - 3
labelme/app.py

@@ -481,9 +481,7 @@ class MainWindow(QtWidgets.QMainWindow):
             onShapesPresent=(saveAs, hideAll, showAll),
         )
 
-        self.canvas.edgeSelected.connect(
-            self.actions.addPointToEdge.setEnabled
-        )
+        self.canvas.possibleToAddPoint.connect(self.actions.addPointToEdge.setEnabled)
 
         self.menus = utils.struct(
             file=self.menu('&File'),

+ 3 - 0
labelme/shape.py

@@ -84,6 +84,9 @@ class Shape(object):
         else:
             self.points.append(point)
 
+    def canAddPoint(self):
+        return self.shape_type in ['polygon', 'linestrip']
+
     def popPoint(self):
         if self.points:
             return self.points.pop()

+ 2 - 2
labelme/widgets/canvas.py

@@ -26,7 +26,7 @@ class Canvas(QtWidgets.QWidget):
     selectionChanged = QtCore.Signal(list)
     shapeMoved = QtCore.Signal()
     drawingPolygon = QtCore.Signal(bool)
-    edgeSelected = QtCore.Signal(bool)
+    possibleToAddPoint = QtCore.Signal(bool)
 
     CREATE, EDIT = 0, 1
 
@@ -267,7 +267,7 @@ class Canvas(QtWidgets.QWidget):
                 self.hShape.highlightClear()
                 self.update()
             self.hVertex, self.hShape, self.hEdge = None, None, None
-        self.edgeSelected.emit(self.hEdge is not None)
+        self.possibleToAddPoint.emit(self.hEdge is not None and self.hShape is not None and self.hShape.canAddPoint())
 
     def addPointToEdge(self):
         if (self.hShape is None and