From 21e936bf6ab7d29e414d197ab501c30c22bb46cd Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Wed, 29 Mar 2023 15:41:25 +0200 Subject: [PATCH] network: Minor change and delete dead code. --- src/model/network/Edge.py | 7 ++-- src/model/network/Graph.py | 28 +++++++++++++--- src/model/network/Node.py | 3 -- src/view/network/GraphWidget.py | 57 ++++++++++++++++----------------- 4 files changed, 53 insertions(+), 42 deletions(-) diff --git a/src/model/network/Edge.py b/src/model/network/Edge.py index 1bb8cbb0..8b77c74c 100644 --- a/src/model/network/Edge.py +++ b/src/model/network/Edge.py @@ -3,7 +3,9 @@ from model.network.Node import Node class Edge(object): - def __init__(self, id:str, name:str, node1:Node = None, node2:Node = None): + def __init__(self, id:str, name:str, + node1:Node = None, + node2:Node = None): super(Edge, self).__init__() self.id = id @@ -14,9 +16,6 @@ class Edge(object): self.enable = True - def __repr__(self): - return f"Edge {{id: {self.id}, enable: {self.enable}, name: {self.name}, self.node1: {self.node1}, self.node2: {self.node2},}}" - def __getitem__(self, name): ret = None diff --git a/src/model/network/Graph.py b/src/model/network/Graph.py index 0eaf03eb..d5a080d3 100644 --- a/src/model/network/Graph.py +++ b/src/model/network/Graph.py @@ -48,7 +48,12 @@ class Graph(object): ) def node(self, node_name:str): - return list(filter(lambda n: n.name == node_name, self._nodes))[0] + return list( + filter( + lambda n: n.name == node_name, + self._nodes + ) + )[0] def add_node(self, x:float = 0.0, y:float = 0.0): node = Node( @@ -62,7 +67,9 @@ class Graph(object): def add_edge(self, n1:Node, n2:Node): # This edge already exists ? - if list(filter(lambda e: e.node1 == n1 and e.node2 == n2, self._edges)): + if list(filter(lambda e: (e.node1 == n1 and + e.node2 == n2), + self._edges)): return None edge = Edge(self._edges_ids, "", n1, n2) @@ -71,10 +78,20 @@ class Graph(object): return edge def remove_node(self, node_name:str): - self._nodes = list(filter(lambda n: n.name != node_name, self._nodes)) + self._nodes = list( + filter( + lambda n: n.name != node_name, + self._nodes + ) + ) def remove_edge(self, edge_name:str): - self._edges = list(filter(lambda e: e.name != edge_name, self._edges)) + self._edges = list( + filter( + lambda e: e.name != edge_name, + self._edges + ) + ) def is_upstream_node(self, node): return reduce( @@ -94,7 +111,8 @@ class Graph(object): return reduce( lambda acc, e: ( acc or ( - (e.node1 == node or e.node2 == node) + (e.node1 == node or + e.node2 == node) and e.enable ) ), diff --git a/src/model/network/Node.py b/src/model/network/Node.py index 73e1a7b0..c0fc06c5 100644 --- a/src/model/network/Node.py +++ b/src/model/network/Node.py @@ -11,9 +11,6 @@ class Node(object): self.name = name self.pos = Point(x, y) - def __repr__(self): - return f"Node {{id: {self.id}, name: {self.name}}}" - def __getitem__(self, name): ret = None diff --git a/src/view/network/GraphWidget.py b/src/view/network/GraphWidget.py index 305ff635..6cb69358 100644 --- a/src/view/network/GraphWidget.py +++ b/src/view/network/GraphWidget.py @@ -2,24 +2,23 @@ import math -from model.network.Node import Node -from model.network.Edge import Edge -from model.network.Graph import Graph - from PyQt5.QtCore import ( - qAbs, QLineF, QPointF, QPoint, qrand, QRectF, QSizeF, qsrand, - Qt, QTime, pyqtSlot, pyqtSignal, + Qt, QPoint, QPointF, QSizeF, QLineF, QRectF, + pyqtSlot, pyqtSignal, ) from PyQt5.QtGui import ( - QBrush, QColor, QLinearGradient, QPainter, - QPainterPath, QPen, QPolygonF, QRadialGradient, - QFont, + QPainter, QColor, QBrush, QPen, QPainterPath, + QPolygonF, ) from PyQt5.QtWidgets import ( - QApplication, QGraphicsItem, QGraphicsScene, - QGraphicsView, QStyle, QGraphicsTextItem, + QApplication,QGraphicsScene, QGraphicsView, + QGraphicsItem, QGraphicsTextItem, ) +from model.network.Node import Node +from model.network.Edge import Edge +from model.network.Graph import Graph + class NodeItem(QGraphicsItem): Type = QGraphicsItem.UserType + 1 @@ -51,7 +50,8 @@ class NodeItem(QGraphicsItem): def paint(self, painter, option, widget): painter.setPen(Qt.NoPen) - # Select in function of node position in graph or status + # Select color in function of node position in graph and + # status color = Qt.yellow if self.graph.selected_new_edge_src_node() == self: color = Qt.darkRed @@ -85,7 +85,8 @@ class NodeItem(QGraphicsItem): class EdgeItem(QGraphicsItem): Type = QGraphicsItem.UserType + 2 - def __init__(self, src_node_item, dest_node_item, edge, graph_widget): + def __init__(self, src_node_item, dest_node_item, + edge, graph_widget): super(EdgeItem, self).__init__() self.src_node = src_node_item @@ -95,21 +96,12 @@ class EdgeItem(QGraphicsItem): self.graph = graph_widget self.setAcceptedMouseButtons(Qt.NoButton) - self.adjust() def type(self): return Edge.Type - def adjust(self): - line = QLineF( - self.mapFromItem(self.src_node, 0, 0), - self.mapFromItem(self.dest_node, 0, 0) - ) - length = line.length() - - self.prepareGeometryChange() - def boundingRect(self): + # Rectangle of edge for display update pen_width = 2.0 extra = (pen_width + 5) / 2.0 @@ -122,6 +114,7 @@ class EdgeItem(QGraphicsItem): ).normalized().adjusted(-extra, -extra, extra, extra) def shape(self): + # Shape around edge for mouse selection vec = self.dest_node.pos() - self.src_node.pos() vec = vec * (5 / math.sqrt(QPointF.dotProduct(vec, vec))) extra = QPointF(vec.y(), -vec.x()) @@ -135,9 +128,9 @@ class EdgeItem(QGraphicsItem): return result def paint(self, painter, option, widget): + # Draw shape of the edge # color = QColor(Qt.white) # color.setAlpha(128) - # painter.setBrush(color) # painter.drawPath(self.shape()) @@ -371,7 +364,8 @@ class GraphWidget(QGraphicsView): node = item.node edges = list( filter( - lambda ie: ie.edge.node1 == node or ie.edge.node2 == node, + lambda ie: (ie.edge.node1 == node or + ie.edge.node2 == node), self.edge_items ) ) @@ -463,7 +457,8 @@ class GraphWidget(QGraphicsView): """ edges = list( filter( - lambda ie: ie.edge.node1 == node.node or ie.edge.node2 == node.node, + lambda ie: (ie.edge.node1 == node.node or + ie.edge.node2 == node.node), self.edge_items ) ) @@ -583,7 +578,10 @@ class GraphWidget(QGraphicsView): def drawBackground(self, painter, rect): sceneRect = self.sceneRect() - painter.fillRect(rect.intersected(sceneRect), QBrush(Qt.lightGray)) + painter.fillRect( + rect.intersected(sceneRect), + QBrush(Qt.lightGray) + ) painter.setBrush(Qt.NoBrush) painter.drawRect(sceneRect) @@ -598,8 +596,6 @@ class GraphWidget(QGraphicsView): if factor < 0.05 or factor > 1.5: return - # print(f"{scaleFactor} : {factor}") - self.scale(scaleFactor, scaleFactor) def mousePressEvent(self, event): @@ -663,7 +659,8 @@ class GraphWidget(QGraphicsView): items = self.items(event.pos()) selectable_items = list( filter( - lambda i: type(i) == NodeItem or type(i) == EdgeItem, + lambda i: (type(i) == NodeItem or + type(i) == EdgeItem), items ) ) -- GitLab