|
@@ -159,7 +159,7 @@ class Canvas(QtWidgets.QWidget):
|
|
if len(self.shapesBackups) > self.num_backups:
|
|
if len(self.shapesBackups) > self.num_backups:
|
|
self.shapesBackups = self.shapesBackups[-self.num_backups - 1 :]
|
|
self.shapesBackups = self.shapesBackups[-self.num_backups - 1 :]
|
|
self.shapesBackups.append(shapesBackup)
|
|
self.shapesBackups.append(shapesBackup)
|
|
-
|
|
|
|
|
|
+
|
|
@property
|
|
@property
|
|
def isShapeRestorable(self):
|
|
def isShapeRestorable(self):
|
|
# We save the state AFTER each edit (not before) so for an
|
|
# We save the state AFTER each edit (not before) so for an
|
|
@@ -175,6 +175,7 @@ class Canvas(QtWidgets.QWidget):
|
|
# and app.py::loadShapes and our own Canvas::loadShapes function.
|
|
# and app.py::loadShapes and our own Canvas::loadShapes function.
|
|
if not self.isShapeRestorable:
|
|
if not self.isShapeRestorable:
|
|
return
|
|
return
|
|
|
|
+ print(f"shape is restorable")
|
|
self.shapesBackups.pop() # latest
|
|
self.shapesBackups.pop() # latest
|
|
|
|
|
|
# The application will eventually call Canvas.loadShapes which will
|
|
# The application will eventually call Canvas.loadShapes which will
|
|
@@ -363,7 +364,7 @@ class Canvas(QtWidgets.QWidget):
|
|
self.setStatusTip(self.toolTip())
|
|
self.setStatusTip(self.toolTip())
|
|
self.update()
|
|
self.update()
|
|
break
|
|
break
|
|
- elif shape.containsPoint(pos):
|
|
|
|
|
|
+ elif len(shape.points)!=0 and shape.containsPoint(pos) :
|
|
if self.selectedVertex():
|
|
if self.selectedVertex():
|
|
self.hShape.highlightClear()
|
|
self.hShape.highlightClear()
|
|
self.prevhVertex = self.hVertex
|
|
self.prevhVertex = self.hVertex
|
|
@@ -850,8 +851,9 @@ class Canvas(QtWidgets.QWidget):
|
|
)
|
|
)
|
|
elif self.pred_bbox_points is not None and self.draw_pred:
|
|
elif self.pred_bbox_points is not None and self.draw_pred:
|
|
print("pred mode on")
|
|
print("pred mode on")
|
|
|
|
+ current_copy=self.current.copy()
|
|
for bbox_point in self.pred_bbox_points:
|
|
for bbox_point in self.pred_bbox_points:
|
|
- drawing_shape=self.current.copy()
|
|
|
|
|
|
+ drawing_shape=current_copy.copy()
|
|
drawing_shape.setShapeRefined(
|
|
drawing_shape.setShapeRefined(
|
|
shape_type="polygon",
|
|
shape_type="polygon",
|
|
points=[QtCore.QPointF(point[0], point[1]) for point in bbox_point],
|
|
points=[QtCore.QPointF(point[0], point[1]) for point in bbox_point],
|
|
@@ -862,8 +864,11 @@ class Canvas(QtWidgets.QWidget):
|
|
self.storeShapes()
|
|
self.storeShapes()
|
|
self.update()
|
|
self.update()
|
|
self.newShape.emit()
|
|
self.newShape.emit()
|
|
- self.current.close()
|
|
|
|
- self.current = None
|
|
|
|
|
|
+ current_copy.close()
|
|
|
|
+ current_copy=None
|
|
|
|
+ if(self.current):
|
|
|
|
+ self.current.close()
|
|
|
|
+ self.current = None
|
|
self.setHiding(False)
|
|
self.setHiding(False)
|
|
self.draw_pred=False
|
|
self.draw_pred=False
|
|
return
|
|
return
|
|
@@ -1036,6 +1041,8 @@ class Canvas(QtWidgets.QWidget):
|
|
|
|
|
|
def setLastLabel(self, text, flags):
|
|
def setLastLabel(self, text, flags):
|
|
assert text
|
|
assert text
|
|
|
|
+ if(self.shapes is None or len(self.shapes)==0):
|
|
|
|
+ return
|
|
self.shapes[-1].label = text
|
|
self.shapes[-1].label = text
|
|
self.shapes[-1].flags = flags
|
|
self.shapes[-1].flags = flags
|
|
self.shapesBackups.pop()
|
|
self.shapesBackups.pop()
|
|
@@ -1043,7 +1050,8 @@ class Canvas(QtWidgets.QWidget):
|
|
return self.shapes[-1]
|
|
return self.shapes[-1]
|
|
|
|
|
|
def undoLastLine(self):
|
|
def undoLastLine(self):
|
|
- assert self.shapes
|
|
|
|
|
|
+ if(self.shapes is None or len(self.shapes)==0):
|
|
|
|
+ return
|
|
self.current = self.shapes.pop()
|
|
self.current = self.shapes.pop()
|
|
self.current.setOpen()
|
|
self.current.setOpen()
|
|
self.current.restoreShapeRaw()
|
|
self.current.restoreShapeRaw()
|