41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTableView
|
|
from PyQt5.QtCore import pyqtSignal, Qt
|
|
|
|
from nixview.util.file_handler import FileHandler
|
|
from nixview.util.dataview import DataView
|
|
from nixview.communicator import communicator
|
|
from nixview.data_models.table_model import TableModel
|
|
|
|
class TableScreen(QWidget):
|
|
close_signal = pyqtSignal()
|
|
|
|
def __init__(self, parent=None) -> None:
|
|
super().__init__(parent=parent)
|
|
self._file_handler = FileHandler()
|
|
|
|
self.table = QTableView()
|
|
self.table.setSortingEnabled(False)
|
|
self.table.setShowGrid(True)
|
|
|
|
close_btn = QPushButton("close")
|
|
close_btn.clicked.connect(self.on_close)
|
|
|
|
self.setLayout(QVBoxLayout())
|
|
self.layout().addWidget(self.table)
|
|
self.layout().addWidget(close_btn)
|
|
self._data_view = None
|
|
|
|
def on_close(self):
|
|
self.close_signal.emit()
|
|
|
|
def show(self, item):
|
|
try:
|
|
self._data_view = DataView(item, self._file_handler)
|
|
except ValueError as e:
|
|
communicator.table_error.emit("error in tablescreen.show %s" % e)
|
|
return
|
|
if self._data_view is None:
|
|
return
|
|
data_model = TableModel(self._file_handler, self._data_view)
|
|
self.table.setModel(data_model)
|