mirror of https://gitlab.com/pamhyr/pamhyr2
network: Minor change and delete dead code.
parent
892798bcb2
commit
21e936bf6a
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue