Server UI: Add Select All menu button and shortcut, set row size to fit headers names on start

This commit is contained in:
Arthur Golubtsov
2019-09-19 15:03:40 +03:00
parent 56fb329309
commit da5cc5becc
2 changed files with 12 additions and 2 deletions

View File

@@ -37,6 +37,7 @@ class CopterDataModel(QtCore.QAbstractTableModel):
super(CopterDataModel, self).__init__(parent)
self.headers = ('copter ID', 'animation ID', 'battery V', 'battery %', 'system status', 'calibration status', 'selfcheck', 'time delta')
self.data_contents = []
self.first_col_is_checked = False
def insertRows(self, contents, position='last', parent=QtCore.QModelIndex()):
rows = len(contents)
@@ -131,6 +132,13 @@ class CopterDataModel(QtCore.QAbstractTableModel):
return True
def select_all(self):
self.first_col_is_checked = not self.first_col_is_checked
for copter in self.data_contents:
copter.checked = int(self.first_col_is_checked)*2
for row in range(len(self.data_contents)):
self.update_model(self.index(row, 0))
def flags(self, index):
roles = Qt.ItemIsSelectable | Qt.ItemIsEnabled
if index.column() == 0:

View File

@@ -53,6 +53,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.signals = SignalManager()
self.gyro_calibrated = {}
self.level_calibrated = {}
self.first_col_is_checked = False
self.init_model()
@@ -64,8 +65,7 @@ class MainWindow(QtWidgets.QMainWindow):
# Initiate table and table self.model
self.ui.tableView.setModel(self.proxy_model)
#self.ui.tableView.horizontalHeader().setStretchLastSection(True)
#self.ui.tableView.setSortingEnabled(True)
self.ui.tableView.resizeColumnsToContents()
# Connect signals to manipulate model from threads
self.signals.update_data_signal.connect(self.model.update_item)
@@ -88,6 +88,8 @@ class MainWindow(QtWidgets.QMainWindow):
self.model.selected_calibration_ready_signal.connect(self.ui.calibrate_gyro.setEnabled)
self.model.selected_calibration_ready_signal.connect(self.ui.calibrate_level.setEnabled)
self.ui.action_select_all_rows.triggered.connect(self.model.select_all)
def client_connected(self, client: Client):
self.signals.add_client_signal.emit(CopterData(copter_id=client.copter_id, client=client))