From bc946e1027bb44a30a4809363b4da09b5448ff97 Mon Sep 17 00:00:00 2001
From: Dominik Demuth
Date: Mon, 3 Jul 2023 18:21:55 +0200
Subject: [PATCH] interim save
---
AppImageBuilder.yml | 2 +-
src/gui_qt/_py/tnmh_dialog.py | 370 +++++++--------
src/gui_qt/dsc/glass_dialog.py | 79 ++--
src/gui_qt/main/management.py | 9 +-
src/nmreval/dsc/hodge.py | 10 +-
src/resources/_ui/tnmh_dialog.ui | 755 ++++++++++++++-----------------
6 files changed, 573 insertions(+), 652 deletions(-)
diff --git a/AppImageBuilder.yml b/AppImageBuilder.yml
index fb8b178..084c2e8 100644
--- a/AppImageBuilder.yml
+++ b/AppImageBuilder.yml
@@ -12,7 +12,7 @@ script:
# Copy the python application code into the AppDir
- cp bin/evaluate.py $TARGET_APPDIR/usr/bin/
- cp -r src/* $TARGET_APPDIR/usr/src/
- - cp src/pkm.vogel.nmreval.desktop $TARGET_APPDIR/usr/share/applications
+ - cp src/resources/pkm.vogel.nmreval.desktop $TARGET_APPDIR/usr/share/applications
# set current date as version info
- sed -i "s/CURRENT_DATE/$(date +'%Y-%m-%d')/" $TARGET_APPDIR/usr/src/nmreval/version.py
diff --git a/src/gui_qt/_py/tnmh_dialog.py b/src/gui_qt/_py/tnmh_dialog.py
index a9924e4..6037040 100644
--- a/src/gui_qt/_py/tnmh_dialog.py
+++ b/src/gui_qt/_py/tnmh_dialog.py
@@ -11,59 +11,44 @@
from PyQt5 import QtCore, QtGui, QtWidgets
-class Ui_Dialog(object):
- def setupUi(self, Dialog):
- Dialog.setObjectName("Dialog")
- Dialog.resize(1094, 829)
- self.gridLayout = QtWidgets.QGridLayout(Dialog)
+class Ui_Wizard(object):
+ def setupUi(self, Wizard):
+ Wizard.setObjectName("Wizard")
+ Wizard.resize(854, 619)
+ self.wizardPage1 = QtWidgets.QWizardPage()
+ self.wizardPage1.setObjectName("wizardPage1")
+ self.gridLayout = QtWidgets.QGridLayout(self.wizardPage1)
self.gridLayout.setObjectName("gridLayout")
- self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
- self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
- self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Close)
- self.buttonBox.setObjectName("buttonBox")
- self.gridLayout.addWidget(self.buttonBox, 5, 1, 1, 1)
- self.verticalLayout = QtWidgets.QVBoxLayout()
- self.verticalLayout.setObjectName("verticalLayout")
- self.listWidget = QtWidgets.QListWidget(Dialog)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Expanding)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.listWidget.sizePolicy().hasHeightForWidth())
- self.listWidget.setSizePolicy(sizePolicy)
- self.listWidget.setObjectName("listWidget")
- self.verticalLayout.addWidget(self.listWidget)
- self.label = QtWidgets.QLabel(Dialog)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
- self.label.setSizePolicy(sizePolicy)
- self.label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
- self.label.setObjectName("label")
- self.verticalLayout.addWidget(self.label)
- self.tg_value_label = QtWidgets.QLabel(Dialog)
- self.tg_value_label.setText("")
- self.tg_value_label.setObjectName("tg_value_label")
- self.verticalLayout.addWidget(self.tg_value_label)
- self.label_4 = QtWidgets.QLabel(Dialog)
- self.label_4.setObjectName("label_4")
- self.verticalLayout.addWidget(self.label_4)
- self.label_5 = QtWidgets.QLabel(Dialog)
- self.label_5.setText("")
- self.label_5.setObjectName("label_5")
- self.verticalLayout.addWidget(self.label_5)
- self.gridLayout.addLayout(self.verticalLayout, 0, 0, 5, 1)
- self.dsc_plot = PlotWidget(Dialog)
+ self.treeWidget = QtWidgets.QTreeWidget(self.wizardPage1)
+ self.treeWidget.setObjectName("treeWidget")
+ self.treeWidget.headerItem().setText(0, "1")
+ self.treeWidget.header().setVisible(False)
+ self.gridLayout.addWidget(self.treeWidget, 2, 0, 1, 1)
+ self.gridLayout_9 = QtWidgets.QGridLayout()
+ self.gridLayout_9.setObjectName("gridLayout_9")
+ self.tg_export_check = QtWidgets.QCheckBox(self.wizardPage1)
+ self.tg_export_check.setChecked(True)
+ self.tg_export_check.setObjectName("tg_export_check")
+ self.gridLayout_9.addWidget(self.tg_export_check, 0, 0, 1, 1)
+ spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.gridLayout_9.addItem(spacerItem, 3, 0, 1, 1)
+ self.tglines_export_check = QtWidgets.QCheckBox(self.wizardPage1)
+ self.tglines_export_check.setChecked(True)
+ self.tglines_export_check.setObjectName("tglines_export_check")
+ self.gridLayout_9.addWidget(self.tglines_export_check, 0, 1, 1, 1)
+ self.pushButton = QtWidgets.QPushButton(self.wizardPage1)
+ self.pushButton.setObjectName("pushButton")
+ self.gridLayout_9.addWidget(self.pushButton, 2, 0, 1, 2)
+ self.gridLayout.addLayout(self.gridLayout_9, 2, 1, 1, 1)
+ self.dsc_plot = PlotWidget(self.wizardPage1)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.dsc_plot.sizePolicy().hasHeightForWidth())
self.dsc_plot.setSizePolicy(sizePolicy)
self.dsc_plot.setObjectName("dsc_plot")
- self.gridLayout.addWidget(self.dsc_plot, 0, 1, 1, 1)
- self.verticalLayout_2 = QtWidgets.QVBoxLayout()
- self.verticalLayout_2.setObjectName("verticalLayout_2")
- self.calctg_button = QtWidgets.QToolButton(Dialog)
+ self.gridLayout.addWidget(self.dsc_plot, 1, 0, 1, 2)
+ self.calctg_button = QtWidgets.QToolButton(self.wizardPage1)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -72,171 +57,156 @@ class Ui_Dialog(object):
self.calctg_button.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
self.calctg_button.setArrowType(QtCore.Qt.RightArrow)
self.calctg_button.setObjectName("calctg_button")
- self.verticalLayout_2.addWidget(self.calctg_button)
- self.toolButton_2 = QtWidgets.QToolButton(Dialog)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred)
+ self.gridLayout.addWidget(self.calctg_button, 0, 0, 1, 2)
+ Wizard.addPage(self.wizardPage1)
+ self.wizardPage2 = QtWidgets.QWizardPage()
+ self.wizardPage2.setObjectName("wizardPage2")
+ self.gridLayout_2 = QtWidgets.QGridLayout(self.wizardPage2)
+ self.gridLayout_2.setObjectName("gridLayout_2")
+ self.toolButton = QtWidgets.QToolButton(self.wizardPage2)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.toolButton_2.sizePolicy().hasHeightForWidth())
- self.toolButton_2.setSizePolicy(sizePolicy)
- self.toolButton_2.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
- self.toolButton_2.setAutoRaise(False)
- self.toolButton_2.setArrowType(QtCore.Qt.RightArrow)
- self.toolButton_2.setObjectName("toolButton_2")
- self.verticalLayout_2.addWidget(self.toolButton_2)
- self.gridLayout.addLayout(self.verticalLayout_2, 0, 2, 1, 1)
- self.tabWidget = QtWidgets.QTabWidget(Dialog)
- self.tabWidget.setTabPosition(QtWidgets.QTabWidget.East)
- self.tabWidget.setObjectName("tabWidget")
- self.tabWidgetPage1 = QtWidgets.QWidget()
- self.tabWidgetPage1.setObjectName("tabWidgetPage1")
- self.gridLayout_3 = QtWidgets.QGridLayout(self.tabWidgetPage1)
- self.gridLayout_3.setObjectName("gridLayout_3")
- self.tglines_export_check = QtWidgets.QCheckBox(self.tabWidgetPage1)
- self.tglines_export_check.setChecked(True)
- self.tglines_export_check.setObjectName("tglines_export_check")
- self.gridLayout_3.addWidget(self.tglines_export_check, 2, 3, 1, 1)
- self.checkBox_6 = QtWidgets.QCheckBox(self.tabWidgetPage1)
- self.checkBox_6.setChecked(True)
- self.checkBox_6.setObjectName("checkBox_6")
- self.gridLayout_3.addWidget(self.checkBox_6, 6, 3, 1, 1)
- self.new_graph_tau_combo = QtWidgets.QComboBox(self.tabWidgetPage1)
- self.new_graph_tau_combo.setObjectName("new_graph_tau_combo")
- self.gridLayout_3.addWidget(self.new_graph_tau_combo, 8, 3, 1, 1)
- self.line = QtWidgets.QFrame(self.tabWidgetPage1)
- self.line.setFrameShape(QtWidgets.QFrame.HLine)
- self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
- self.line.setObjectName("line")
- self.gridLayout_3.addWidget(self.line, 3, 2, 1, 2)
- self.checkBox = QtWidgets.QCheckBox(self.tabWidgetPage1)
- self.checkBox.setChecked(True)
- self.checkBox.setObjectName("checkBox")
- self.gridLayout_3.addWidget(self.checkBox, 5, 2, 1, 1)
- self.tg_export_check = QtWidgets.QCheckBox(self.tabWidgetPage1)
- self.tg_export_check.setChecked(True)
- self.tg_export_check.setObjectName("tg_export_check")
- self.gridLayout_3.addWidget(self.tg_export_check, 2, 2, 1, 1)
- self.new_graph_tau_check = QtWidgets.QCheckBox(self.tabWidgetPage1)
- self.new_graph_tau_check.setChecked(True)
- self.new_graph_tau_check.setObjectName("new_graph_tau_check")
- self.gridLayout_3.addWidget(self.new_graph_tau_check, 8, 2, 1, 1)
- self.checkBox_5 = QtWidgets.QCheckBox(self.tabWidgetPage1)
- self.checkBox_5.setChecked(True)
- self.checkBox_5.setObjectName("checkBox_5")
- self.gridLayout_3.addWidget(self.checkBox_5, 6, 2, 1, 1)
- spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
- self.gridLayout_3.addItem(spacerItem, 10, 3, 1, 1)
- self.label_6 = QtWidgets.QLabel(self.tabWidgetPage1)
- self.label_6.setObjectName("label_6")
- self.gridLayout_3.addWidget(self.label_6, 4, 2, 1, 2)
- self.checkBox_4 = QtWidgets.QCheckBox(self.tabWidgetPage1)
- self.checkBox_4.setChecked(True)
- self.checkBox_4.setObjectName("checkBox_4")
- self.gridLayout_3.addWidget(self.checkBox_4, 5, 3, 1, 1)
- self.checkBox_7 = QtWidgets.QCheckBox(self.tabWidgetPage1)
- self.checkBox_7.setChecked(True)
- self.checkBox_7.setObjectName("checkBox_7")
- self.gridLayout_3.addWidget(self.checkBox_7, 7, 2, 1, 1)
- self.pushButton_4 = QtWidgets.QPushButton(self.tabWidgetPage1)
- self.pushButton_4.setObjectName("pushButton_4")
- self.gridLayout_3.addWidget(self.pushButton_4, 9, 2, 1, 2)
- self.tghodge_graph = PlotWidget(self.tabWidgetPage1)
+ sizePolicy.setHeightForWidth(self.toolButton.sizePolicy().hasHeightForWidth())
+ self.toolButton.setSizePolicy(sizePolicy)
+ self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
+ self.toolButton.setArrowType(QtCore.Qt.RightArrow)
+ self.toolButton.setObjectName("toolButton")
+ self.gridLayout_2.addWidget(self.toolButton, 0, 0, 1, 2)
+ self.tghodge_graph = PlotWidget(self.wizardPage2)
self.tghodge_graph.setObjectName("tghodge_graph")
- self.gridLayout_3.addWidget(self.tghodge_graph, 2, 1, 9, 1)
- self.tau_plot = PlotWidget(self.tabWidgetPage1)
+ self.gridLayout_2.addWidget(self.tghodge_graph, 2, 0, 1, 1)
+ self.tau_plot = PlotWidget(self.wizardPage2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.MinimumExpanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tau_plot.sizePolicy().hasHeightForWidth())
self.tau_plot.setSizePolicy(sizePolicy)
self.tau_plot.setObjectName("tau_plot")
- self.gridLayout_3.addWidget(self.tau_plot, 2, 0, 9, 1)
- self.tabWidget.addTab(self.tabWidgetPage1, "")
- self.tabWidgetPage2 = QtWidgets.QWidget()
- self.tabWidgetPage2.setObjectName("tabWidgetPage2")
- self.gridLayout_2 = QtWidgets.QGridLayout(self.tabWidgetPage2)
- self.gridLayout_2.setObjectName("gridLayout_2")
- self.fit_tnhm_fitbutton = QtWidgets.QPushButton(self.tabWidgetPage2)
- self.fit_tnhm_fitbutton.setObjectName("fit_tnhm_fitbutton")
- self.gridLayout_2.addWidget(self.fit_tnhm_fitbutton, 1, 1, 1, 2)
- self.graphicsView_2 = PlotWidget(self.tabWidgetPage2)
- self.graphicsView_2.setObjectName("graphicsView_2")
- self.gridLayout_2.addWidget(self.graphicsView_2, 0, 0, 9, 1)
- self.new_graph_tnmh_check = QtWidgets.QCheckBox(self.tabWidgetPage2)
- self.new_graph_tnmh_check.setChecked(True)
- self.new_graph_tnmh_check.setObjectName("new_graph_tnmh_check")
- self.gridLayout_2.addWidget(self.new_graph_tnmh_check, 5, 1, 1, 1)
- self.horizontalLayout = QtWidgets.QHBoxLayout()
- self.horizontalLayout.setObjectName("horizontalLayout")
- self.label_2 = QtWidgets.QLabel(self.tabWidgetPage2)
- self.label_2.setObjectName("label_2")
- self.horizontalLayout.addWidget(self.label_2)
- self.tnmh_tg_combo = QtWidgets.QComboBox(self.tabWidgetPage2)
- self.tnmh_tg_combo.setObjectName("tnmh_tg_combo")
- self.tnmh_tg_combo.addItem("")
- self.tnmh_tg_combo.addItem("")
- self.tnmh_tg_combo.addItem("")
- self.tnmh_tg_combo.addItem("")
- self.tnmh_tg_combo.addItem("")
- self.horizontalLayout.addWidget(self.tnmh_tg_combo)
- self.gridLayout_2.addLayout(self.horizontalLayout, 0, 1, 1, 2)
- self.new_graph_tnmh_combo = QtWidgets.QComboBox(self.tabWidgetPage2)
- self.new_graph_tnmh_combo.setObjectName("new_graph_tnmh_combo")
- self.gridLayout_2.addWidget(self.new_graph_tnmh_combo, 5, 2, 1, 1)
- self.line_2 = QtWidgets.QFrame(self.tabWidgetPage2)
- self.line_2.setMinimumSize(QtCore.QSize(0, 0))
- self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
- self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
- self.line_2.setObjectName("line_2")
- self.gridLayout_2.addWidget(self.line_2, 2, 1, 1, 2)
- self.checkBox_2 = QtWidgets.QCheckBox(self.tabWidgetPage2)
- self.checkBox_2.setObjectName("checkBox_2")
- self.gridLayout_2.addWidget(self.checkBox_2, 3, 1, 1, 2)
- self.checkBox_3 = QtWidgets.QCheckBox(self.tabWidgetPage2)
- self.checkBox_3.setObjectName("checkBox_3")
- self.gridLayout_2.addWidget(self.checkBox_3, 4, 1, 1, 2)
+ self.gridLayout_2.addWidget(self.tau_plot, 2, 1, 1, 1)
+ self.gridLayout_4 = QtWidgets.QGridLayout()
+ self.gridLayout_4.setObjectName("gridLayout_4")
+ self.checkBox_6 = QtWidgets.QCheckBox(self.wizardPage2)
+ self.checkBox_6.setChecked(True)
+ self.checkBox_6.setObjectName("checkBox_6")
+ self.gridLayout_4.addWidget(self.checkBox_6, 2, 0, 1, 1)
+ self.pushButton_4 = QtWidgets.QPushButton(self.wizardPage2)
+ self.pushButton_4.setObjectName("pushButton_4")
+ self.gridLayout_4.addWidget(self.pushButton_4, 2, 2, 1, 1)
+ self.new_graph_tau_check = QtWidgets.QCheckBox(self.wizardPage2)
+ self.new_graph_tau_check.setChecked(True)
+ self.new_graph_tau_check.setObjectName("new_graph_tau_check")
+ self.gridLayout_4.addWidget(self.new_graph_tau_check, 0, 1, 1, 1)
+ self.checkBox_7 = QtWidgets.QCheckBox(self.wizardPage2)
+ self.checkBox_7.setChecked(True)
+ self.checkBox_7.setObjectName("checkBox_7")
+ self.gridLayout_4.addWidget(self.checkBox_7, 4, 0, 1, 1)
+ self.checkBox_5 = QtWidgets.QCheckBox(self.wizardPage2)
+ self.checkBox_5.setChecked(True)
+ self.checkBox_5.setObjectName("checkBox_5")
+ self.gridLayout_4.addWidget(self.checkBox_5, 3, 0, 1, 1)
+ self.new_graph_tau_combo = QtWidgets.QComboBox(self.wizardPage2)
+ self.new_graph_tau_combo.setObjectName("new_graph_tau_combo")
+ self.gridLayout_4.addWidget(self.new_graph_tau_combo, 0, 2, 1, 1)
+ self.checkBox_4 = QtWidgets.QCheckBox(self.wizardPage2)
+ self.checkBox_4.setChecked(True)
+ self.checkBox_4.setObjectName("checkBox_4")
+ self.gridLayout_4.addWidget(self.checkBox_4, 1, 0, 1, 1)
+ self.checkBox = QtWidgets.QCheckBox(self.wizardPage2)
+ self.checkBox.setChecked(True)
+ self.checkBox.setObjectName("checkBox")
+ self.gridLayout_4.addWidget(self.checkBox, 0, 0, 1, 1)
+ self.gridLayout_2.addLayout(self.gridLayout_4, 3, 0, 1, 2)
+ Wizard.addPage(self.wizardPage2)
+ self.wizardPage = QtWidgets.QWizardPage()
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.MinimumExpanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.wizardPage.sizePolicy().hasHeightForWidth())
+ self.wizardPage.setSizePolicy(sizePolicy)
+ self.wizardPage.setSubTitle("")
+ self.wizardPage.setObjectName("wizardPage")
+ self.gridLayout_6 = QtWidgets.QGridLayout(self.wizardPage)
+ self.gridLayout_6.setObjectName("gridLayout_6")
+ self.fit_tnhm_fitbutton_2 = QtWidgets.QPushButton(self.wizardPage)
+ self.fit_tnhm_fitbutton_2.setObjectName("fit_tnhm_fitbutton_2")
+ self.gridLayout_6.addWidget(self.fit_tnhm_fitbutton_2, 0, 0, 1, 2)
+ self.graphicsView_3 = PlotWidget(self.wizardPage)
+ self.graphicsView_3.setObjectName("graphicsView_3")
+ self.gridLayout_6.addWidget(self.graphicsView_3, 1, 0, 1, 1)
+ self.gridLayout_3 = QtWidgets.QGridLayout()
+ self.gridLayout_3.setObjectName("gridLayout_3")
+ self.tnmh_tg_combo_2 = QtWidgets.QComboBox(self.wizardPage)
+ self.tnmh_tg_combo_2.setObjectName("tnmh_tg_combo_2")
+ self.tnmh_tg_combo_2.addItem("")
+ self.tnmh_tg_combo_2.addItem("")
+ self.tnmh_tg_combo_2.addItem("")
+ self.tnmh_tg_combo_2.addItem("")
+ self.tnmh_tg_combo_2.addItem("")
+ self.gridLayout_3.addWidget(self.tnmh_tg_combo_2, 0, 1, 1, 1)
+ self.label_3 = QtWidgets.QLabel(self.wizardPage)
+ self.label_3.setObjectName("label_3")
+ self.gridLayout_3.addWidget(self.label_3, 0, 0, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
- self.gridLayout_2.addItem(spacerItem1, 8, 1, 1, 1)
- self.pushButton = QtWidgets.QPushButton(self.tabWidgetPage2)
- self.pushButton.setObjectName("pushButton")
- self.gridLayout_2.addWidget(self.pushButton, 7, 1, 1, 2)
- self.tabWidget.addTab(self.tabWidgetPage2, "")
- self.gridLayout.addWidget(self.tabWidget, 4, 1, 1, 2)
+ self.gridLayout_3.addItem(spacerItem1, 1, 0, 1, 1)
+ self.gridLayout_6.addLayout(self.gridLayout_3, 1, 1, 1, 1)
+ self.treeWidget_2 = QtWidgets.QTreeWidget(self.wizardPage)
+ self.treeWidget_2.setObjectName("treeWidget_2")
+ self.treeWidget_2.headerItem().setText(0, "1")
+ self.gridLayout_6.addWidget(self.treeWidget_2, 2, 0, 1, 1)
+ self.gridLayout_5 = QtWidgets.QGridLayout()
+ self.gridLayout_5.setObjectName("gridLayout_5")
+ self.new_graph_tnmh_check_2 = QtWidgets.QCheckBox(self.wizardPage)
+ self.new_graph_tnmh_check_2.setChecked(True)
+ self.new_graph_tnmh_check_2.setObjectName("new_graph_tnmh_check_2")
+ self.gridLayout_5.addWidget(self.new_graph_tnmh_check_2, 1, 0, 1, 1)
+ self.checkBox_14 = QtWidgets.QCheckBox(self.wizardPage)
+ self.checkBox_14.setObjectName("checkBox_14")
+ self.gridLayout_5.addWidget(self.checkBox_14, 0, 0, 1, 1)
+ self.pushButton_2 = QtWidgets.QPushButton(self.wizardPage)
+ self.pushButton_2.setObjectName("pushButton_2")
+ self.gridLayout_5.addWidget(self.pushButton_2, 2, 0, 1, 2)
+ self.checkBox_13 = QtWidgets.QCheckBox(self.wizardPage)
+ self.checkBox_13.setObjectName("checkBox_13")
+ self.gridLayout_5.addWidget(self.checkBox_13, 0, 1, 1, 1)
+ self.new_graph_tnmh_combo_2 = QtWidgets.QComboBox(self.wizardPage)
+ self.new_graph_tnmh_combo_2.setObjectName("new_graph_tnmh_combo_2")
+ self.gridLayout_5.addWidget(self.new_graph_tnmh_combo_2, 1, 1, 1, 1)
+ spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.gridLayout_5.addItem(spacerItem2, 3, 0, 1, 1)
+ self.gridLayout_6.addLayout(self.gridLayout_5, 2, 1, 1, 1)
+ Wizard.addPage(self.wizardPage)
- self.retranslateUi(Dialog)
- self.tabWidget.setCurrentIndex(0)
- self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
- self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
- QtCore.QMetaObject.connectSlotsByName(Dialog)
+ self.retranslateUi(Wizard)
+ QtCore.QMetaObject.connectSlotsByName(Wizard)
- def retranslateUi(self, Dialog):
+ def retranslateUi(self, Wizard):
_translate = QtCore.QCoreApplication.translate
- Dialog.setWindowTitle(_translate("Dialog", "SImba, everything the light touches is our kingdom"))
- self.label.setText(_translate("Dialog", "
Tg values:
"))
- self.label_4.setText(_translate("Dialog", "TNMH parameter:
"))
- self.calctg_button.setText(_translate("Dialog", "Calculate Tg"))
- self.toolButton_2.setText(_translate("Dialog", "Calculate fictive Cp"))
- self.tglines_export_check.setText(_translate("Dialog", "Export lines"))
- self.checkBox_6.setText(_translate("Dialog", "End"))
- self.checkBox.setText(_translate("Dialog", "Onset"))
- self.tg_export_check.setText(_translate("Dialog", "Export Tg"))
- self.new_graph_tau_check.setText(_translate("Dialog", "New graph"))
- self.checkBox_5.setText(_translate("Dialog", "Inflection"))
- self.label_6.setText(_translate("Dialog", "Export Hodge:"))
- self.checkBox_4.setText(_translate("Dialog", "Midpoint"))
- self.checkBox_7.setText(_translate("Dialog", "Fictive"))
- self.pushButton_4.setText(_translate("Dialog", "Export"))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabWidgetPage1), _translate("Dialog", "Tg / Hodge"))
- self.fit_tnhm_fitbutton.setText(_translate("Dialog", "Fit TNMH model"))
- self.new_graph_tnmh_check.setText(_translate("Dialog", "New graph"))
- self.label_2.setText(_translate("Dialog", "Tg for TNMH"))
- self.tnmh_tg_combo.setItemText(0, _translate("Dialog", "Fictive"))
- self.tnmh_tg_combo.setItemText(1, _translate("Dialog", "Onset"))
- self.tnmh_tg_combo.setItemText(2, _translate("Dialog", "Midpoint"))
- self.tnmh_tg_combo.setItemText(3, _translate("Dialog", "End"))
- self.tnmh_tg_combo.setItemText(4, _translate("Dialog", "Inflection"))
- self.checkBox_2.setText(_translate("Dialog", "Export dTf / dT"))
- self.checkBox_3.setText(_translate("Dialog", "Export fit"))
- self.pushButton.setText(_translate("Dialog", "Export"))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabWidgetPage2), _translate("Dialog", "TNMH"))
+ Wizard.setWindowTitle(_translate("Wizard", "Wizard"))
+ self.wizardPage1.setTitle(_translate("Wizard", "Glass transition"))
+ self.tg_export_check.setText(_translate("Wizard", "Export Tg"))
+ self.tglines_export_check.setText(_translate("Wizard", "Export lines"))
+ self.pushButton.setText(_translate("Wizard", "Export"))
+ self.calctg_button.setText(_translate("Wizard", "Calculate Tg"))
+ self.wizardPage2.setTitle(_translate("Wizard", "Hodge"))
+ self.toolButton.setText(_translate("Wizard", "Calculate Hodge"))
+ self.checkBox_6.setText(_translate("Wizard", "End"))
+ self.pushButton_4.setText(_translate("Wizard", "Export"))
+ self.new_graph_tau_check.setText(_translate("Wizard", "New graph"))
+ self.checkBox_7.setText(_translate("Wizard", "Fictive"))
+ self.checkBox_5.setText(_translate("Wizard", "Inflection"))
+ self.checkBox_4.setText(_translate("Wizard", "Midpoint"))
+ self.checkBox.setText(_translate("Wizard", "Onset"))
+ self.wizardPage.setTitle(_translate("Wizard", "TNMH"))
+ self.fit_tnhm_fitbutton_2.setText(_translate("Wizard", "Fit TNMH model"))
+ self.tnmh_tg_combo_2.setItemText(0, _translate("Wizard", "Fictive"))
+ self.tnmh_tg_combo_2.setItemText(1, _translate("Wizard", "Onset"))
+ self.tnmh_tg_combo_2.setItemText(2, _translate("Wizard", "Midpoint"))
+ self.tnmh_tg_combo_2.setItemText(3, _translate("Wizard", "End"))
+ self.tnmh_tg_combo_2.setItemText(4, _translate("Wizard", "Inflection"))
+ self.label_3.setText(_translate("Wizard", "Tg for TNMH"))
+ self.new_graph_tnmh_check_2.setText(_translate("Wizard", "New graph"))
+ self.checkBox_14.setText(_translate("Wizard", "Export fit"))
+ self.pushButton_2.setText(_translate("Wizard", "Export"))
+ self.checkBox_13.setText(_translate("Wizard", "Export dTf / dT"))
from pyqtgraph import PlotWidget
diff --git a/src/gui_qt/dsc/glass_dialog.py b/src/gui_qt/dsc/glass_dialog.py
index ede88f7..11e388d 100644
--- a/src/gui_qt/dsc/glass_dialog.py
+++ b/src/gui_qt/dsc/glass_dialog.py
@@ -6,20 +6,26 @@ from pyqtgraph import mkPen, mkBrush, LegendItem
from nmreval.dsc.hodge import tau_hodge
from nmreval.lib.colors import Tab10
-from ..Qt import QtWidgets, QtCore
-from .._py.tnmh_dialog import Ui_Dialog
+from ..Qt import QtWidgets, QtCore, QtGui
+from .._py.tnmh_dialog import Ui_Wizard
+from ..lib.listwidget import QListWidgetSelect
from ..lib.pg_objects import PlotItem, RegionItem
from nmreval.data import DSC, Points
-class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
- newTg = QtCore.pyqtSignal(dict, list, str)
+class TgCalculator(QtWidgets.QWizard, Ui_Wizard):
+ newTg = QtCore.pyqtSignal(dict)
def __init__(self, management, parent=None):
super().__init__(parent=parent)
self.setupUi(self)
+ self.listWidget = QListWidgetSelect(parent=self)
+ self.listWidget.setObjectName('listWidget')
+ self.setSideWidget(self.listWidget)
+ self.listWidget.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding))
+
self._management = management
self._colors = cycle(Tab10)
@@ -56,8 +62,13 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
PlotItem(x=[], y=[], pen=None, symbol='d', symbolBrush=Tab10.TabRed.rgb())),
None,
),
- # 'fictive': PlotItem(x=[], y=[], pen=None, symbol='t1', symbolBrush=Tab10.TabPurple.rgb(), name='Fictive'),
- # 'TNMH': PlotItem(x=[], y=[], pen=None, symbol='star', symbolBrush=Tab10.TabPurple.rgb(), name='TNMH'),
+ 'fictive': (
+ PlotItem(x=[], y=[], pen=None, symbol='t1', symbolBrush=Tab10.TabPurple.rgb(), name='Fictive'),
+ None,
+ (PlotItem(x=[], y=[], pen=mkPen({'color': Tab10.TabPurple.rgb()})),
+ PlotItem(x=[], y=[], pen=None, symbol='t1', symbolBrush=Tab10.TabPurple.rgb())),
+ None,
+ ),
}
self._lines = {}
self.tau_plot.getPlotItem().addLegend()
@@ -75,8 +86,6 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
self.add_sets()
- self.listWidget.itemClicked.connect(self.show_tg_values)
-
self.new_graph_tau_combo.setEnabled(False)
self.new_graph_tau_check.stateChanged.connect(lambda state: self.new_graph_tau_combo.setEnabled(not bool(state)))
@@ -92,7 +101,6 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
for plots in self._plots.values():
for val in plots:
self.dsc_plot.removeItem(val)
- self.graphicsView_2.removeItem(val)
for key, plt in self._hodge.items():
plt[0].setData(x=[], y=[])
@@ -148,16 +156,16 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
self.dsc_plot.addItem(tg_plot)
fictive_cp = PlotItem(pen=mkPen(c.rgb()))
- self.graphicsView_2.addItem(fictive_cp)
+# self.graphicsView_2.addItem(fictive_cp)
tnmh_fit = PlotItem()
tnmh_fit.set_line(style=2, color=c)
- self.graphicsView_2.addItem(tnmh_fit)
+ # self.graphicsView_2.addItem(tnmh_fit)
self._plots[key] = (data_plot, tg_plot, glass, liquid, tangent, fictive_cp, tnmh_fit)
self._tg_value[key] = {
'onset': (nan, nan),
- 'mid': (nan, nan),
+ 'midpoint': (nan, nan),
'end': (nan, nan),
'inflection': (nan, nan),
# 'fictive': (nan, nan),
@@ -194,28 +202,46 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
self._update_tg_plots()
- def show_tg_values(self, item):
- values = self._tg_value.get(item.data(QtCore.Qt.UserRole))
-
- if values is not None:
- label = '\n'.join((f'{name.capitalize()}: {pos[0]:.2f} K' for name, pos in values.items()))
- self.tg_value_label.setText(label)
-
- fit = self._fit.get(item.data(QtCore.Qt.UserRole))
- if fit is not None:
- self.label_5.setText(fit._parameter_string())
-
def _update_tg_plots(self):
+ self.treeWidget.clear()
for idx in range(self.listWidget.count()):
item = self.listWidget.item(idx)
+ tree_item = QtWidgets.QTreeWidgetItem([item.text()])
+ values = self._tg_value.get(item.data(QtCore.Qt.UserRole))
+
+ if values is not None:
+ for name, pos in values.items():
+ child_item = QtWidgets.QTreeWidgetItem([f'{name.capitalize()}: {pos[0]:.2f} K'])
+ tree_item.addChild(child_item)
+
+ self.treeWidget.addTopLevelItem(tree_item)
+
key = item.data(QtCore.Qt.UserRole)
plot = self._plots[key]
data, _ = self._dsc[key]
plot[1].setData(array(list(self._tg_value[key].values())))
- self.hodge()
+ @QtCore.pyqtSlot(name='on_pushButton_clicked')
+ def export_tg(self):
+ ret_dic = {}
+ for key, tg in self._tg_value.items():
+ tgx = [x for x, y in tg.values()]
+ tgy = [y for x, y in tg.values()]
+ if self.tg_export_check.isChecked():
+ tg_pts = Points(x=tgx, y=tgy, name=self._management[key].name + ' (Tg)', value=self._management[key].value)
+ else:
+ tg_pts = None
+
+ if self.tglines_export_check.isChecked():
+ line = self._lines[key]
+ else:
+ line = []
+
+ ret_dic[key] = (tg_pts, line)
+
+ self.newTg.emit(ret_dic)
@QtCore.pyqtSlot(QtWidgets.QListWidgetItem, name='on_listWidget_itemChanged')
def change_visibility(self, item: QtWidgets.QListWidgetItem):
@@ -270,6 +296,7 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
self._fit[key] = res
plot[-1].setData(res.x, res.y)
+ @QtCore.pyqtSlot(name='on_toolButton_clicked')
def hodge(self):
for tg_type, (plot, data, fitplots, fit) in self._hodge.items():
@@ -292,8 +319,8 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
data, fit = tau_hodge(*array(m).T)
data.name = f'{data.name} ({tg_type.capitalize()})'
plot.setData(data.x, data.y)
- fitplots[0].setData(1000/fit.x, fit.y)
- fitplots[1].setData(1000/fit.x_data, fit.y_data)
+ fitplots[0].setData(fit.x, fit.y)
+ fitplots[1].setData(fit.x_data, fit.y_data)
self._hodge[tg_type] = (plot, data, fitplots, fit)
diff --git a/src/gui_qt/main/management.py b/src/gui_qt/main/management.py
index d62aca8..e181d60 100644
--- a/src/gui_qt/main/management.py
+++ b/src/gui_qt/main/management.py
@@ -773,8 +773,8 @@ class UpperManagement(QtCore.QObject):
self.newData.emit(new_data, self.current_graph)
- @QtCore.pyqtSlot(dict, list, str)
- def addTg(self, dic1: dict, dic2: list, graph_id: str):
+ @QtCore.pyqtSlot(dict)
+ def addTg(self, dic1: dict):
for k, (tg, lines) in dic1.items():
p: ExperimentContainer = self[k]
col = p.plot_real.linecolor
@@ -792,11 +792,6 @@ class UpperManagement(QtCore.QObject):
self.newData.emit(tg_data_id, self.current_graph)
- set_id_list = []
- for v in dic2:
- set_id_list.append(self.add(v))
- self.newData.emit(set_id_list, graph_id)
-
@QtCore.pyqtSlot(int, dict)
def smooth_data(self, npoints, param_kwargs):
_active = self.graphs[self.current_graph].active
diff --git a/src/nmreval/dsc/hodge.py b/src/nmreval/dsc/hodge.py
index 2d5b716..288f68a 100644
--- a/src/nmreval/dsc/hodge.py
+++ b/src/nmreval/dsc/hodge.py
@@ -10,18 +10,18 @@ from nmreval.utils import kB
def tau_hodge(tg: ArrayLike, rate: ArrayLike) -> (Points, FitResult):
- rate = np.asanyarray(rate) / 60
+ rate = np.asanyarray(rate)
tg = np.asanyarray(tg)
fitter = FitRoutine()
fitter.set_model(Arrhenius)
- d = fitter.add_data(tg, rate)
+ d = fitter.add_data(1000/tg, rate, we='y')
- init = linregress(1/tg, np.log(rate))
+ init = linregress(1000/tg, np.log(rate))
- d.set_parameter([np.exp(init.intercept), init.slope*kB], fun_kwargs={'invt': None})
+ d.set_parameter([np.exp(init.intercept), 1000*init.slope*kB], fun_kwargs={'invt': 'invt1000'})
res = fitter.run()[0]
de = res.parameter['E_{A}']
- tau = kB*tg**2/np.abs(de.value)/rate
+ tau = kB*tg**2/np.abs(de.value)/rate*60
return Points(x=1000/tg, y=tau, y_err=tau*de.error/np.abs(de.value), name='Hodge'), res
diff --git a/src/resources/_ui/tnmh_dialog.ui b/src/resources/_ui/tnmh_dialog.ui
index 00a3a78..03e8830 100644
--- a/src/resources/_ui/tnmh_dialog.ui
+++ b/src/resources/_ui/tnmh_dialog.ui
@@ -1,400 +1,362 @@
- Dialog
-
+ Wizard
+
0
0
- 1094
- 829
+ 854
+ 619
- SImba, everything the light touches is our kingdom
+ Wizard
-
- -
-
-
- Qt::Horizontal
-
-
- QDialogButtonBox::Close
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- <html><head/><body><p><span style=" font-weight:600;">Tg values:</span></p></body></html>
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
-
-
-
- -
-
-
-
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600;">TNMH parameter:</span></p></body></html>
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- Calculate Tg
-
-
- Qt::ToolButtonTextBesideIcon
-
-
- Qt::RightArrow
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Calculate fictive Cp
-
-
- Qt::ToolButtonTextBesideIcon
-
-
- false
-
-
- Qt::RightArrow
-
-
-
-
-
- -
-
-
- QTabWidget::East
-
-
- 0
-
-
-
- Tg / Hodge
+
+
+ Glass transition
+
+
+
-
+
+
+ false
-
-
-
-
-
- Export lines
-
-
- true
-
-
-
- -
-
-
- End
-
-
- true
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- Onset
-
-
- true
-
-
-
- -
-
-
- Export Tg
-
-
- true
-
-
-
- -
-
-
- New graph
-
-
- true
-
-
-
- -
-
-
- Inflection
-
-
- true
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Export Hodge:
-
-
-
- -
-
-
- Midpoint
-
-
- true
-
-
-
- -
-
+
+
+ 1
+
+
+
+
+ -
+
+
-
+
+
+ Export Tg
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Export lines
+
+
+ true
+
+
+
+ -
+
+
+ Export
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Calculate Tg
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ Qt::RightArrow
+
+
+
+
+
+
+
+ Hodge
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Calculate Hodge
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ Qt::RightArrow
+
+
+
+ -
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
-
+
+
+ End
+
+
+ true
+
+
+
+ -
+
+
+ Export
+
+
+
+ -
+
+
+ New graph
+
+
+ true
+
+
+
+ -
+
+
+ Fictive
+
+
+ true
+
+
+
+ -
+
+
+ Inflection
+
+
+ true
+
+
+
+ -
+
+
+ -
+
+
+ Midpoint
+
+
+ true
+
+
+
+ -
+
+
+ Onset
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ TNMH
+
+
+
+
+
+ -
+
+
+ Fit TNMH model
+
+
+
+ -
+
+
+ -
+
+
-
+
+
-
Fictive
-
- true
-
-
-
- -
-
+
+ -
- Export
+ Onset
-
-
- -
-
-
- -
-
-
-
- 0
- 0
-
+
+ -
+
+ Midpoint
-
-
-
+
+ -
+
+ End
+
+
+ -
+
+ Inflection
+
+
+
+
+ -
+
+
+ Tg for TNMH
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+ -
+
+
+
+ 1
+
+
-
-
- TNMH
-
-
-
-
-
-
- Fit TNMH model
-
-
-
- -
-
-
- -
-
-
- New graph
-
-
- true
-
-
-
- -
-
-
-
-
-
- Tg for TNMH
-
-
-
- -
-
-
-
-
- Fictive
-
-
- -
-
- Onset
-
-
- -
-
- Midpoint
-
-
- -
-
- End
-
-
- -
-
- Inflection
-
-
-
-
-
-
- -
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- Export dTf / dT
-
-
-
- -
-
-
- Export fit
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Export
-
-
-
-
-
-
-
-
+
+ -
+
+
-
+
+
+ New graph
+
+
+ true
+
+
+
+ -
+
+
+ Export fit
+
+
+
+ -
+
+
+ Export
+
+
+
+ -
+
+
+ Export dTf / dT
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
@@ -404,38 +366,5 @@
-
-
- buttonBox
- accepted()
- Dialog
- accept()
-
-
- 248
- 254
-
-
- 157
- 274
-
-
-
-
- buttonBox
- rejected()
- Dialog
- reject()
-
-
- 316
- 260
-
-
- 286
- 274
-
-
-
-
+