mirror of
https://github.com/CopterExpress/clever-show.git
synced 2026-05-26 23:19:33 +00:00
62 lines
2.0 KiB
Python
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 |