diff --git a/src/Model/Network/Graph.py b/src/Model/Network/Graph.py index 8cc6de21e58d763f695e85dce9b49abd64033c78..ad9d6f67ab40b04044f56735c336e5fc18f581cc 100644 --- a/src/Model/Network/Graph.py +++ b/src/Model/Network/Graph.py @@ -9,6 +9,9 @@ class Graph(object): def __init__(self): super(Graph, self).__init__() + self._node_ctor = Node + self._edge_ctor = Edge + self._nodes_ids = 0 self._edges_ids = 0 @@ -55,27 +58,34 @@ class Graph(object): ) )[0] + def _add_node(self, node): + self._nodes.append(node) + self._nodes_ids += 1 + return node + def add_node(self, x:float = 0.0, y:float = 0.0): - node = Node( + node = self._node_ctor( self._nodes_ids, f"Node {self._nodes_ids}", x = x, y = y ) - self._nodes.append(node) - self._nodes_ids += 1 - return node + return self._add_node(node) - def add_edge(self, n1:Node, n2:Node): + def _add_edge(self, edge): # This edge already exists ? - if any(filter(lambda e: (e.node1 == n1 and e.node2 == n2), + if any(filter(lambda e: (e.node1 == edge.node1 and + e.node2 == edge.node2), self._edges)): return None - edge = Edge(self._edges_ids, "", n1, n2) self._edges.append(edge) self._edges_ids += 1 return edge + def add_edge(self, n1:Node, n2:Node): + edge = self._edge_ctor(self._edges_ids, "", n1, n2) + return self._add_edge(edge) + def remove_node(self, node_name:str): self._nodes = list( filter( diff --git a/src/Model/River.py b/src/Model/River.py index 4094bc91294b09c5d8b87ad01ad93e84230dfffa..b38470c1430485edbf040d08bf41600a9d7d6644 100644 --- a/src/Model/River.py +++ b/src/Model/River.py @@ -31,3 +31,16 @@ class RiverReach(Edge): class River(Graph): def __init__(self): super(River, self).__init__() + + # Replace Node and Edge ctor by custom ctor + self._node_ctor = RiverNode + self._edge_ctor = RiverReach + + self._current_reach = None + + + def current_reach(self): + return self._current_reach + + def current_reach(self, reach): + self._current_reach = reach diff --git a/src/View/Network/GraphWidget.py b/src/View/Network/GraphWidget.py index 0bd70655138ef0fb10262c2c63d561bcf13897cb..a0d1921400d332efad32953873a6b052350b40ae 100644 --- a/src/View/Network/GraphWidget.py +++ b/src/View/Network/GraphWidget.py @@ -548,6 +548,7 @@ class GraphWidget(QGraphicsView): """ previous_edge = self._current_edge self._current_edge = edge + self.graph.current_reach(edge.edge) if previous_edge: previous_edge.update()