From 3a6e0764698dbc09b0a264d23ccec1f52efd404c Mon Sep 17 00:00:00 2001 From: Kentaro Wada Date: Fri, 5 Mar 2021 17:16:00 +0900 Subject: [PATCH] Fix bugs around removing points and point-empty shape --- labelme/app.py | 16 +++++++++++++++- labelme/widgets/canvas.py | 8 ++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/labelme/app.py b/labelme/app.py index 84c37ec..b777c50 100644 --- a/labelme/app.py +++ b/labelme/app.py @@ -405,7 +405,7 @@ class MainWindow(QtWidgets.QMainWindow): ) removePoint = action( text="Remove Selected Point", - slot=self.canvas.removeSelectedPoint, + slot=self.removeSelectedPoint, icon="edit", tip="Remove selected point from polygon", enabled=False, @@ -1168,6 +1168,10 @@ class MainWindow(QtWidgets.QMainWindow): group_id = shape["group_id"] other_data = shape["other_data"] + if not points: + # skip point-empty shape + continue + shape = Shape( label=label, shape_type=shape_type, @@ -1869,6 +1873,16 @@ class MainWindow(QtWidgets.QMainWindow): def toggleKeepPrevMode(self): self._config["keep_prev"] = not self._config["keep_prev"] + def removeSelectedPoint(self): + self.canvas.removeSelectedPoint() + if not self.canvas.hShape.points: + self.canvas.deleteShape(self.canvas.hShape) + self.remLabels([self.canvas.hShape]) + self.setDirty() + if self.noShapes(): + for action in self.actions.onShapesPresent: + action.setEnabled(False) + def deleteSelectedShape(self): yes, no = QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No msg = self.tr( diff --git a/labelme/widgets/canvas.py b/labelme/widgets/canvas.py index 0310545..fca3fab 100644 --- a/labelme/widgets/canvas.py +++ b/labelme/widgets/canvas.py @@ -524,6 +524,14 @@ class Canvas(QtWidgets.QWidget): self.update() return deleted_shapes + def deleteShape(self, shape): + if shape in self.selectedShapes: + self.selectedShapes.remove(shape) + if shape in self.shapes: + self.shapes.remove(shape) + self.storeShapes() + self.update() + def copySelectedShapes(self): if self.selectedShapes: self.selectedShapesCopy = [s.copy() for s in self.selectedShapes] -- GitLab