diff --git a/src/View/BoundaryCondition/Edit/Table.py b/src/View/BoundaryCondition/Edit/Table.py index d41a3551b286428d90b59bfaf6315a4b078a8063..99f324f8498e61cab2d7468b9e9454a147f6e4bf 100644 --- a/src/View/BoundaryCondition/Edit/Table.py +++ b/src/View/BoundaryCondition/Edit/Table.py @@ -10,12 +10,12 @@ from View.ListedSubWindow import ListedSubWindow from PyQt5.QtCore import ( Qt, QVariant, QAbstractTableModel, QCoreApplication, QModelIndex, pyqtSlot, - QRect, QTime, + QRect, QTime, QDateTime, ) from PyQt5.QtWidgets import ( QTableView, QAbstractItemView, QSpinBox, - QTimeEdit, QItemDelegate, + QTimeEdit, QDateTimeEdit, QItemDelegate, ) from Model.BoundaryCondition.BoundaryConditionTypes import ( @@ -73,6 +73,26 @@ class ExtendedTimeEdit(AWidget): return timedelta(days=days, seconds=secs) +class ExtendedDateTimeEdit(AWidget): + def __init__(self, parent=None): + super(ExtendedDateTimeEdit, self).__init__( + ui="extendedDateTimeEdit", + parent=parent + ) + self.parent = parent + + self.dateTimeEdit = self.find(QDateTimeEdit, "dateTimeEdit") + + def set_time(self, time): + qdatetime = QDateTime.fromString( + time, + "yyyy-MM-dd hh:mm:ss" + ) + self.dateTimeEdit.setDateTime(qdatetime) + + def get_time(self): + time = self.dateTimeEdit.dateTime().toPyDateTime() + return time class ExTimeDelegate(QItemDelegate): def __init__(self, data=None, mode="time", parent=None): @@ -82,18 +102,22 @@ class ExTimeDelegate(QItemDelegate): self._mode = mode def createEditor(self, parent, option, index): - self.editor = ExtendedTimeEdit(parent=parent) + if self._mode == "time": + self.editor = ExtendedTimeEdit(parent=parent) + else: + self.editor = ExtendedDateTimeEdit(parent=parent) value = index.data(Qt.DisplayRole) self.editor.set_time(value) + print(value) return self.editor - def setEditorData(self, editor, index): - value = index.data(Qt.DisplayRole) - self.editor.currentTextChanged.connect(self.currentItemChanged) - def setModelData(self, editor, model, index): time = editor.get_time() - model.setData(index, int(time.total_seconds())) + if self._mode == "time": + model.setData(index, int(time.total_seconds())) + else: + print(time.timestamp()) + model.setData(index, int(time.timestamp())) editor.close() editor.deleteLater()