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 from model.network.Node import Node
class Edge(object): 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__() super(Edge, self).__init__()
self.id = id self.id = id
@ -14,9 +16,6 @@ class Edge(object):
self.enable = True 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): def __getitem__(self, name):
ret = None ret = None

View File

@ -48,7 +48,12 @@ class Graph(object):
) )
def node(self, node_name:str): 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): def add_node(self, x:float = 0.0, y:float = 0.0):
node = Node( node = Node(
@ -62,7 +67,9 @@ class Graph(object):
def add_edge(self, n1:Node, n2:Node): def add_edge(self, n1:Node, n2:Node):
# This edge already exists ? # 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 return None
edge = Edge(self._edges_ids, "", n1, n2) edge = Edge(self._edges_ids, "", n1, n2)
@ -71,10 +78,20 @@ class Graph(object):
return edge return edge
def remove_node(self, node_name:str): 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): 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): def is_upstream_node(self, node):
return reduce( return reduce(
@ -94,7 +111,8 @@ class Graph(object):
return reduce( return reduce(
lambda acc, e: ( lambda acc, e: (
acc or ( acc or (
(e.node1 == node or e.node2 == node) (e.node1 == node or
e.node2 == node)
and e.enable and e.enable
) )
), ),

View File

@ -11,9 +11,6 @@ class Node(object):
self.name = name self.name = name
self.pos = Point(x, y) self.pos = Point(x, y)
def __repr__(self):
return f"Node {{id: {self.id}, name: {self.name}}}"
def __getitem__(self, name): def __getitem__(self, name):
ret = None ret = None

View File

@ -2,24 +2,23 @@
import math 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.Node import Node
from model.network.Edge import Edge from model.network.Edge import Edge
from model.network.Graph import Graph 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): class NodeItem(QGraphicsItem):
Type = QGraphicsItem.UserType + 1 Type = QGraphicsItem.UserType + 1
@ -51,7 +50,8 @@ class NodeItem(QGraphicsItem):
def paint(self, painter, option, widget): def paint(self, painter, option, widget):
painter.setPen(Qt.NoPen) 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 color = Qt.yellow
if self.graph.selected_new_edge_src_node() == self: if self.graph.selected_new_edge_src_node() == self:
color = Qt.darkRed color = Qt.darkRed
@ -85,7 +85,8 @@ class NodeItem(QGraphicsItem):
class EdgeItem(QGraphicsItem): class EdgeItem(QGraphicsItem):
Type = QGraphicsItem.UserType + 2 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__() super(EdgeItem, self).__init__()
self.src_node = src_node_item self.src_node = src_node_item
@ -95,21 +96,12 @@ class EdgeItem(QGraphicsItem):
self.graph = graph_widget self.graph = graph_widget
self.setAcceptedMouseButtons(Qt.NoButton) self.setAcceptedMouseButtons(Qt.NoButton)
self.adjust()
def type(self): def type(self):
return Edge.Type 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): def boundingRect(self):
# Rectangle of edge for display update
pen_width = 2.0 pen_width = 2.0
extra = (pen_width + 5) / 2.0 extra = (pen_width + 5) / 2.0
@ -122,6 +114,7 @@ class EdgeItem(QGraphicsItem):
).normalized().adjusted(-extra, -extra, extra, extra) ).normalized().adjusted(-extra, -extra, extra, extra)
def shape(self): def shape(self):
# Shape around edge for mouse selection
vec = self.dest_node.pos() - self.src_node.pos() vec = self.dest_node.pos() - self.src_node.pos()
vec = vec * (5 / math.sqrt(QPointF.dotProduct(vec, vec))) vec = vec * (5 / math.sqrt(QPointF.dotProduct(vec, vec)))
extra = QPointF(vec.y(), -vec.x()) extra = QPointF(vec.y(), -vec.x())
@ -135,9 +128,9 @@ class EdgeItem(QGraphicsItem):
return result return result
def paint(self, painter, option, widget): def paint(self, painter, option, widget):
# Draw shape of the edge
# color = QColor(Qt.white) # color = QColor(Qt.white)
# color.setAlpha(128) # color.setAlpha(128)
# painter.setBrush(color) # painter.setBrush(color)
# painter.drawPath(self.shape()) # painter.drawPath(self.shape())
@ -371,7 +364,8 @@ class GraphWidget(QGraphicsView):
node = item.node node = item.node
edges = list( edges = list(
filter( 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 self.edge_items
) )
) )
@ -463,7 +457,8 @@ class GraphWidget(QGraphicsView):
""" """
edges = list( edges = list(
filter( 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 self.edge_items
) )
) )
@ -583,7 +578,10 @@ class GraphWidget(QGraphicsView):
def drawBackground(self, painter, rect): def drawBackground(self, painter, rect):
sceneRect = self.sceneRect() sceneRect = self.sceneRect()
painter.fillRect(rect.intersected(sceneRect), QBrush(Qt.lightGray)) painter.fillRect(
rect.intersected(sceneRect),
QBrush(Qt.lightGray)
)
painter.setBrush(Qt.NoBrush) painter.setBrush(Qt.NoBrush)
painter.drawRect(sceneRect) painter.drawRect(sceneRect)
@ -598,8 +596,6 @@ class GraphWidget(QGraphicsView):
if factor < 0.05 or factor > 1.5: if factor < 0.05 or factor > 1.5:
return return
# print(f"{scaleFactor} : {factor}")
self.scale(scaleFactor, scaleFactor) self.scale(scaleFactor, scaleFactor)
def mousePressEvent(self, event): def mousePressEvent(self, event):
@ -663,7 +659,8 @@ class GraphWidget(QGraphicsView):
items = self.items(event.pos()) items = self.items(event.pos())
selectable_items = list( selectable_items = list(
filter( filter(
lambda i: type(i) == NodeItem or type(i) == EdgeItem, lambda i: (type(i) == NodeItem or
type(i) == EdgeItem),
items items
) )
) )