Skip to content

Commit

Permalink
Use std::vector<std::string> instead of QStringList for datasets
Browse files Browse the repository at this point in the history
  • Loading branch information
robertapplin committed Apr 29, 2024
1 parent 78e8278 commit 1d257a8
Show file tree
Hide file tree
Showing 22 changed files with 106 additions and 85 deletions.
6 changes: 3 additions & 3 deletions qt/python/mantidqt/mantidqt/_common.sip
Expand Up @@ -911,10 +911,10 @@ public:
void setNumberOfDatasets(int n);
void setCurrentDataset(int i) throw(std::exception);
int getCurrentDataset() const;
void setDatasets(const QStringList &datasetNames);
void addDatasets(const QStringList &names);
void setDatasets(const std::vector<std::string> &datasetNames);
void addDatasets(const std::vector<std::string> &names);
void removeDatasets(QList<int> indices);
QStringList getDatasetNames() const;
std::vector<std::string> getDatasetNames() const;
void setErrorsEnabled(bool enabled);
void hideGlobalCheckbox();
void showGlobalCheckbox();
Expand Down
Expand Up @@ -63,7 +63,7 @@ FunctionModelSpectra FitDataModel::getSpectra(WorkspaceID workspaceID) const {

FunctionModelDataset FitDataModel::getDataset(WorkspaceID workspaceID) const {
auto const name = getWorkspace(workspaceID)->getName();
return FunctionModelDataset(QString::fromStdString(name), getSpectra(workspaceID));
return FunctionModelDataset(name, getSpectra(workspaceID));
}

std::string FitDataModel::createDisplayName(WorkspaceID workspaceID) const {
Expand Down
Expand Up @@ -72,9 +72,11 @@ void FunctionTemplatePresenter::setDatasets(const QList<MantidWidgets::FunctionM
m_model->setDatasets(datasets);
}

QStringList FunctionTemplatePresenter::getDatasetNames() const { return m_model->getDatasetNames(); }
std::vector<std::string> FunctionTemplatePresenter::getDatasetNames() const { return m_model->getDatasetNames(); }

QStringList FunctionTemplatePresenter::getDatasetDomainNames() const { return m_model->getDatasetDomainNames(); }
std::vector<std::string> FunctionTemplatePresenter::getDatasetDomainNames() const {
return m_model->getDatasetDomainNames();
}

void FunctionTemplatePresenter::setErrorsEnabled(bool enabled) { m_view->setErrorsEnabled(enabled); }

Expand Down Expand Up @@ -123,8 +125,7 @@ void FunctionTemplatePresenter::handleEditLocalParameter(std::string const &para
QList<bool> fixes;
QStringList ties;
QStringList constraints;
const int n = domainNames.size();
for (auto i = 0; i < n; ++i) {
for (auto i = 0; i < static_cast<int>(domainNames.size()); ++i) {
const double value = getLocalParameterValue(parameterName, i);
values.push_back(value);
const bool fixed = isLocalParameterFixed(parameterName, i);
Expand Down
Expand Up @@ -81,8 +81,8 @@ class MANTIDQT_INELASTIC_DLL FunctionTemplatePresenter : public ITemplatePresent
protected:
virtual void updateView() = 0;

QStringList getDatasetNames() const;
QStringList getDatasetDomainNames() const;
std::vector<std::string> getDatasetNames() const;
std::vector<std::string> getDatasetDomainNames() const;

void setLocalParameterValue(std::string const &parameterName, int i, double value);
void setLocalParameterTie(std::string const &parameterName, int i, std::string const &tie);
Expand Down
Expand Up @@ -165,7 +165,8 @@ void FunctionTemplateView::updateMultiDatasetParameters(const ITableWorkspace &t
void FunctionTemplateView::updateParameters(const IFunction &fun) { m_presenter->updateParameters(fun); }

void FunctionTemplateView::openEditLocalParameterDialog(std::string const &parameterName,
QStringList const &datasetNames, QStringList const &domainNames,
std::vector<std::string> const &datasetNames,
std::vector<std::string> const &domainNames,
QList<double> const &values, QList<bool> const &fixes,
QStringList const &ties, QStringList const &constraints) {
auto dialog =
Expand Down
Expand Up @@ -15,6 +15,9 @@
#include "MantidQtWidgets/Common/FunctionModelDataset.h"
#include "MantidQtWidgets/Common/IndexTypes.h"

#include <string>
#include <vector>

#include <QList>
#include <QMap>
#include <QPair>
Expand Down Expand Up @@ -84,8 +87,8 @@ class MANTIDQT_INELASTIC_DLL FunctionTemplateView : public QWidget {

void emitFunctionStructureChanged() { emit functionStructureChanged(); }

void openEditLocalParameterDialog(std::string const &parameterName, QStringList const &datasetNames,
QStringList const &domainNames, QList<double> const &values,
void openEditLocalParameterDialog(std::string const &parameterName, std::vector<std::string> const &datasetNames,
std::vector<std::string> const &domainNames, QList<double> const &values,
QList<bool> const &fixes, QStringList const &ties, QStringList const &constraints);

signals:
Expand Down
Expand Up @@ -59,9 +59,11 @@ void MultiFunctionTemplateModel::setDatasets(const QList<FunctionModelDataset> &
m_model->setDatasets(datasets);
}

QStringList MultiFunctionTemplateModel::getDatasetNames() const { return m_model->getDatasetNames(); }
std::vector<std::string> MultiFunctionTemplateModel::getDatasetNames() const { return m_model->getDatasetNames(); }

QStringList MultiFunctionTemplateModel::getDatasetDomainNames() const { return m_model->getDatasetDomainNames(); }
std::vector<std::string> MultiFunctionTemplateModel::getDatasetDomainNames() const {
return m_model->getDatasetDomainNames();
}

void MultiFunctionTemplateModel::setCurrentDomainIndex(int i) { m_model->setCurrentDomainIndex(i); }

Expand Down
Expand Up @@ -47,8 +47,8 @@ class MANTIDQT_INELASTIC_DLL MultiFunctionTemplateModel : public IFunctionModel
void setNumberDomains(int) override;
int getNumberDomains() const override;
void setDatasets(const QList<FunctionModelDataset> &datasets) override;
QStringList getDatasetNames() const override;
QStringList getDatasetDomainNames() const override;
std::vector<std::string> getDatasetNames() const override;
std::vector<std::string> getDatasetDomainNames() const override;
void setCurrentDomainIndex(int i) override;
int currentDomainIndex() const override;

Expand Down
Expand Up @@ -219,7 +219,7 @@ class InelasticFitPropertyBrowserTest : public CxxTest::TestSuite {
WorkspaceID workspaceID{i};

auto const name = "wsName" + std::to_string(i);
datasets.append(FunctionModelDataset(QString::fromStdString(name), FunctionModelSpectra("0")));
datasets.append(FunctionModelDataset(name, FunctionModelSpectra("0")));
}
std::vector<double> qValues = {0.0, 1.0};
std::vector<std::pair<std::string, size_t>> fitResolutions(1, std::make_pair<std::string, size_t>("resWS", 0));
Expand Down
Expand Up @@ -12,6 +12,8 @@
#include "ui_EditLocalParameterDialog.h"

#include <memory>
#include <string>
#include <vector>

#include <QDialog>

Expand All @@ -28,9 +30,9 @@ class FunctionMultiDomainPresenter;
class EXPORT_OPT_MANTIDQT_COMMON EditLocalParameterDialog : public MantidQt::API::MantidDialog {
Q_OBJECT
public:
EditLocalParameterDialog(QWidget *parent, const std::string &parName, const QStringList &datasetNames,
const QStringList &datasetDomainNames, const QList<double> &values, const QList<bool> &fixes,
const QStringList &ties, const QStringList &constraints);
EditLocalParameterDialog(QWidget *parent, const std::string &parName, const std::vector<std::string> &datasetNames,
const std::vector<std::string> &datasetDomainNames, const QList<double> &values,
const QList<bool> &fixes, const QStringList &ties, const QStringList &constraints);

std::string getParameterName() const { return m_parName; }
QList<double> getValues() const;
Expand Down Expand Up @@ -66,7 +68,8 @@ private slots:
void setAllValuesToLog();

private:
void doSetup(const std::string &parName, const QStringList &datasetDomains, const QStringList &datasetDomainNames);
void doSetup(const std::string &parName, const std::vector<std::string> &datasetDomains,
const std::vector<std::string> &datasetDomainNames);
bool eventFilter(QObject *obj, QEvent *ev) override;
void showContextMenu();
void redrawCells();
Expand Down
Expand Up @@ -77,9 +77,9 @@ class EXPORT_OPT_MANTIDQT_COMMON FunctionBrowser : public QWidget, public IFunct
/// Get the number of datasets
int getNumberOfDatasets() const override;
/// Get the names of datasets
QStringList getDatasetNames() const override;
std::vector<std::string> getDatasetNames() const override;
/// Get the names of the dataset domains
QStringList getDatasetDomainNames() const override;
std::vector<std::string> getDatasetDomainNames() const override;
/// Get value of a local parameter
double getLocalParameterValue(std::string const &parameterName, int i) const override;
/// Set value of a local parameter
Expand Down Expand Up @@ -137,12 +137,12 @@ public slots:

// Handling of multiple datasets
void setNumberOfDatasets(int n) override;
void setDatasets(const QStringList &datasetNames) override;
void setDatasets(const std::vector<std::string> &datasetNames) override;
void setDatasets(const QList<FunctionModelDataset> &datasets) override;
void resetLocalParameters();
void setCurrentDataset(int i) override;
void removeDatasets(const QList<int> &indices);
void addDatasets(const QStringList &names);
void addDatasets(const std::vector<std::string> &names);

protected:
std::unique_ptr<FunctionMultiDomainPresenter> m_presenter;
Expand Down
8 changes: 4 additions & 4 deletions qt/widgets/common/inc/MantidQtWidgets/Common/FunctionModel.h
Expand Up @@ -44,12 +44,12 @@ class EXPORT_OPT_MANTIDQT_COMMON FunctionModel : public IFunctionModel {
IFunction_sptr getSingleFunction(int index) const override;
IFunction_sptr getCurrentFunction() const override;
void setNumberDomains(int) override;
void setDatasets(const QStringList &datasetNames);
void setDatasets(const std::vector<std::string> &datasetNames);
void setDatasets(const QList<FunctionModelDataset> &datasets) override;
void addDatasets(const QStringList &datasetNames);
void addDatasets(const std::vector<std::string> &datasetNames);
void removeDatasets(QList<int> &indices);
QStringList getDatasetNames() const override;
QStringList getDatasetDomainNames() const override;
std::vector<std::string> getDatasetNames() const override;
std::vector<std::string> getDatasetDomainNames() const override;
int getNumberDomains() const override;
int currentDomainIndex() const override;
void setCurrentDomainIndex(int) override;
Expand Down
Expand Up @@ -9,9 +9,8 @@
#include "DllOption.h"
#include "MantidQtWidgets/Common/FunctionModelSpectra.h"

#include <QList>
#include <QString>
#include <QStringList>
#include <string>
#include <vector>

namespace MantidQt {
namespace MantidWidgets {
Expand All @@ -24,15 +23,15 @@ namespace MantidWidgets {
*/
struct EXPORT_OPT_MANTIDQT_COMMON FunctionModelDataset {
public:
FunctionModelDataset(QString workspaceName, FunctionModelSpectra spectra);
FunctionModelDataset(std::string workspaceName, FunctionModelSpectra spectra);

inline QString datasetName() const noexcept { return m_workspaceName; }
QStringList domainNames() const;
inline std::string datasetName() const noexcept { return m_workspaceName; }
std::vector<std::string> domainNames() const;

inline std::size_t numberOfSpectra() const noexcept { return m_spectra.size().value; }

private:
QString m_workspaceName;
std::string m_workspaceName;
FunctionModelSpectra m_spectra;
};

Expand Down
Expand Up @@ -49,11 +49,11 @@ class EXPORT_OPT_MANTIDQT_COMMON FunctionMultiDomainPresenter : public QObject {
void clearErrors();
boost::optional<std::string> currentFunctionIndex() const;
void setNumberOfDatasets(int);
void setDatasets(const QStringList &datasetNames);
void setDatasets(const std::vector<std::string> &datasetNames);
void setDatasets(const QList<FunctionModelDataset> &datasets);
void addDatasets(const QStringList &datasetNames);
QStringList getDatasetNames() const;
QStringList getDatasetDomainNames() const;
void addDatasets(const std::vector<std::string> &datasetNames);
std::vector<std::string> getDatasetNames() const;
std::vector<std::string> getDatasetDomainNames() const;
int getNumberOfDatasets() const;
int getCurrentDataset() const;
void setCurrentDataset(int);
Expand Down
10 changes: 6 additions & 4 deletions qt/widgets/common/inc/MantidQtWidgets/Common/IFunctionBrowser.h
Expand Up @@ -12,10 +12,12 @@
#include "MantidAPI/IFunction_fwd.h"
#include "MantidAPI/ITableWorkspace_fwd.h"

#include <string>
#include <vector>

#include <QList>
#include <QPair>
#include <QString>
#include <QStringList>

namespace MantidQt {
namespace MantidWidgets {
Expand All @@ -34,7 +36,7 @@ class EXPORT_OPT_MANTIDQT_COMMON IFunctionBrowser {
virtual void clearErrors() = 0;
virtual void setFunction(std::string const &funStr) = 0;
virtual void setNumberOfDatasets(int n) = 0;
virtual void setDatasets(const QStringList &datasetNames) = 0;
virtual void setDatasets(const std::vector<std::string> &datasetNames) = 0;
virtual void setDatasets(const QList<FunctionModelDataset> &datasets) = 0;
virtual Mantid::API::IFunction_sptr getGlobalFunction() = 0;
virtual void updateMultiDatasetParameters(const Mantid::API::IFunction &fun) = 0;
Expand All @@ -43,8 +45,8 @@ class EXPORT_OPT_MANTIDQT_COMMON IFunctionBrowser {
virtual double getLocalParameterValue(std::string const &parameterName, int i) const = 0;
virtual std::string getLocalParameterTie(std::string const &parameterName, int i) const = 0;
virtual int getNumberOfDatasets() const = 0;
virtual QStringList getDatasetNames() const = 0;
virtual QStringList getDatasetDomainNames() const = 0;
virtual std::vector<std::string> getDatasetNames() const = 0;
virtual std::vector<std::string> getDatasetDomainNames() const = 0;
virtual void setLocalParameterValue(std::string const &parameterName, int i, double value) = 0;
virtual void setLocalParameterFixed(std::string const &parameterName, int i, bool fixed) = 0;
virtual void setLocalParameterTie(std::string const &parameterName, int i, std::string const &tie) = 0;
Expand Down
4 changes: 2 additions & 2 deletions qt/widgets/common/inc/MantidQtWidgets/Common/IFunctionModel.h
Expand Up @@ -46,8 +46,8 @@ class EXPORT_OPT_MANTIDQT_COMMON IFunctionModel {
virtual IFunction_sptr getCurrentFunction() const = 0;
virtual void setNumberDomains(int) = 0;
virtual void setDatasets(const QList<FunctionModelDataset> &datasets) = 0;
virtual QStringList getDatasetNames() const = 0;
virtual QStringList getDatasetDomainNames() const = 0;
virtual std::vector<std::string> getDatasetNames() const = 0;
virtual std::vector<std::string> getDatasetDomainNames() const = 0;
virtual int getNumberDomains() const = 0;
virtual int currentDomainIndex() const = 0;
virtual void setCurrentDomainIndex(int) = 0;
Expand Down
17 changes: 9 additions & 8 deletions qt/widgets/common/src/EditLocalParameterDialog.cpp
Expand Up @@ -8,6 +8,7 @@

#include "MantidQtWidgets/Common/FunctionMultiDomainPresenter.h"
#include "MantidQtWidgets/Common/LocalParameterItemDelegate.h"
#include "MantidQtWidgets/Common/ParseKeyValueString.h"

#include <QClipboard>
#include <QMenu>
Expand Down Expand Up @@ -35,10 +36,10 @@ namespace MantidQt::MantidWidgets {
* @param constraints :: [input] Parameter constraints.
*/
EditLocalParameterDialog::EditLocalParameterDialog(QWidget *parent, const std::string &parName,
const QStringList &datasetNames,
const QStringList &datasetDomainNames, const QList<double> &values,
const QList<bool> &fixes, const QStringList &ties,
const QStringList &constraints)
const std::vector<std::string> &datasetNames,
const std::vector<std::string> &datasetDomainNames,
const QList<double> &values, const QList<bool> &fixes,
const QStringList &ties, const QStringList &constraints)
: MantidDialog(parent), m_parName(parName), m_values(values), m_fixes(fixes), m_ties(std::move(ties)),
m_constraints(std::move(constraints)) {
assert(values.size() == datasetDomainNames.size());
Expand All @@ -58,9 +59,9 @@ EditLocalParameterDialog::EditLocalParameterDialog(QWidget *parent, const std::s
* @param datasetNames :: [input] Names of workspaces being fitted.
* @param datasetDomainNames :: [input] Names given to the domains being fitted.
*/
void EditLocalParameterDialog::doSetup(const std::string &parName, const QStringList &datasetNames,
const QStringList &datasetDomainNames) {
m_logFinder = std::make_unique<LogValueFinder>(datasetNames);
void EditLocalParameterDialog::doSetup(const std::string &parName, const std::vector<std::string> &datasetNames,
const std::vector<std::string> &datasetDomainNames) {
m_logFinder = std::make_unique<LogValueFinder>(stdVectorToQStringList(datasetNames));
// Populate list of logs
auto *logCombo = m_uiForm.logValueSelector->getLogComboBox();
for (const auto &logName : m_logFinder->getLogNames()) {
Expand All @@ -78,7 +79,7 @@ void EditLocalParameterDialog::doSetup(const std::string &parName, const QString
m_uiForm.tableWidget->insertRow(i);
auto cell = new QTableWidgetItem(makeNumber(m_values[i]));
m_uiForm.tableWidget->setItem(i, valueColumn, cell);
auto headerItem = new QTableWidgetItem(datasetDomainNames[i]);
auto headerItem = new QTableWidgetItem(QString::fromStdString(datasetDomainNames[i]));
m_uiForm.tableWidget->setVerticalHeaderItem(i, headerItem);
cell = new QTableWidgetItem("");
auto flags = cell->flags();
Expand Down
4 changes: 2 additions & 2 deletions qt/widgets/common/src/FitScriptGeneratorView.cpp
Expand Up @@ -358,8 +358,8 @@ void FitScriptGeneratorView::openEditLocalParameterDialog(
std::vector<std::string> const &domainNames, std::vector<double> const &values, std::vector<bool> const &fixes,
std::vector<std::string> const &ties, std::vector<std::string> const &constraints) {
m_editLocalParameterDialog = new EditLocalParameterDialog(
this, parameter, stdVectorToQStringList(workspaceNames), stdVectorToQStringList(domainNames),
convertToQList(values), convertToQList(fixes), stdVectorToQStringList(ties), stdVectorToQStringList(constraints));
this, parameter, workspaceNames, domainNames, convertToQList(values), convertToQList(fixes),
stdVectorToQStringList(ties), stdVectorToQStringList(constraints));

connect(m_editLocalParameterDialog, SIGNAL(finished(int)), this, SLOT(onEditLocalParameterFinished(int)));

Expand Down
10 changes: 6 additions & 4 deletions qt/widgets/common/src/FunctionBrowser.cpp
Expand Up @@ -133,10 +133,10 @@ bool FunctionBrowser::hasFunction() const { return m_presenter->hasFunction(); }
int FunctionBrowser::getNumberOfDatasets() const { return m_presenter->getNumberOfDatasets(); }

/// Get the names of datasets
QStringList FunctionBrowser::getDatasetNames() const { return m_presenter->getDatasetNames(); }
std::vector<std::string> FunctionBrowser::getDatasetNames() const { return m_presenter->getDatasetNames(); }

/// Get the names of the dataset domains
QStringList FunctionBrowser::getDatasetDomainNames() const { return m_presenter->getDatasetDomainNames(); }
std::vector<std::string> FunctionBrowser::getDatasetDomainNames() const { return m_presenter->getDatasetDomainNames(); }

/// Set new number of the datasets
/// @param n :: New value for the number of datasets.
Expand All @@ -145,7 +145,9 @@ void FunctionBrowser::setNumberOfDatasets(int n) { m_presenter->setNumberOfDatas
/// Sets the datasets being fitted. They will be displayed by the
/// local parameter editing dialog.
/// @param datasetNames :: Names of the datasets
void FunctionBrowser::setDatasets(const QStringList &datasetNames) { m_presenter->setDatasets(datasetNames); }
void FunctionBrowser::setDatasets(const std::vector<std::string> &datasetNames) {
m_presenter->setDatasets(datasetNames);
}

/// Sets the datasets being fitted. They will be displayed by the
/// local parameter editing dialog.
Expand Down Expand Up @@ -185,7 +187,7 @@ void FunctionBrowser::removeDatasets(const QList<int> &indices) { m_presenter->r

/// Add some datasets to those already set.
/// @param names :: A list of names for the new datasets.
void FunctionBrowser::addDatasets(const QStringList &names) { m_presenter->addDatasets(names); }
void FunctionBrowser::addDatasets(const std::vector<std::string> &names) { m_presenter->addDatasets(names); }

/// Return the multidomain function for multi-dataset fitting
IFunction_sptr FunctionBrowser::getGlobalFunction() { return m_presenter->getFitFunction(); }
Expand Down

0 comments on commit 1d257a8

Please sign in to comment.