mirror of https://gitlab.com/pamhyr/pamhyr2
model: river: Keep current reach in memory.
parent
5b33093ed1
commit
150388af12
|
|
@ -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, x:float = 0.0, y:float = 0.0):
|
||||
node = Node(
|
||||
self._nodes_ids,
|
||||
f"Node {self._nodes_ids}",
|
||||
x = x, y = y
|
||||
)
|
||||
def _add_node(self, node):
|
||||
self._nodes.append(node)
|
||||
self._nodes_ids += 1
|
||||
return node
|
||||
|
||||
def add_edge(self, n1:Node, n2:Node):
|
||||
def add_node(self, x:float = 0.0, y:float = 0.0):
|
||||
node = self._node_ctor(
|
||||
self._nodes_ids,
|
||||
f"Node {self._nodes_ids}",
|
||||
x = x, y = y
|
||||
)
|
||||
return self._add_node(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(
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue