|
@@ -26,7 +26,6 @@ class Canvas(QtWidgets.QWidget):
|
|
selectionChanged = QtCore.Signal(list)
|
|
selectionChanged = QtCore.Signal(list)
|
|
shapeMoved = QtCore.Signal()
|
|
shapeMoved = QtCore.Signal()
|
|
drawingPolygon = QtCore.Signal(bool)
|
|
drawingPolygon = QtCore.Signal(bool)
|
|
- edgeSelected = QtCore.Signal(bool, object)
|
|
|
|
vertexSelected = QtCore.Signal(bool)
|
|
vertexSelected = QtCore.Signal(bool)
|
|
|
|
|
|
CREATE, EDIT = 0, 1
|
|
CREATE, EDIT = 0, 1
|
|
@@ -181,6 +180,9 @@ class Canvas(QtWidgets.QWidget):
|
|
def selectedVertex(self):
|
|
def selectedVertex(self):
|
|
return self.hVertex is not None
|
|
return self.hVertex is not None
|
|
|
|
|
|
|
|
+ def selectedEdge(self):
|
|
|
|
+ return self.hEdge is not None
|
|
|
|
+
|
|
def mouseMoveEvent(self, ev):
|
|
def mouseMoveEvent(self, ev):
|
|
"""Update line with last point and current coordinates."""
|
|
"""Update line with last point and current coordinates."""
|
|
try:
|
|
try:
|
|
@@ -277,20 +279,34 @@ class Canvas(QtWidgets.QWidget):
|
|
self.hShape.highlightClear()
|
|
self.hShape.highlightClear()
|
|
self.prevhVertex = self.hVertex = index
|
|
self.prevhVertex = self.hVertex = index
|
|
self.prevhShape = self.hShape = shape
|
|
self.prevhShape = self.hShape = shape
|
|
- self.prevhEdge = self.hEdge = index_edge
|
|
|
|
|
|
+ self.prevhEdge = self.hEdge
|
|
|
|
+ self.hEdge = None
|
|
shape.highlightVertex(index, shape.MOVE_VERTEX)
|
|
shape.highlightVertex(index, shape.MOVE_VERTEX)
|
|
self.overrideCursor(CURSOR_POINT)
|
|
self.overrideCursor(CURSOR_POINT)
|
|
self.setToolTip(self.tr("Click & drag to move point"))
|
|
self.setToolTip(self.tr("Click & drag to move point"))
|
|
self.setStatusTip(self.toolTip())
|
|
self.setStatusTip(self.toolTip())
|
|
self.update()
|
|
self.update()
|
|
break
|
|
break
|
|
- elif shape.containsPoint(pos):
|
|
|
|
|
|
+ elif index_edge is not None and shape.canAddPoint():
|
|
if self.selectedVertex():
|
|
if self.selectedVertex():
|
|
self.hShape.highlightClear()
|
|
self.hShape.highlightClear()
|
|
self.prevhVertex = self.hVertex
|
|
self.prevhVertex = self.hVertex
|
|
self.hVertex = None
|
|
self.hVertex = None
|
|
self.prevhShape = self.hShape = shape
|
|
self.prevhShape = self.hShape = shape
|
|
self.prevhEdge = self.hEdge = index_edge
|
|
self.prevhEdge = self.hEdge = index_edge
|
|
|
|
+ self.overrideCursor(CURSOR_POINT)
|
|
|
|
+ self.setToolTip(self.tr("Click to create point"))
|
|
|
|
+ self.setStatusTip(self.toolTip())
|
|
|
|
+ self.update()
|
|
|
|
+ break
|
|
|
|
+ elif shape.containsPoint(pos):
|
|
|
|
+ if self.selectedVertex():
|
|
|
|
+ self.hShape.highlightClear()
|
|
|
|
+ self.prevhVertex = self.hVertex
|
|
|
|
+ self.hVertex = None
|
|
|
|
+ self.prevhShape = self.hShape = shape
|
|
|
|
+ self.prevhEdge = self.hEdge
|
|
|
|
+ self.hEdge = None
|
|
self.setToolTip(
|
|
self.setToolTip(
|
|
self.tr("Click & drag to move shape '%s'") % shape.label
|
|
self.tr("Click & drag to move shape '%s'") % shape.label
|
|
)
|
|
)
|
|
@@ -300,7 +316,6 @@ class Canvas(QtWidgets.QWidget):
|
|
break
|
|
break
|
|
else: # Nothing found, clear highlights, reset state.
|
|
else: # Nothing found, clear highlights, reset state.
|
|
self.unHighlight()
|
|
self.unHighlight()
|
|
- self.edgeSelected.emit(self.hEdge is not None, self.hShape)
|
|
|
|
self.vertexSelected.emit(self.hVertex is not None)
|
|
self.vertexSelected.emit(self.hVertex is not None)
|
|
|
|
|
|
def addPointToEdge(self):
|
|
def addPointToEdge(self):
|
|
@@ -365,7 +380,10 @@ class Canvas(QtWidgets.QWidget):
|
|
self.setHiding()
|
|
self.setHiding()
|
|
self.drawingPolygon.emit(True)
|
|
self.drawingPolygon.emit(True)
|
|
self.update()
|
|
self.update()
|
|
- else:
|
|
|
|
|
|
+ elif self.editing():
|
|
|
|
+ if self.selectedEdge():
|
|
|
|
+ self.addPointToEdge()
|
|
|
|
+
|
|
group_mode = int(ev.modifiers()) == QtCore.Qt.ControlModifier
|
|
group_mode = int(ev.modifiers()) == QtCore.Qt.ControlModifier
|
|
self.selectShapePoint(pos, multiple_selection_mode=group_mode)
|
|
self.selectShapePoint(pos, multiple_selection_mode=group_mode)
|
|
self.prevPoint = pos
|
|
self.prevPoint = pos
|
|
@@ -387,14 +405,6 @@ class Canvas(QtWidgets.QWidget):
|
|
# Cancel the move by deleting the shadow copy.
|
|
# Cancel the move by deleting the shadow copy.
|
|
self.selectedShapesCopy = []
|
|
self.selectedShapesCopy = []
|
|
self.repaint()
|
|
self.repaint()
|
|
- elif ev.button() == QtCore.Qt.LeftButton and self.selectedShapes:
|
|
|
|
- self.overrideCursor(CURSOR_GRAB)
|
|
|
|
- if (
|
|
|
|
- self.editing()
|
|
|
|
- and int(ev.modifiers()) == QtCore.Qt.ShiftModifier
|
|
|
|
- ):
|
|
|
|
- # Add point to line if: left-click + SHIFT on a line segment
|
|
|
|
- self.addPointToEdge()
|
|
|
|
elif ev.button() == QtCore.Qt.LeftButton and self.selectedVertex():
|
|
elif ev.button() == QtCore.Qt.LeftButton and self.selectedVertex():
|
|
if (
|
|
if (
|
|
self.editing()
|
|
self.editing()
|