From 6aea82f22ad6300d072515115fb20871ffb246a7 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Mon, 20 Mar 2023 15:45:42 +0100 Subject: [PATCH] Network: Split graph model file. --- src/model/network/Edge.py | 52 +++++++++++++++++++++++++ src/model/network/Graph.py | 77 +------------------------------------- src/model/network/Node.py | 30 +++++++++++++++ src/model/network/Point.py | 15 ++++++++ src/view/NetworkWindow.py | 14 ++----- 5 files changed, 102 insertions(+), 86 deletions(-) create mode 100644 src/model/network/Edge.py create mode 100644 src/model/network/Node.py create mode 100644 src/model/network/Point.py diff --git a/src/model/network/Edge.py b/src/model/network/Edge.py new file mode 100644 index 00000000..220003ef --- /dev/null +++ b/src/model/network/Edge.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- + +from model.network.Node import Node + +class Edge(object): + def __init__(self, id:str, name:str, node1:Node = None, node2:Node = None): + super(Edge, self).__init__() + + self.id = id + self.name = name + + self.node1 = node1 + self.node2 = node2 + + 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 + + if name == "name": + ret = self.name + elif name == "id": + ret = self.id + elif name == "node1": + ret = self.node1.name + elif name == "node2": + ret = self.node2.name + elif name == "enable": + ret = self.enable + + return ret + + def __setitem__(self, name, value): + if name == "name": + self.name = value + elif name == "id": + self.id = value + elif name == "node1": + self.node1 = value + elif name == "node2": + self.node2 = value + elif name == "enable": + self.enable = value + + def enable(self): + self.enable = True + + def disable(self): + self.enable = False diff --git a/src/model/network/Graph.py b/src/model/network/Graph.py index ba49af66..c0efeb1d 100644 --- a/src/model/network/Graph.py +++ b/src/model/network/Graph.py @@ -2,81 +2,8 @@ from functools import reduce -class Node(object): - def __init__(self, id:str, name:str): - super(Node, self).__init__() - - self.id = id - self.name = name - - def __repr__(self): - return f"Node {{id: {self.id}, name: {self.name}}}" - - def __getitem__(self, name): - ret = None - - if name == "name": - ret = self.name - elif name == "id": - ret = self.id - - return ret - - def __setitem__(self, name, value): - if name == "name": - self.name = value - elif name == "id": - self.id = value - -class Edge(object): - def __init__(self, id:str, name:str, node1:Node = None, node2:Node = None): - super(Edge, self).__init__() - - self.id = id - self.name = name - - self.node1 = node1 - self.node2 = node2 - - 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 - - if name == "name": - ret = self.name - elif name == "id": - ret = self.id - elif name == "node1": - ret = self.node1.name - elif name == "node2": - ret = self.node2.name - elif name == "enable": - ret = self.enable - - return ret - - def __setitem__(self, name, value): - if name == "name": - self.name = value - elif name == "id": - self.id = value - elif name == "node1": - self.node1 = value - elif name == "node2": - self.node2 = value - elif name == "enable": - self.enable = value - - def enable(self): - self.enable = True - - def disable(self): - self.enable = False - +from model.network.Node import Node +from model.network.Edge import Edge class Graph(object): def __init__(self): diff --git a/src/model/network/Node.py b/src/model/network/Node.py new file mode 100644 index 00000000..e0632cee --- /dev/null +++ b/src/model/network/Node.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- + +from model.network.Point import Point + +class Node(object): + def __init__(self, id:str, name:str): + super(Node, self).__init__() + + self.id = id + self.name = name + self.pos = Point(0, 0) + + def __repr__(self): + return f"Node {{id: {self.id}, name: {self.name}}}" + + def __getitem__(self, name): + ret = None + + if name == "name": + ret = self.name + elif name == "id": + ret = self.id + + return ret + + def __setitem__(self, name, value): + if name == "name": + self.name = value + elif name == "id": + self.id = value diff --git a/src/model/network/Point.py b/src/model/network/Point.py new file mode 100644 index 00000000..bb92c356 --- /dev/null +++ b/src/model/network/Point.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- + +def Point(object): + def __init__(self, x:float, y:float): + super(Point, self).__init__() + + self.x = x + self.y = y + + def __repr__(self): + return f"({self.x}, {self.y})" + + def set_pos(self, x, y): + self.x = x + self.y = y diff --git a/src/view/NetworkWindow.py b/src/view/NetworkWindow.py index 89feb34b..95053c9c 100644 --- a/src/view/NetworkWindow.py +++ b/src/view/NetworkWindow.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- from view.ASubWindow import ASubWindow -from model.network.Graph import (Node, Edge, Graph) +from model.network.Node import Node +from model.network.Edge import Edge +from model.network.Graph import Graph from PyQt5.QtCore import ( Qt, QRect, QVariant, QAbstractTableModel, pyqtSlot, pyqtSignal, @@ -120,13 +122,6 @@ class NetworkWindow(ASubWindow): self.graph = Graph() - n1 = self.graph.add_node() # TODO: Delete me - n2 = self.graph.add_node() # TODO: Delete me - n3 = self.graph.add_node() # TODO: Delete me - - for i in range(0,100): - self.graph.add_node() # TODO: Delete me - # Nodes table self.nodes_model = TableModel( @@ -140,9 +135,6 @@ class NetworkWindow(ASubWindow): table.setItemDelegate(self.delegate_line) #table.resizeColumnsToContents() - self.graph.add_edge(n1, n2) # TODO: Delete me - self.graph.add_edge(n2, n3) # TODO: Delete me - # Edges table self.reachs_model = TableModel( -- GitLab