Skip to content
Snippets Groups Projects
Commit 46eb461a authored by Garrett Bates's avatar Garrett Bates
Browse files

Added subclass of QListWidgetItem to store pathlib.Path() objects directly.

parent 38bb0cac
No related branches found
No related tags found
1 merge request!3Main UI and miscellaneous associated widgets
import os
import sys
import pathlib
from functools import partial
from PySide2 import QtCore, QtGui, QtWidgets
from sohstationviewer.view.ui.main_ui import Ui_MainWindow
from sohstationviewer.view.calendardialog import CalendarDialog
from sohstationviewer.view.ui.calendarwidget import CalendarWidget
from sohstationviewer.view.ui.filelist import FileListItem
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
"""
......@@ -58,9 +58,12 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.dateGroup.addAction(self.showYYYYDOYDates)
self.dateGroup.addAction(self.showYYYY_MM_DDDates)
self.dateGroup.addAction(self.showYYYYMMMDDDates)
self.showYYYYDOYDates.setChecked(True)
# self.showYYYYDOYDates.setChecked(True)
self.showYYYY_MM_DDDates.setChecked(True)
self.showYYYYDOYDates.triggered.connect(lambda: self.setDateFormat('yyyy:D'))
# Connect slots to change the date format displayed
# by the QDateEdit widgets
# self.showYYYYDOYDates.triggered.connect(lambda: self.setDateFormat('yyyy:D'))
self.showYYYY_MM_DDDates.triggered.connect(lambda: self.setDateFormat('yyyy-MM-dd'))
self.showYYYYMMMDDDates.triggered.connect(lambda: self.setDateFormat('yyyyMMMdd'))
......@@ -70,7 +73,15 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.timeFromDateEdit.setCalendarWidget(CalendarWidget(self))
self.timeFromDateEdit.setDate(QtCore.QDate.currentDate())
self.showYYYYDOYDates.triggered.emit()
# self.showYYYYDOYDates.triggered.emit()
self.showYYYY_MM_DDDates.triggered.emit()
self.openFilesList.itemDoubleClicked.connect(self.openFilesListItemDoubleClicked)
pal = self.openFilesList.palette()
pal.setColor(QtGui.QPalette.Highlight, QtGui.QColor(128, 255, 128))
pal.setColor(QtGui.QPalette.HighlightedText, QtGui.QColor(0, 0, 0))
self.openFilesList.setPalette(pal)
@QtCore.Slot()
def deleteSetupFile(self):
......@@ -112,6 +123,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def readSelectedFile(self):
print('Reading currently selected file.')
# TODO: Launch a separate thread, so that
# the UI doesn't hang while data is being read.
# Otherwise, the user won't be able to cancel.
@QtCore.Slot()
def stopFileRead(self):
print('Abandoning file read.')
......@@ -124,14 +139,26 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def reloadFile(self):
print('Reloading last file.')
@QtCore.Slot()
def openFilesListItemDoubleClicked(self, item):
print(f'Opening {item.text()}')
# Do something with the Path object,
# i.e., path.open(), or path.iterdir() ...
path = item.filePath
@QtCore.Slot()
def setDateFormat(self, displayFormat):
self.timeToDateEdit.setDisplayFormat(displayFormat)
self.timeFromDateEdit.setDisplayFormat(displayFormat)
def setCurrentDirectory(self, path=''):
# Remove entries when cwd changes
self.openFilesList.clear()
# Signal cwd changed, and gather list of files in new cwd
self.currentDirectoryChanged.emit(path)
self.openFilesList.addItems([dent.name for dent in pathlib.Path(path).iterdir()])
for dent in pathlib.Path(path).iterdir():
self.openFilesList.addItem(FileListItem(dent))
@QtCore.Slot(str)
def changeCurrentDirectory(self, path=''):
......@@ -146,6 +173,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
calendar = CalendarDialog(self)
calendar.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
wnd = MainWindow()
......
from PySide2 import QtCore, QtGui, QtWidgets
class FileListItem(QtWidgets.QListWidgetItem):
def __init__(self, filePath, parent=None):
super().__init__(filePath.name, parent, type=QtWidgets.QListWidgetItem.UserType)
self.filePath = filePath
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment