Procházet zdrojové kódy

Add shortcut for remove selected point (#802)

* Add a shortcut for remove selected point

* Keep the menu divider

* Stop highlighting vertices after removing a vertex

* Use backspace for remove_selected_point

Meta+H is for macOS

Co-authored-by: Kentaro Wada <www.kentaro.wada@gmail.com>
Charlie před 3 roky
rodič
revize
39d4f7611c

+ 4 - 0
labelme/app.py

@@ -402,6 +402,7 @@ class MainWindow(QtWidgets.QMainWindow):
         removePoint = action(
             text="Remove Selected Point",
             slot=self.removeSelectedPoint,
+            shortcut=shortcuts["remove_selected_point"],
             icon="edit",
             tip="Remove selected point from polygon",
             enabled=False,
@@ -603,6 +604,8 @@ class MainWindow(QtWidgets.QMainWindow):
                 undo,
                 undoLastPoint,
                 None,
+                removePoint,
+                None,
                 toggle_keep_prev_mode,
             ),
             # menu shown at right click
@@ -1878,6 +1881,7 @@ class MainWindow(QtWidgets.QMainWindow):
 
     def removeSelectedPoint(self):
         self.canvas.removeSelectedPoint()
+        self.canvas.update()
         if not self.canvas.hShape.points:
             self.canvas.deleteShape(self.canvas.hShape)
             self.remLabels([self.canvas.hShape])

+ 2 - 1
labelme/config/default_config.yaml

@@ -97,7 +97,8 @@ shortcuts:
   delete_polygon: Delete
   duplicate_polygon: Ctrl+D
   undo: Ctrl+Z
-  undo_last_point: [Ctrl+Z, Backspace]
+  undo_last_point: Ctrl+Z
   add_point_to_edge: Ctrl+Shift+P
   edit_label: Ctrl+E
   toggle_keep_prev_mode: Ctrl+P
+  remove_selected_point: [Meta+H, Backspace]

+ 4 - 6
labelme/widgets/canvas.py

@@ -333,15 +333,13 @@ class Canvas(QtWidgets.QWidget):
 
     def removeSelectedPoint(self):
         shape = self.prevhShape
-        point = self.prevMovePoint
-        if shape is None or point is None:
+        index = self.prevhVertex
+        if shape is None or index is None:
             return
-        index = shape.nearestVertex(point, self.epsilon)
         shape.removePoint(index)
-        # shape.highlightVertex(index, shape.MOVE_VERTEX)
+        shape.highlightClear()
         self.hShape = shape
-        self.hVertex = None
-        self.hEdge = None
+        self.prevhVertex = None
         self.movingShape = True  # Save changes
 
     def mousePressEvent(self, ev):