16#include <QApplication>
32 : m_view(view), m_model(
std::make_unique<
FunctionModel>()), m_editLocalParameterDialog(nullptr) {
35 connect(
m_view, SIGNAL(functionAdded(std::string
const &)),
this, SLOT(
viewAddedFunction(std::string
const &)));
37 connect(
m_view, SIGNAL(parameterTieChanged(std::string
const &, std::string
const &)),
this,
39 connect(
m_view, SIGNAL(parameterConstraintAdded(std::string
const &, std::string
const &)),
this,
41 connect(
m_view, SIGNAL(parameterConstraintRemoved(std::string
const &)),
this,
43 connect(
m_view, SIGNAL(localParameterButtonClicked(std::string
const &)),
this,
46 connect(
m_view, SIGNAL(globalsChanged(
const std::vector<std::string> &)),
this,
49 connect(
m_view, SIGNAL(attributePropertyChanged(std::string
const &)),
this,
54 m_model->setFunction(std::move(fun));
60 m_model->setFunctionString(funStr);
86 return m_model->getParameter(parameterName);
90 return m_model->isParameterFixed(parameterName);
94 return m_model->getParameterTie(parameterName);
103 m_model->updateMultiDatasetParameters(fun);
108 m_model->updateMultiDatasetAttributes(fun);
121 m_model->setDatasets(datasetNames);
125 m_model->setDatasets(datasets);
129 m_model->addDatasets(datasetNames);
135 return m_model->getDatasetDomainNames();
148 m_model->removeDatasets(indices);
153 return m_model->getLocalParameterValue(parameterName, i);
157 return m_model->isLocalParameterFixed(parameterName, i);
161 return m_model->getLocalParameterTie(parameterName, i);
165 return m_model->getLocalParameterConstraint(parameterName, i);
169 m_model->setLocalParameterValue(parameterName, i,
value);
170 if (
m_model->currentDomainIndex() == i) {
178 if (
m_model->currentDomainIndex() == i) {
185 m_model->setLocalParameterFixed(parameterName, i, fixed);
186 if (
m_model->currentDomainIndex() == i) {
196 std::string
const &tie) {
197 m_model->setLocalParameterTie(parameterName, i, tie);
198 if (
m_model->currentDomainIndex() == i) {
204 std::string
const &constraint) {
205 m_model->setLocalParameterConstraint(parameterName, i, constraint);
206 if (
m_model->currentDomainIndex() == i) {
212 return m_model->getGlobalParameters();
216 m_model->setGlobalParameters(globals);
221 return m_model->getLocalParameters();
226 if (!paramName.empty())
231 m_model->setFunctionString(funStr);
237 auto const prefixValue = prefix ? *prefix :
"";
238 m_model->addFunction(prefixValue, funStr);
244 m_model->removeFunction(functionIndex);
250 m_model->changeTie(parameterName, tie);
255 std::string
const &constraint) {
256 m_model->addConstraint(functionIndex, constraint);
261 m_model->removeConstraint(parameterName);
268 QApplication::clipboard()->setText(QString::fromStdString(fun->asString()));
273 m_model->setGlobalParameters(globalParameters);
301 treeView->setStretchLastColumn(stretch);
318 }
catch (
const std::invalid_argument &e) {
334 QStringList constraints;
335 for (
int i = 0; i < static_cast<int>(domainNames.size()); ++i) {
337 values.push_back(
value);
339 fixes.push_back(fixed);
341 ties.push_back(QString::fromStdString(tie));
343 constraints.push_back(QString::fromStdString(constraint));
353 if (result == QDialog::Accepted) {
360 for (
int i = 0; i < values.size(); ++i) {
362 if (!ties[i].isEmpty()) {
364 }
else if (fixes[i]) {
378 for (
auto const &
name :
m_model->getParameterNames()) {
393 for (
const auto &
name :
m_model->getAttributeNames()) {
398 value.apply(visitor);
double value
The value of the point.
std::map< DeltaEMode::Type, std::string > index
void viewRequestedFunctionHelp()
void setStretchLastColumn(bool stretch)
void viewAddedConstraint(std::string const &functionIndex, std::string const &constraint)
void viewRemovedFunction(std::string const &functionIndex)
std::string getFitFunctionString() const
void setDatasets(const std::vector< std::string > &datasetNames)
void updateMultiDatasetAttributes(const IFunction &fun)
void setErrorsEnabled(bool enabled)
void addDatasets(const std::vector< std::string > &datasetNames)
int getNumberOfDatasets() const
void setLocalParameterTie(std::string const ¶meterName, int i, std::string const &tie)
void removeDatasets(QList< int > indices)
void functionStructureChanged()
bool isLocalParameterFixed(std::string const ¶meterName, int i) const
void setColumnSizes(int s0, int s1, int s2)
void viewRemovedConstraint(std::string const ¶meterName)
void setLocalParameterConstraint(std::string const ¶meterName, int i, std::string const &constraint)
void setFunctionString(std::string const &funStr)
void setParameterError(std::string const ¶meterName, double value)
EditLocalParameterDialog * m_editLocalParameterDialog
IFunction_sptr getFitFunction() const
double getParameter(std::string const ¶meterName)
void setLocalParameterValue(std::string const ¶meterName, int i, double value)
int getCurrentDataset() const
std::string getLocalParameterConstraint(std::string const ¶meterName, int i) const
void viewAddedFunction(std::string const &funStr)
void parameterChanged(std::string const &funcIndex, std::string const ¶meterName)
void updateMultiDatasetParameters(const IFunction &fun)
IFunction_sptr getFunctionByIndex(std::string const &index)
std::string getLocalParameterTie(std::string const ¶meterName, int i) const
void viewChangedAttribute(std::string const &attrName)
void editLocalParameter(std::string const ¶meterName)
Launches the Edit Local Parameter dialog and deals with the input from it.
void setParameter(std::string const ¶meterName, double value)
void updateViewAttributesFromModel()
std::vector< std::string > getDatasetDomainNames() const
void updateViewFromModel()
void editLocalParameterFinish(int result)
FunctionMultiDomainPresenter(IFunctionView *view)
bool isParameterFixed(std::string const ¶meterName) const
void setNumberOfDatasets(int)
void setCurrentDataset(int)
void viewChangedTie(std::string const ¶meterName, std::string const &tie)
void attributeChanged(std::string const &attributeName)
void viewRequestedCopyToClipboard()
std::string getFunctionString() const
void updateParameters(const IFunction &fun)
IFunction_sptr getFunction() const
void viewPastedFunction(std::string const &funStr)
void setLocalParameterFixed(std::string const ¶meterName, int i, bool fixed)
std::unique_ptr< FunctionModel > m_model
std::vector< std::string > getGlobalParameters() const
std::optional< std::string > currentFunctionIndex() const
std::string getParameterTie(std::string const ¶meterName) const
double getLocalParameterValue(std::string const ¶meterName, int i) const
void viewChangedGlobals(const std::vector< std::string > &globalParameters)
void setFunction(IFunction_sptr fun)
void viewChangedParameter(std::string const ¶meterName)
void setGlobalParameters(std::vector< std::string > const &globals)
std::vector< std::string > getDatasetNames() const
void setBackgroundA0(double value)
std::vector< std::string > getLocalParameters() const
This is an interface to a fitting function - a semi-abstarct class.
The Logger class is in charge of the publishing messages from the framework through various channels.
void error(const std::string &msg)
Logs at error level.
Kernel::Logger g_log("ExperimentInfo")
static logger object
std::shared_ptr< IFunction > IFunction_sptr
shared pointer to the function base class
Kernel::Logger g_log("DetermineSpinStateOrder")
Attribute visitor structure supporting lambda expressions Example usage: AttributeLambdaVisitor{[](co...