From da5cc5becc1f0aa4a5d997a57670d954750ba75a Mon Sep 17 00:00:00 2001 From: Arthur Golubtsov Date: Thu, 19 Sep 2019 15:03:40 +0300 Subject: [PATCH] Server UI: Add Select All menu button and shortcut, set row size to fit headers names on start --- Server/copter_table_models.py | 8 ++++++++ Server/server_qt.py | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Server/copter_table_models.py b/Server/copter_table_models.py index 7367a0e..1603365 100644 --- a/Server/copter_table_models.py +++ b/Server/copter_table_models.py @@ -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: diff --git a/Server/server_qt.py b/Server/server_qt.py index 6443325..570df75 100644 --- a/Server/server_qt.py +++ b/Server/server_qt.py @@ -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))