diff --git a/src/view/NetworkWindow.py b/src/view/NetworkWindow.py index 83cf8ec9da5437e416679549dfc5a1e206b4de34..50a05cc2337eb3931c3014cb6e91e8d44e45322c 100644 --- a/src/view/NetworkWindow.py +++ b/src/view/NetworkWindow.py @@ -1,8 +1,69 @@ # -*- coding: utf-8 -*- from view.ASubWindow import ASubWindow +from model.network.Graph import (Node, Edge, Graph) + +from PyQt5.QtCore import ( + Qt, QVariant, QAbstractTableModel, +) + +from PyQt5.QtWidgets import ( + QTableView, +) + + +class TableModel(QAbstractTableModel): + def __init__(self, headers=[], rows=[]): + super(QAbstractTableModel, self).__init__() + self.rows = rows + self.headers = headers + + def rowCount(self, parent): + # How many rows are there? + return len(self.rows) + + def columnCount(self, parent): + # How many columns? + return len(self.headers) + + def data(self, index, role): + if role != Qt.ItemDataRole.DisplayRole: + return QVariant() + + return self.rows[index.row()][self.headers[index.column()]] + + def headerData(self, section, orientation, role): + if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.Orientation.Horizontal: + return self.headers[section].capitalize() + + if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.Orientation.Vertical: + return section + + return QVariant() + class NetworkWindow(ASubWindow): def __init__(self, title="Network", parent=None): super(NetworkWindow, self).__init__(name=title, ui="Network", parent=parent) self.ui.setWindowTitle(title) + + self.graph = Graph() + + n1 = self.graph.add_node() + n2 = self.graph.add_node() + n3 = self.graph.add_node() + + self.nodes_table_model = TableModel( + headers = ["name", "id"], + rows = self.graph.nodes() + ) + self.find(QTableView, "tableView_nodes").setModel(self.nodes_table_model) + + self.graph.add_edge(n1, n2) + self.graph.add_edge(n2, n3) + + self.reachs_table_model = TableModel( + headers = ["name", "node1", "node2"], + rows = self.graph.edges() + ) + self.find(QTableView, "tableView_reachs").setModel(self.reachs_table_model)