diff --git a/nexus/StationSelectDialog.py b/nexus/StationSelectDialog.py index e4a580c4cb6fb990fb76e84beb0b637077ae4499..4e8b0efdd6d0b15962efeb11da961ccdcb6a5cbd 100644 --- a/nexus/StationSelectDialog.py +++ b/nexus/StationSelectDialog.py @@ -5,11 +5,10 @@ Dialog for selecting stations to copy Datalogger Type, Sensor Type and Gain """ -import sys import os -from PySide6.QtGui import QFont, QFontMetrics, Qt -from PySide6.QtWidgets import QApplication, QTableWidgetItem, QAbstractItemView +from PySide6.QtGui import QFontMetrics, Qt +from PySide6.QtWidgets import QTableWidgetItem, QAbstractItemView, QHeaderView from PySide6.QtUiTools import loadUiType from .obspyImproved import utc_to_str @@ -31,7 +30,7 @@ class StationSelectDialog(*load_ui('StationSelectDialog.ui')): def __init__(self, stations, action, values, parent=None): super().__init__(parent) self.stations = stations - self.stat_map = {} + self.sta_map = {} self.action = action self.values = values self.setupUi() @@ -40,7 +39,7 @@ class StationSelectDialog(*load_ui('StationSelectDialog.ui')): rows = set(item.row() for item in self.tableWidget.selectedItems()) self.selected_stations = [] for row in rows: - self.selected_stations.append(self.stat_map[row]) + self.selected_stations.append(self.sta_map[row]) super().accept() def sort_table(self, column): @@ -51,15 +50,13 @@ class StationSelectDialog(*load_ui('StationSelectDialog.ui')): row_map = {0: 'code', 1: 'start_date', 2: 'end_date'} order = self.tableWidget.horizontalHeader().sortIndicatorOrder() descending = False if order == Qt.AscendingOrder else True - self.stat_map = {ind: v for ind, (_, v) in enumerate(sorted(self.stat_map.items(), - key=lambda item: getattr(item[1], row_map[column]), - reverse=descending))} + self.sta_map = {ind: v for ind, (_, v) in enumerate(sorted(self.sta_map.items(), + key=lambda item: getattr(item[1], row_map[column]), + reverse=descending))} def setupUi(self): super().setupUi(self) self.setWindowTitle('Select Stations') - self.tableWidget.setSelectionMode(QAbstractItemView.ExtendedSelection) - if self.action == 'type & gain': self.uiGainCB.setChecked(True) self.uiGainCB.setText(f"Copy Datalogger Gain: {self.values[0]}") @@ -74,31 +71,21 @@ class StationSelectDialog(*load_ui('StationSelectDialog.ui')): self.tableWidget.setRowCount(len(self.stations)) self.tableWidget.horizontalHeader().sectionClicked.connect(self.sort_table) # Add stations to table - for row, stat in enumerate(self.stations): - self.tableWidget.setItem( - row, 0, QTableWidgetItem('{:<3s}'.format(stat.code))) - - # full start/time - start_date = utc_to_str(stat.start_date) - start_item = QTableWidgetItem() - start_item.setToolTip(start_date) - # shortened start/time - start_date = QFontMetrics(QFont()).elidedText( - start_date, Qt.ElideRight, 100) - start_item.setText(start_date) - self.tableWidget.setItem( - row, 1, start_item) - - # full start/time - end_date = utc_to_str(stat.end_date) - end_item = QTableWidgetItem() - end_item.setToolTip(end_date) - # shortened start/time - end_date = QFontMetrics(QFont()).elidedText( - end_date, Qt.ElideRight, 100) - end_item.setText(end_date) - self.tableWidget.setItem( - row, 2, end_item) - - self.stat_map[row] = stat + for row, sta in enumerate(self.stations): + for col, value in enumerate(('{:<3s}'.format(sta.code), + utc_to_str(sta.start_date), + utc_to_str(sta.end_date))): + item = QTableWidgetItem() + item.setText(value) + # shorten start/end time + if col == 1 or col == 2: + # full time as tooltip + item.setToolTip(value) + # rounded time in table + value = QFontMetrics(self.tableWidget.font()).elidedText(value, + Qt.ElideRight, + 100) + item.setText(value) + self.tableWidget.setItem(row, col, item) + self.sta_map[row] = sta self.tableWidget.resizeColumnsToContents()