From feb2928cb7d990b15fb52078c6cc1de914984164 Mon Sep 17 00:00:00 2001 From: Rob Applin <robert.applin@stfc.ac.uk> Date: Mon, 23 Jul 2018 09:59:39 +0100 Subject: [PATCH] refs #22524 Catch unfound workspace error --- .../Common/FitPropertyBrowser.h | 2 ++ qt/widgets/common/src/FitPropertyBrowser.cpp | 21 +++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/FitPropertyBrowser.h b/qt/widgets/common/inc/MantidQtWidgets/Common/FitPropertyBrowser.h index 876966aa87f..b30a3344559 100644 --- a/qt/widgets/common/inc/MantidQtWidgets/Common/FitPropertyBrowser.h +++ b/qt/widgets/common/inc/MantidQtWidgets/Common/FitPropertyBrowser.h @@ -408,6 +408,8 @@ protected: void doFit(int maxIterations); /// Create CompositeFunction from string void createCompositeFunction(const QString &str = ""); + /// Catches unexpected not found exceptions + Mantid::API::IFunction_sptr tryCreateFitFunction(const QString &str); /// Create CompositeFunction from pointer void createCompositeFunction(const Mantid::API::IFunction_sptr func); diff --git a/qt/widgets/common/src/FitPropertyBrowser.cpp b/qt/widgets/common/src/FitPropertyBrowser.cpp index 60ed90ca9ad..6564f0ae72e 100644 --- a/qt/widgets/common/src/FitPropertyBrowser.cpp +++ b/qt/widgets/common/src/FitPropertyBrowser.cpp @@ -788,8 +788,7 @@ void FitPropertyBrowser::createCompositeFunction(const QString &str) { if (str.isEmpty()) { createCompositeFunction(Mantid::API::IFunction_sptr()); } else { - auto f = Mantid::API::FunctionFactory::Instance().createInitialized( - str.toStdString()); + auto f = tryCreateFitFunction(str); if (f) { createCompositeFunction(f); } else { @@ -798,6 +797,20 @@ void FitPropertyBrowser::createCompositeFunction(const QString &str) { } } +Mantid::API::IFunction_sptr +FitPropertyBrowser::tryCreateFitFunction(const QString &str) { + try { + return Mantid::API::FunctionFactory::Instance().createInitialized( + str.toStdString()); + } catch (const Mantid::Kernel::Exception::NotFoundError &ex) { + QMessageBox::critical( + this, "Mantid - Error", + "A workspace provided in the function does not exist:\n" + + QString(ex.what())); + return nullptr; + } +} + void FitPropertyBrowser::popupMenu(const QPoint &) { QtBrowserItem *ci = m_browser->currentItem(); if (!ci) @@ -2778,8 +2791,8 @@ void FitPropertyBrowser::setupMultifit() { } } QString wsParam = ",WSParam=(WorkspaceIndex=" + QString::number(i); - wsParam += ",StartX=" + QString::number(startX()) + ",EndX=" + - QString::number(endX()) + ")"; + wsParam += ",StartX=" + QString::number(startX()) + + ",EndX=" + QString::number(endX()) + ")"; funIni += fun1Ini + ",Workspace=" + wsName + wsParam + ";"; } if (!tieStr.isEmpty()) { -- GitLab