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