From 33e752ad1928cdc83b09529a3dd161228a0c196c Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Wed, 29 Mar 2023 14:38:25 +0200
Subject: [PATCH] network: Define edge shape.

---
 src/view/network/GraphWidget.py | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/view/network/GraphWidget.py b/src/view/network/GraphWidget.py
index 3f909a60..b1021195 100644
--- a/src/view/network/GraphWidget.py
+++ b/src/view/network/GraphWidget.py
@@ -110,7 +110,7 @@ class EdgeItem(QGraphicsItem):
         self.prepareGeometryChange()
 
     def boundingRect(self):
-        pen_width = 3.0
+        pen_width = 2.0
         extra = (pen_width + 5) / 2.0
 
         return QRectF(
@@ -121,12 +121,25 @@ class EdgeItem(QGraphicsItem):
             )
         ).normalized().adjusted(-extra, -extra, extra, extra)
 
+    def shape(self):
+        vec = self.dest_node.pos() - self.src_node.pos()
+        vec = vec * (5 / math.sqrt(QPointF.dotProduct(vec, vec)))
+        extra = QPointF(vec.y(), -vec.x())
+
+        result = QPainterPath(self.src_node.pos() - vec + extra)
+        result.lineTo(self.src_node.pos() - vec - extra)
+        result.lineTo(self.dest_node.pos() + vec - extra)
+        result.lineTo(self.dest_node.pos() + vec + extra)
+        result.closeSubpath()
+
+        return result
+
     def paint(self, painter, option, widget):
         # color = QColor(Qt.white)
         # color.setAlpha(128)
 
         # painter.setBrush(color)
-        # painter.drawRect(self.boundingRect())
+        # painter.drawPath(self.shape())
 
         line = QLineF(self.src_node.pos(), self.dest_node.pos())
         if line.length() == 0.0:
@@ -564,10 +577,6 @@ class GraphWidget(QGraphicsView):
             self.scaleView(1 / 1.2)
         elif key == Qt.Key_Escape:
             self.reset_selection()
-        elif key == Qt.Key_Space or key == Qt.Key_Enter:
-            for item in self.scene().items():
-                if isinstance(item, Node):
-                    item.setPos(-150 + qrand() % 300, -150 + qrand() % 300)
         else:
             super(GraphWidget, self).keyPressEvent(event)
 
-- 
GitLab