Files
clever-show/Server/copter_table.py
2019-12-26 15:37:55 +03:00

62 lines
2.0 KiB
Python

import logging
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QTableView, QMessageBox
from server import Client
import copter_table_models as table
class CopterTableWidget(QTableView):
def __init__(self, model, data_model=table.CopterData):
QTableView.__init__(self)
self.model = model
self._data_model = data_model
self.proxy_model = table.CopterProxyModel()
self.signals = table.SignalManager(self.model)
self.proxy_model.setSourceModel(self.model)
self.proxy_model.setDynamicSortFilter(True)
# Initiate table and table self.model
self.setModel(self.proxy_model)
# Adjust properties
self.resizeColumnsToContents()
self.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.doubleClicked.connect(self.on_double_click)
# Some fancy wrappers to simplify syntax
def add_client(self, **kwargs):
self.signals.add_client_signal.emit(self._data_model(**kwargs))
def remove_client_data(self, row_data):
self.signals.remove_client_signal.emit(row_data)
def update_data(self, row, col, data, role=table.ModelDataRole):
self.signals.update_data_signal.emit(row, col, data, role)
@pyqtSlot(QtCore.QModelIndex)
def on_double_click(self, index):
col = index.column()
if col == 7:
data = self.proxy_model.data(index, role=table.ModelDataRole)
if data and data != "OK":
dialog = QMessageBox()
dialog.setIcon(QMessageBox.NoIcon)
dialog.setStandardButtons(QMessageBox.Ok)
dialog.setWindowTitle("Selfcheck info")
dialog.setText("\n".join(data[:10]))
dialog.setDetailedText("\n".join(data))
dialog.exec()
# def _selfcheck_shortener(self, data): # TODO!!!
# shortened = []
# for line in data:
# if len(line) > 89:
# pass
# return shortened