From c84ab379d18571e52a0d16ab0dda50f903148082 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Fri, 24 Mar 2023 10:55:21 +0100 Subject: [PATCH] network: Remove landmark and minor change. --- src/view/network/GraphWidget.py | 68 ++++++++++++++------------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/src/view/network/GraphWidget.py b/src/view/network/GraphWidget.py index 86b40fa0..d42edecb 100644 --- a/src/view/network/GraphWidget.py +++ b/src/view/network/GraphWidget.py @@ -20,36 +20,6 @@ from PyQt5.QtWidgets import ( QGraphicsView, QStyle, QGraphicsTextItem, ) -class LandMark(QGraphicsItem): - def __init__(self, width, height, parent=None): - super(LandMark, self).__init__() - - self.width = width - self.height = height - - self.center = QPoint(width / 2, height / 2) - self.parent = parent - - def paint(self, painter, option, widget): - painter.setPen(Qt.NoPen) - painter.setPen(QPen(Qt.black, 0)) - - painter.drawLine( - -10 + self.center.x(), 0 + self.center.y(), - 10 + self.center.x(), 0 + self.center.y() - ) - painter.drawLine( - 0 + self.center.x(), -10 + self.center.y(), - 0 + self.center.x(), 10 + self.center.y() - ) - - def boundingRect(self): - return QRectF( - -10 + self.center.x(), -10 + self.center.y(), - 10 + self.center.x(), 10 + self.center.y() - ) - - class NodeItem(QGraphicsItem): Type = QGraphicsItem.UserType + 1 @@ -174,11 +144,11 @@ class EdgeItem(QGraphicsItem): ).normalized().adjusted(-extra, -extra, extra, extra) def paint(self, painter, option, widget): - color = QColor(Qt.white) - color.setAlpha(128) + # color = QColor(Qt.white) + # color.setAlpha(128) - painter.setBrush(color) - painter.drawRect(self.boundingRect()) + # painter.setBrush(color) + # painter.drawRect(self.boundingRect()) line = QLineF(self.src_node.pos(), self.dest_node.pos()) @@ -188,10 +158,11 @@ class EdgeItem(QGraphicsItem): color = Qt.blue if self.graph.selectedItem() == self: color = Qt.red + elif self.graph.currentEdge() == self: + color = Qt.darkBlue elif not self.graph.graph.is_enable_edge(self.edge): color = Qt.darkGray - painter.setPen(QPen(color, 3, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) painter.drawLine(line) @@ -290,6 +261,7 @@ class GraphWidget(QGraphicsView): self._selectedItem = None self._selectedNewEdgeSrcNode = None + self._currentEdge = None self.tmp_line = None self.node_items = [] @@ -345,9 +317,6 @@ class GraphWidget(QGraphicsView): self.scene().addItem(iedge) self.edge_items.append(iedge) - # self.mark = LandMark(1000, 1000, self) - # self.scene().addItem(self.mark) - def state(self, status): self._state = status @@ -463,6 +432,16 @@ class GraphWidget(QGraphicsView): if previous_node: previous_node.update() + def currentEdge(self): + return self._currentEdge + + def setCurrentEdge(self, edge): + previous_edge = self._selectedNewEdgeSrcNode + self._currentEdge = edge + + if previous_edge: + previous_edge.update() + def reset_selection(self): self.setSelectedNewEdgeSrcNode(None) if self.tmp_line is not None: @@ -500,7 +479,9 @@ class GraphWidget(QGraphicsView): self.scaleView(math.pow(2.0, -event.angleDelta().y() / 240.0)) def scaleView(self, scaleFactor): - factor = self.transform().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width() + factor = self.transform().scale( + scaleFactor, scaleFactor + ).mapRect(QRectF(0, 0, 1, 1)).width() if factor < 0.05 or factor > 1.5: return @@ -512,9 +493,17 @@ class GraphWidget(QGraphicsView): def mousePressEvent(self, event): pos = self.mapToScene(event.pos()) if self._state == "move": + self._selectedNewEdgeSrcNode = None + self.mouse_origin_x = pos.x() self.mouse_origin_y = pos.y() + items = self.items(event.pos()) + if type(items[0]) == EdgeItem: + edge = items[0] + if edge: + self.setCurrentEdge(edge) + elif self._state == "add": items = self.items(event.pos()) nodes = list(filter(lambda i: type(i) == NodeItem, items)) @@ -527,6 +516,7 @@ class GraphWidget(QGraphicsView): self.add_edge(self.selectedNewEdgeSrcNode(), nodes[0]) elif self._state == "del": + self._selectedNewEdgeSrcNode = None items = list( filter( lambda i: type(i) == NodeItem or type(i) == EdgeItem, -- GitLab