Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IAddWorkspaceDialog moved to a common location and no longer a qobject #36624

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions buildconfig/CMake/CppCheck_Suppressions.txt.in
Original file line number Diff line number Diff line change
Expand Up @@ -1425,13 +1425,13 @@ unreadVariable:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/ISISReflectometry/GU
passedByValue:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Indirect/Reduction/ISISEnergyTransferValidator.cpp:100
useStlAlgorithm:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Indirect/Reduction/ISISEnergyTransferModelUtils.h:99
useStlAlgorithm:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/FqFitDataPresenter.cpp:23
virtualCallInConstructor:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitDataView.h:41
virtualCallInConstructor:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitDataView.h:42
returnTempReference:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitData.cpp:127
knownConditionTrueFalse:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitData.cpp:93
useStlAlgorithm:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IqtFitModel.cpp:47
constVariableReference:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitDataModel.cpp:92
constVariableReference:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitDataModel.cpp:112
useStlAlgorithm:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitDataModel.cpp:201
useStlAlgorithm:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitDataModel.cpp:193
constVariablePointer:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitOutput.cpp:59
accessMoved:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFittingModel.cpp:278
postfixOperator:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFittingModel.cpp:123
Expand Down
4 changes: 2 additions & 2 deletions docs/source/interfaces/general/Fit Script Generator.rst
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ Usage Example for Sequential Fitting

4. In the ``Workspace Indices`` field enter '0-3'.

5. Untick ``Keep Open`` and click ``Ok``.
5. Click ``Add`` and the ``Close``.

6. Right click on the ``Function Browser`` and add a ``Lorentzian`` function.

Expand Down Expand Up @@ -173,7 +173,7 @@ Usage Example for Simultaneous Fitting

3. In the ``Workspace Indices`` field enter '0-3'.

4. Untick ``Keep Open`` and click ``Ok``.
4. Click ``Add`` and the ``Close``.

5. Change the ``Fitting Mode`` to Simultaneous.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,14 @@ const QString SPECTRA_LIST = "(" + NATURAL_OR_RANGE + "(" + COMMA + NATURAL_OR_R

namespace MantidQt::CustomInterfaces::IDA {

ConvFitAddWorkspaceDialog::ConvFitAddWorkspaceDialog(QWidget *parent) : IAddWorkspaceDialog(parent) {
ConvFitAddWorkspaceDialog::ConvFitAddWorkspaceDialog(QWidget *parent) : QDialog(parent) {
m_uiForm.setupUi(this);
m_uiForm.leWorkspaceIndices->setValidator(createValidator(Regexes::SPECTRA_LIST, this).release());
setAllSpectraSelectionEnabled(false);

connect(m_uiForm.dsWorkspace, SIGNAL(dataReady(const QString &)), this, SLOT(workspaceChanged(const QString &)));
connect(m_uiForm.ckAllSpectra, SIGNAL(stateChanged(int)), this, SLOT(selectAllSpectra(int)));
connect(m_uiForm.pbAdd, SIGNAL(clicked()), this, SIGNAL(addData()));
connect(m_uiForm.pbAdd, SIGNAL(clicked()), this, SLOT(emitAddData()));
adriazalvarez marked this conversation as resolved.
Show resolved Hide resolved
connect(m_uiForm.pbClose, SIGNAL(clicked()), this, SLOT(close()));
}

Expand All @@ -85,8 +85,8 @@ std::string ConvFitAddWorkspaceDialog::resolutionName() const {
return m_uiForm.dsResolution->getCurrentDataName().toStdString();
}

std::string ConvFitAddWorkspaceDialog::workspaceIndices() const {
return m_uiForm.leWorkspaceIndices->text().toStdString();
MantidWidgets::FunctionModelSpectra ConvFitAddWorkspaceDialog::workspaceIndices() const {
return MantidWidgets::FunctionModelSpectra(m_uiForm.leWorkspaceIndices->text().toStdString());
}

void ConvFitAddWorkspaceDialog::setWSSuffices(const QStringList &suffices) {
Expand Down Expand Up @@ -128,6 +128,8 @@ void ConvFitAddWorkspaceDialog::workspaceChanged(const QString &workspaceName) {
setAllSpectraSelectionEnabled(false);
}

void ConvFitAddWorkspaceDialog::emitAddData() { emit addData(this); }

void ConvFitAddWorkspaceDialog::setWorkspace(const std::string &workspace) {
setAllSpectraSelectionEnabled(true);
if (m_uiForm.ckAllSpectra->isChecked()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,25 @@
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
// SPDX - License - Identifier: GPL - 3.0 +
#pragma once
#include "Common/IAddWorkspaceDialog.h"
#include "DllConfig.h"
#include "MantidQtWidgets/Common/FunctionModelSpectra.h"
#include "MantidQtWidgets/Common/IAddWorkspaceDialog.h"
#include "ui_ConvFitAddWorkspaceDialog.h"

#include <QDialog>

namespace MantidQt {
namespace CustomInterfaces {
namespace IDA {

class MANTIDQT_INELASTIC_DLL ConvFitAddWorkspaceDialog : public IAddWorkspaceDialog {
class MANTIDQT_INELASTIC_DLL ConvFitAddWorkspaceDialog : public QDialog, public MantidWidgets::IAddWorkspaceDialog {
Q_OBJECT
public:
explicit ConvFitAddWorkspaceDialog(QWidget *parent);

std::string workspaceName() const override;
std::string resolutionName() const;
std::string workspaceIndices() const;
MantidWidgets::FunctionModelSpectra workspaceIndices() const;

void setWSSuffices(const QStringList &suffices) override;
void setFBSuffices(const QStringList &suffices) override;
Expand All @@ -29,9 +32,13 @@ class MANTIDQT_INELASTIC_DLL ConvFitAddWorkspaceDialog : public IAddWorkspaceDia

void updateSelectedSpectra() override;

signals:
void addData(MantidWidgets::IAddWorkspaceDialog *dialog);

private slots:
void selectAllSpectra(int state);
void workspaceChanged(const QString &workspaceName);
void emitAddData();

private:
void setWorkspace(const std::string &workspace);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
<string>Indirect Data Selection</string>
<string>Data Selection</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
Expand Down Expand Up @@ -146,6 +146,5 @@
<connections/>
<slots>
<slot>addData()</slot>
<slot>closeDialog()</slot>
</slots>
</ui>
21 changes: 12 additions & 9 deletions qt/scientific_interfaces/Inelastic/Analysis/ConvFitDataView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,18 @@ ConvFitDataView::ConvFitDataView(const QStringList &headers, QWidget *parent) :
header->setSectionResizeMode(1, QHeaderView::Stretch);
}

IAddWorkspaceDialog *ConvFitDataView::getAddWorkspaceDialog() {
m_addWorkspaceDialog = new ConvFitAddWorkspaceDialog(parentWidget());
if (auto dialog = dynamic_cast<ConvFitAddWorkspaceDialog *>(m_addWorkspaceDialog)) {
dialog->setResolutionWSSuffices(m_wsResolutionSuffixes);
dialog->setResolutionFBSuffices(m_fbResolutionSuffixes);
}
connect(m_addWorkspaceDialog, SIGNAL(addData()), this, SLOT(notifyAddData()));

return m_addWorkspaceDialog;
void ConvFitDataView::showAddWorkspaceDialog() {
auto dialog = new ConvFitAddWorkspaceDialog(parentWidget());
connect(dialog, SIGNAL(addData(MantidWidgets::IAddWorkspaceDialog *)), this,
SLOT(notifyAddData(MantidWidgets::IAddWorkspaceDialog *)));

dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->setWSSuffices(m_wsSampleSuffixes);
dialog->setFBSuffices(m_fbSampleSuffixes);
dialog->setResolutionWSSuffices(m_wsResolutionSuffixes);
dialog->setResolutionFBSuffices(m_fbResolutionSuffixes);
dialog->updateSelectedSpectra();
dialog->show();
}

void ConvFitDataView::addTableEntry(size_t row, FitDataRow newRow) {
Expand Down
7 changes: 3 additions & 4 deletions qt/scientific_interfaces/Inelastic/Analysis/ConvFitDataView.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ namespace MantidQt {
namespace CustomInterfaces {
namespace IDA {

class IAddWorkspaceDialog;
class ConvFitAddWorkspaceDialog;

/**
Presenter for a table of convolution fitting data.
*/
Expand All @@ -30,7 +27,9 @@ class MANTIDQT_INELASTIC_DLL ConvFitDataView : public IndirectFitDataView {

protected:
ConvFitDataView(const QStringList &headers, QWidget *parent = nullptr);
IAddWorkspaceDialog *getAddWorkspaceDialog() override;

protected slots:
void showAddWorkspaceDialog() override;
};

} // namespace IDA
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@

namespace MantidQt::CustomInterfaces::IDA {

FqFitAddWorkspaceDialog::FqFitAddWorkspaceDialog(QWidget *parent) : IAddWorkspaceDialog(parent) {
FqFitAddWorkspaceDialog::FqFitAddWorkspaceDialog(QWidget *parent) : QDialog(parent) {
m_uiForm.setupUi(this);

connect(m_uiForm.dsWorkspace, SIGNAL(dataReady(const QString &)), this, SLOT(emitWorkspaceChanged(const QString &)));
connect(m_uiForm.cbParameterType, SIGNAL(currentIndexChanged(const QString &)), this,
SLOT(emitParameterTypeChanged(const QString &)));
connect(m_uiForm.pbAdd, SIGNAL(clicked()), this, SIGNAL(addData()));
connect(m_uiForm.pbAdd, SIGNAL(clicked()), this, SLOT(emitAddData()));
connect(m_uiForm.pbClose, SIGNAL(clicked()), this, SLOT(close()));
}

Expand Down Expand Up @@ -71,4 +71,6 @@ void FqFitAddWorkspaceDialog::emitParameterTypeChanged(const QString &type) {
emit parameterTypeChanged(this, type.toStdString());
}

void FqFitAddWorkspaceDialog::emitAddData() { emit addData(this); }

} // namespace MantidQt::CustomInterfaces::IDA
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,17 @@
// SPDX - License - Identifier: GPL - 3.0 +
#pragma once

#include "Common/IAddWorkspaceDialog.h"
#include "DllConfig.h"
#include "MantidQtWidgets/Common/IAddWorkspaceDialog.h"
#include "ui_FqFitAddWorkspaceDialog.h"

#include <QDialog>

namespace MantidQt {
namespace CustomInterfaces {
namespace IDA {

class MANTIDQT_INELASTIC_DLL FqFitAddWorkspaceDialog : public IAddWorkspaceDialog {
class MANTIDQT_INELASTIC_DLL FqFitAddWorkspaceDialog : public QDialog, public MantidWidgets::IAddWorkspaceDialog {
Q_OBJECT
public:
explicit FqFitAddWorkspaceDialog(QWidget *parent);
Expand All @@ -33,14 +35,16 @@ class MANTIDQT_INELASTIC_DLL FqFitAddWorkspaceDialog : public IAddWorkspaceDialo

void updateSelectedSpectra() override{};

public slots:
void emitWorkspaceChanged(const QString &name);
void emitParameterTypeChanged(const QString &index);

signals:
void addData(MantidWidgets::IAddWorkspaceDialog *dialog);
void workspaceChanged(FqFitAddWorkspaceDialog *dialog, const std::string &workspace);
void parameterTypeChanged(FqFitAddWorkspaceDialog *dialog, const std::string &type);

private slots:
void emitWorkspaceChanged(const QString &name);
void emitParameterTypeChanged(const QString &index);
void emitAddData();

private:
Ui::FqFitAddWorkspaceDialog m_uiForm;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
<string>F(Q) Fit Data Selection</string>
<string>Data Selection</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
Expand Down Expand Up @@ -149,6 +149,5 @@
<connections/>
<slots>
<slot>addData()</slot>
<slot>closeDialog()</slot>
</slots>
</ui>
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ void FqFitDataPresenter::subscribeFitPropertyBrowser(IIndirectFitPropertyBrowser
m_fitPropertyBrowser = browser;
}

bool FqFitDataPresenter::addWorkspaceFromDialog(IAddWorkspaceDialog const *dialog) {
bool FqFitDataPresenter::addWorkspaceFromDialog(MantidWidgets::IAddWorkspaceDialog const *dialog) {
if (const auto fqFitDialog = dynamic_cast<FqFitAddWorkspaceDialog const *>(dialog)) {
addWorkspace(fqFitDialog->workspaceName(), fqFitDialog->parameterType(), fqFitDialog->parameterNameIndex());
setActiveWorkspaceIDToCurrentWorkspace(fqFitDialog);
Expand Down Expand Up @@ -321,7 +321,7 @@ std::vector<std::string> FqFitDataPresenter::getParameterTypes(FqFitParameters &
return types;
}

void FqFitDataPresenter::setActiveWorkspaceIDToCurrentWorkspace(IAddWorkspaceDialog const *dialog) {
void FqFitDataPresenter::setActiveWorkspaceIDToCurrentWorkspace(MantidWidgets::IAddWorkspaceDialog const *dialog) {
// update active data index with correct index based on the workspace name
// and the vector in m_fitDataModel which is in the base class
// indirectFittingModel get table workspace index
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class MANTIDQT_INELASTIC_DLL FqFitDataPresenter : public IndirectFitDataPresente

public:
FqFitDataPresenter(IIndirectDataAnalysisTab *tab, IIndirectFitDataModel *model, IIndirectFitDataView *view);
bool addWorkspaceFromDialog(IAddWorkspaceDialog const *dialog) override;
bool addWorkspaceFromDialog(MantidWidgets::IAddWorkspaceDialog const *dialog) override;
void addWorkspace(const std::string &workspaceName, const std::string &paramType, const int &spectrum_index) override;
void setActiveWidth(std::size_t widthIndex, WorkspaceID dataIndex, bool single = true) override;
void setActiveEISF(std::size_t eisfIndex, WorkspaceID dataIndex, bool single = true) override;
Expand All @@ -56,7 +56,7 @@ class MANTIDQT_INELASTIC_DLL FqFitDataPresenter : public IndirectFitDataPresente
void updateParameterTypes(FqFitAddWorkspaceDialog *dialog, FqFitParameters &parameters);
std::vector<std::string> getParameterTypes(FqFitParameters &parameters) const;
std::map<std::string, std::string> chooseFqFitFunctions(bool paramWidth) const;
void setActiveWorkspaceIDToCurrentWorkspace(IAddWorkspaceDialog const *dialog);
void setActiveWorkspaceIDToCurrentWorkspace(MantidWidgets::IAddWorkspaceDialog const *dialog);

std::string m_activeParameterType;
WorkspaceID m_activeWorkspaceID;
Expand Down
18 changes: 11 additions & 7 deletions qt/scientific_interfaces/Inelastic/Analysis/FqFitDataView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,20 @@ FqFitDataView::FqFitDataView(const QStringList &headers, QWidget *parent) : Indi
header->setSectionResizeMode(1, QHeaderView::Stretch);
}

IAddWorkspaceDialog *FqFitDataView::getAddWorkspaceDialog() {
m_addWorkspaceDialog = new FqFitAddWorkspaceDialog(parentWidget());

connect(m_addWorkspaceDialog, SIGNAL(addData()), this, SLOT(notifyAddData()));
connect(m_addWorkspaceDialog, SIGNAL(workspaceChanged(FqFitAddWorkspaceDialog *, const std::string &)), this,
void FqFitDataView::showAddWorkspaceDialog() {
auto dialog = new FqFitAddWorkspaceDialog(parentWidget());
connect(dialog, SIGNAL(addData(MantidWidgets::IAddWorkspaceDialog *)), this,
SLOT(notifyAddData(MantidWidgets::IAddWorkspaceDialog *)));
connect(dialog, SIGNAL(workspaceChanged(FqFitAddWorkspaceDialog *, const std::string &)), this,
SLOT(notifyWorkspaceChanged(FqFitAddWorkspaceDialog *, const std::string &)));
connect(m_addWorkspaceDialog, SIGNAL(parameterTypeChanged(FqFitAddWorkspaceDialog *, const std::string &)), this,
connect(dialog, SIGNAL(parameterTypeChanged(FqFitAddWorkspaceDialog *, const std::string &)), this,
SLOT(notifyParameterTypeChanged(FqFitAddWorkspaceDialog *, const std::string &)));

return m_addWorkspaceDialog;
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->setWSSuffices(m_wsSampleSuffixes);
dialog->setFBSuffices(m_fbSampleSuffixes);
dialog->updateSelectedSpectra();
dialog->show();
}

void FqFitDataView::notifyAddClicked() {
Expand Down
5 changes: 3 additions & 2 deletions qt/scientific_interfaces/Inelastic/Analysis/FqFitDataView.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
namespace MantidQt {
namespace CustomInterfaces {
namespace IDA {
class IAddWorkspaceDialog;
class FqFitAddWorkspaceDialog;

/**
Expand All @@ -29,7 +28,9 @@ class MANTIDQT_INELASTIC_DLL FqFitDataView : public IndirectFitDataView {

protected:
FqFitDataView(const QStringList &headers, QWidget *parent = nullptr);
IAddWorkspaceDialog *getAddWorkspaceDialog() override;

protected slots:
void showAddWorkspaceDialog() override;

private slots:
void notifyAddClicked();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ class MANTIDQT_INELASTIC_DLL IIndirectFitDataModel {
virtual void setSpectra(const std::string &spectra, WorkspaceID workspaceID) = 0;
virtual void setSpectra(FunctionModelSpectra &&spectra, WorkspaceID workspaceID) = 0;
virtual void setSpectra(const FunctionModelSpectra &spectra, WorkspaceID workspaceID) = 0;
virtual void addWorkspace(const std::string &workspaceName, const std::string &spectra) = 0;
virtual void addWorkspace(const std::string &workspaceName, const FunctionModelSpectra &spectra) = 0;
virtual void addWorkspace(Mantid::API::MatrixWorkspace_sptr workspace, const FunctionModelSpectra &spectra) = 0;
virtual void removeWorkspace(WorkspaceID workspaceID) = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,20 +176,12 @@ std::vector<std::string> IndirectFitDataModel::getWorkspaceNames() const {
return names;
}

void IndirectFitDataModel::addWorkspace(const std::string &workspaceName, const std::string &spectra) {
if (spectra.empty())
throw std::runtime_error("Fitting Data must consist of one or more spectra.");
void IndirectFitDataModel::addWorkspace(const std::string &workspaceName, const FunctionModelSpectra &spectra) {
if (workspaceName.empty() || !m_adsInstance.doesExist(workspaceName))
throw std::runtime_error("A valid sample file needs to be selected.");
if (spectra.empty())
throw std::runtime_error("Fitting Data must consist of one or more spectra.");

try {
addWorkspace(workspaceName, FunctionModelSpectra(spectra));
} catch (std::logic_error &e) {
throw std::runtime_error(e.what());
}
}

void IndirectFitDataModel::addWorkspace(const std::string &workspaceName, const FunctionModelSpectra &spectra) {
auto ws = m_adsInstance.retrieveWS<Mantid::API::MatrixWorkspace>(workspaceName);
addWorkspace(ws, spectra);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ class MANTIDQT_INELASTIC_DLL IndirectFitDataModel : public IIndirectFitDataModel
virtual ~IndirectFitDataModel() = default;
std::vector<IndirectFitData> *getFittingData() override;

void addWorkspace(const std::string &workspaceName, const std::string &spectra) override;
void addWorkspace(const std::string &workspaceName, const FunctionModelSpectra &spectra) override;
void addWorkspace(Mantid::API::MatrixWorkspace_sptr workspace, const FunctionModelSpectra &spectra) override;
Mantid::API::MatrixWorkspace_sptr getWorkspace(WorkspaceID workspaceID) const override;
Expand Down
Loading
Loading