diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index c8b74aec70761b9811e64b8b55abda57c7e6165c..76ebe8304c8756f9ae5646997c244c63523460d0 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -1,6 +1,6 @@ package: name: nexus-passoft - version: "2023.4.2.0" + version: "2023.4.3.0" source: path: ../ diff --git a/nexus/ChannelSelectDialog.py b/nexus/ChannelSelectDialog.py index f568dc0501b7cf7b9a1a3da4f18bd0f0ecbbed2f..8aa57c3ed2ee1d30fbfb5d7a00179d60c4600899 100644 --- a/nexus/ChannelSelectDialog.py +++ b/nexus/ChannelSelectDialog.py @@ -10,8 +10,9 @@ import sys import os from PySide6.QtCore import Qt -from PySide6.QtWidgets import QApplication, QTableWidgetItem +from PySide6.QtGui import QFontMetrics from PySide6.QtUiTools import loadUiType +from PySide6.QtWidgets import QApplication, QTableWidgetItem from .obspyImproved import utc_to_str @@ -53,8 +54,8 @@ class ChannelSelectDialog(*load_ui('ChannelSelectDialog.ui')): order = self.tableWidget.horizontalHeader().sortIndicatorOrder() descending = False if order == Qt.AscendingOrder else True self.chan_map = {ind: v for ind, (_, v) in enumerate(sorted(self.chan_map.items(), - key=lambda item: getattr(item[1], row_map[column]), - reverse=descending))} + key=lambda item: getattr(item[1], row_map[column]), + reverse=descending))} def setupUi(self): super().setupUi(self) @@ -71,7 +72,18 @@ class ChannelSelectDialog(*load_ui('ChannelSelectDialog.ui')): utc_to_str(chan.start_date), utc_to_str(chan.end_date), )): - self.tableWidget.setItem(row, col, QTableWidgetItem(value)) + item = QTableWidgetItem() + item.setText(value) + # shorten start/end time + if col == 3 or col == 4: + # 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.chan_map[row] = chan assert True self.tableWidget.resizeColumnsToContents() diff --git a/nexus/__init__.py b/nexus/__init__.py index 4688dc0c14281571bff686d769ba7665c573c085..b5481e17a23e07909aafffb8c22f704eaf565a3d 100644 --- a/nexus/__init__.py +++ b/nexus/__init__.py @@ -4,4 +4,4 @@ __author__ = """IRIS PASSCAL""" __email__ = 'software-support@passcal.nmt.edu' -__version__ = '2023.4.2.0' +__version__ = '2023.4.3.0' diff --git a/nexus/nexus.py b/nexus/nexus.py index 623d9c50ba30e797b80d8fcd402b54277cc37fa4..5c7fa115726c357ff57a84206d728df9d9b8250b 100755 --- a/nexus/nexus.py +++ b/nexus/nexus.py @@ -12,7 +12,7 @@ import traceback from PySide6 import QtCore, QtGui, QtWidgets from PySide6.QtUiTools import loadUiType -from PySide6.QtWidgets import QMessageBox +from PySide6.QtWidgets import QMessageBox, QHeaderView from PySide6.QtCore import Qt from obspy import read_inventory @@ -550,14 +550,21 @@ class InventoryModel(QtCore.QAbstractItemModel): def data(self, index, role): node = self.get_node(index) - if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: - return node.get_data(index.column()) - # if index.column() == 0: - # return node.name - # if index.column() == 1: - # return node.start - # if index.column() == 2: - # return node.end + value = node.get_data(index.column()) + if role == QtCore.Qt.DisplayRole: + # rounded start/end time on left panel + if index.column() == 3 or index.column() == 4: + value = QtGui.QFontMetrics(QtGui.QFont()).elidedText(value, + QtGui.Qt.ElideRight, + 100) + return value + return value + if role == QtCore.Qt.EditRole: + return value + # show full start/end time as tooltip in mouse hover + if role == Qt.ToolTipRole: + if index.column() == 3 or index.column() == 4: + return value if role == QtCore.Qt.BackgroundRole: try: if node._inv_obj._new: @@ -929,12 +936,13 @@ class NexusWindow(*load_ui("NexusWindow.ui")): self.status_message('Saving{}...Done.'.format(file_name)) def reshape_tree(self): - ''' + """ Expands entire tree and makes contents fit columns - ''' + """ self.uiInventoryTree.expandAll() for col in range(self.inv_model.columnCount(None)): self.uiInventoryTree.resizeColumnToContents(col) + self.uiInventoryTree.header().setSectionResizeMode(QHeaderView.Fixed) def closeEvent(self, event): """ diff --git a/nexus/obspyImproved.py b/nexus/obspyImproved.py index 97fef2fd9ff545e1e91e1c8fee1878242729d65b..c71617bbc94f8947b412239ebcff6b6fc536176c 100644 --- a/nexus/obspyImproved.py +++ b/nexus/obspyImproved.py @@ -687,10 +687,12 @@ class InventoryIm(Inventory): # Utitlity functions. Live elsewhere? def utc_to_str(date): try: - return '{}.{:03d}.{:02d}:{:02d}'.format(date.year, - date.julday, - date.hour, - date.minute) + return '{}.{:03d}.{:02d}:{:02d}.{:>02d}.{:>06d}'.format(date.year, + date.julday, + date.hour, + date.minute, + date.second, + date.microsecond) except: try: return str(date) diff --git a/setup.py b/setup.py index 104fb65d173716a2cbe632b8ee848a9e48023dba..9e54d29bfeab058fde9b35d39f82f759753d0835 100644 --- a/setup.py +++ b/setup.py @@ -50,6 +50,6 @@ setup( packages=find_packages(include=['nexus']), test_suite='tests', url='https://git.passcal.nmt.edu/software_public/passoft/nexus', - version='2023.4.2.0', + version='2023.4.3.0', zip_safe=False, )