network: Minor change and delete dead code.

mesh
Pierre-Antoine Rouby 2023-03-29 15:41:25 +02:00
parent 892798bcb2
commit 21e936bf6a
4 changed files with 56 additions and 45 deletions

View File

@ -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

View File

@ -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
)
),

View File

@ -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

View File

@ -2,24 +2,23 @@
import math
from PyQt5.QtCore import (
Qt, QPoint, QPointF, QSizeF, QLineF, QRectF,
pyqtSlot, pyqtSignal,
)
from PyQt5.QtGui import (
QPainter, QColor, QBrush, QPen, QPainterPath,
QPolygonF,
)
from PyQt5.QtWidgets import (
QApplication,QGraphicsScene, QGraphicsView,
QGraphicsItem, QGraphicsTextItem,
)
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,
)
from PyQt5.QtGui import (
QBrush, QColor, QLinearGradient, QPainter,
QPainterPath, QPen, QPolygonF, QRadialGradient,
QFont,
)
from PyQt5.QtWidgets import (
QApplication, QGraphicsItem, QGraphicsScene,
QGraphicsView, QStyle, QGraphicsTextItem,
)
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
)
)