From 6ac531f1d0eded186a4aeba519478bcc6d9112bd Mon Sep 17 00:00:00 2001 From: Matthew Andrew <matthew.andrew@tessella.com> Date: Thu, 27 Feb 2020 16:12:00 +0000 Subject: [PATCH] Added all fit types to multiple input Re #28077 Multiple input can be either width or EISF data. Therefore in line with the old functionality in this mode the full range of fitting functions are enabled. --- .../Indirect/IFQFitObserver.h | 1 + .../FQFunctionModel.cpp | 10 +++++++-- .../Indirect/JumpFitDataPresenter.cpp | 22 ++++++++++++++++--- .../Indirect/JumpFitDataPresenter.h | 2 ++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/qt/scientific_interfaces/Indirect/IFQFitObserver.h b/qt/scientific_interfaces/Indirect/IFQFitObserver.h index 049ff3520fd..0f0d405738e 100644 --- a/qt/scientific_interfaces/Indirect/IFQFitObserver.h +++ b/qt/scientific_interfaces/Indirect/IFQFitObserver.h @@ -10,6 +10,7 @@ enum DataType { WIDTH, EISF, + ALL, }; class IFQFitObserver { diff --git a/qt/scientific_interfaces/Indirect/IndirectFunctionBrowser/FQFunctionModel.cpp b/qt/scientific_interfaces/Indirect/IndirectFunctionBrowser/FQFunctionModel.cpp index da240e854af..9db35f02dee 100644 --- a/qt/scientific_interfaces/Indirect/IndirectFunctionBrowser/FQFunctionModel.cpp +++ b/qt/scientific_interfaces/Indirect/IndirectFunctionBrowser/FQFunctionModel.cpp @@ -25,8 +25,14 @@ QStringList widthFits = QStringList( QStringList eisfFits = QStringList( {"None", "EISFDiffCylinder", "EISFDiffSphere", "EISFDiffSphereAlkyl"}); -std::unordered_map<DataType, QStringList> dataTypeFitTypeMap( - {{DataType::WIDTH, widthFits}, {DataType::EISF, eisfFits}}); +QStringList combinedFits = QStringList( + {"None", "ChudleyElliot", "HallRoss", "FickDiffusion", "TeixeiraWater", + "EISFDiffCylinder", "EISFDiffSphere", "EISFDiffSphereAlkyl"}); + +std::unordered_map<DataType, QStringList> + dataTypeFitTypeMap({{DataType::WIDTH, widthFits}, + {DataType::EISF, eisfFits}, + {DataType::ALL, combinedFits}}); FQFunctionModel::FQFunctionModel() { for (auto functionName : widthFits + eisfFits) { diff --git a/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.cpp b/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.cpp index 8a420a07663..5c129c68242 100644 --- a/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.cpp +++ b/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.cpp @@ -25,9 +25,9 @@ JumpFitDataPresenter::JumpFitDataPresenter( m_lbParameterType(lbParameterType), m_lbParameter(lbParameter), m_jumpModel(model) { connect(view, SIGNAL(singleDataViewSelected()), this, - SLOT(showParameterComboBoxes())); + SLOT(handleSingleInputSelected())); connect(view, SIGNAL(multipleDataViewSelected()), this, - SLOT(hideParameterComboBoxes())); + SLOT(handleMultipleInputSelected())); connect(this, SIGNAL(requestedAddWorkspaceDialog()), this, SLOT(updateActiveDataIndex())); @@ -54,6 +54,23 @@ void JumpFitDataPresenter::handleSampleLoaded(const QString &workspaceName) { emit updateAvailableFitTypes(); } +void JumpFitDataPresenter::handleMultipleInputSelected() { + hideParameterComboBoxes(); + m_notifier.notify( + [](IFQFitObserver &obs) { obs.updateDataType(DataType::ALL); }); +} + +void JumpFitDataPresenter::handleSingleInputSelected() { + showParameterComboBoxes(); + m_dataIndex = TableDatasetIndex{0}; + std::string currentText = m_cbParameterType->currentText().toStdString(); + auto dataType = m_cbParameterType->currentText() == QString("Width") + ? DataType::WIDTH + : DataType::EISF; + m_notifier.notify( + [&dataType](IFQFitObserver &obs) { obs.updateDataType(dataType); }); +} + void JumpFitDataPresenter::hideParameterComboBoxes() { m_cbParameter->hide(); m_cbParameterType->hide(); @@ -66,7 +83,6 @@ void JumpFitDataPresenter::showParameterComboBoxes() { m_cbParameterType->show(); m_lbParameter->show(); m_lbParameterType->show(); - m_dataIndex = TableDatasetIndex{0}; } void JumpFitDataPresenter::setActiveParameterType(const std::string &type) { diff --git a/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.h b/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.h index 011bbf49509..e9052b0d968 100644 --- a/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.h +++ b/qt/scientific_interfaces/Indirect/JumpFitDataPresenter.h @@ -47,6 +47,8 @@ private slots: void setSingleModelSpectrum(int index); void handleParameterTypeChanged(const QString ¶meter); void handleSpectrumSelectionChanged(int parameterIndex); + void handleMultipleInputSelected(); + void handleSingleInputSelected(); signals: void spectrumChanged(WorkspaceIndex); -- GitLab