Mantid
Loading...
Searching...
No Matches
IFunctionView.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
7#pragma once
8
9#include "DllOption.h"
10
11#include "MantidAPI/IFunction.h"
12
13#include <QString>
14#include <QWidget>
15#include <optional>
16#include <type_traits>
17
18namespace MantidQt {
19namespace MantidWidgets {
20
21using namespace Mantid::API;
22
27 Q_OBJECT
28public:
29 IFunctionView(QWidget *parent = nullptr) : QWidget(parent) {}
30 virtual ~IFunctionView() = default;
31 virtual void clear() = 0;
32 virtual void setFunction(IFunction_sptr fun) = 0;
33 virtual bool hasFunction() const = 0;
35 virtual void setParameter(std::string const &parameterName, double value) = 0;
36 virtual void setParameterError(std::string const &parameterName, double error) = 0;
37 virtual double getParameter(std::string const &parameterName) const = 0;
38 virtual IFunction::Attribute getAttribute(std::string const &attrName) const = 0;
39 virtual void setErrorsEnabled(bool enabled) = 0;
40 virtual void clearErrors() = 0;
41 virtual std::optional<std::string> currentFunctionIndex() const = 0;
42 virtual void setParameterTie(std::string const &parameterName, std::string const &tie) = 0;
43 virtual void setParameterConstraint(std::string const &parameterName, std::string const &constraint) = 0;
44 virtual void setGlobalParameters(const std::vector<std::string> &) = 0;
45 virtual void showFunctionHelp(std::string const &) const = 0;
46 // Set the value of an attribute based on the template type
47 template <typename T> void setAttributeValue(std::string const &attributeName, T &value) {
48 if constexpr (std::is_same_v<T, double>) {
49 setDoubleAttribute(attributeName, value);
50 } else if constexpr (std::is_same_v<T, int>) {
51 setIntAttribute(attributeName, value);
52 } else if constexpr (std::is_same_v<T, std::string>) {
53 setStringAttribute(attributeName, value);
54 } else if constexpr (std::is_same_v<T, bool>) {
55 setBooleanAttribute(attributeName, value);
56 } else if constexpr (std::is_same_v<T, std::vector<double>>) {
57 setVectorAttribute(attributeName, value);
58 }
59 }
60
61protected:
62 virtual void setDoubleAttribute(std::string const &parameterName, double value) = 0;
63 virtual void setIntAttribute(std::string const &parameterName, int value) = 0;
64 virtual void setStringAttribute(std::string const &parameterName, std::string &value) = 0;
65 virtual void setBooleanAttribute(std::string const &parameterName, bool value) = 0;
66 virtual void setVectorAttribute(std::string const &parameterName, std::vector<double> &val) = 0;
67
68signals:
70 void functionReplaced(std::string const &funStr);
72 void functionAdded(std::string const &funStr);
74 void functionRemoved(std::string const &functionIndex);
76 void functionRemovedString(std::string const &funStr);
80 void parameterChanged(std::string const &parameterName);
82 void attributePropertyChanged(std::string const &attrName);
84 void localParameterButtonClicked(std::string const &parameterName);
86 void parameterTieChanged(std::string const &parameterName, std::string const &tie);
88 void parameterConstraintAdded(std::string const &functionIndex, std::string const &constraint);
90 void parameterConstraintRemoved(std::string const &parameterName);
96 void globalsChanged(const std::vector<std::string> &);
97};
98
99} // namespace MantidWidgets
100} // namespace MantidQt
#define EXPORT_OPT_MANTIDQT_COMMON
Definition DllOption.h:15
double value
The value of the point.
Definition FitMW.cpp:51
double error
The interface to a function view.
void localParameterButtonClicked(std::string const &parameterName)
In multi-dataset context a button value editor was clicked.
virtual void setDoubleAttribute(std::string const &parameterName, double value)=0
void parameterTieChanged(std::string const &parameterName, std::string const &tie)
User sets a tie.
IFunctionView(QWidget *parent=nullptr)
virtual void setFunction(IFunction_sptr fun)=0
virtual void setParameterError(std::string const &parameterName, double error)=0
virtual void setVectorAttribute(std::string const &parameterName, std::vector< double > &val)=0
void setAttributeValue(std::string const &attributeName, T &value)
virtual IFunction::Attribute getAttribute(std::string const &attrName) const =0
virtual void setParameter(std::string const &parameterName, double value)=0
virtual std::optional< std::string > currentFunctionIndex() const =0
void copyToClipboardRequest()
User requested copy function to clipboard.
virtual void setGlobalParameters(const std::vector< std::string > &)=0
void globalsChanged(const std::vector< std::string > &)
User changed the list of global parameters.
virtual void setParameterConstraint(std::string const &parameterName, std::string const &constraint)=0
void parameterChanged(std::string const &parameterName)
Function parameter gets changed.
void functionAdded(std::string const &funStr)
User adds a function.
void parameterConstraintRemoved(std::string const &parameterName)
User removes a constraint.
virtual void setParameterTie(std::string const &parameterName, std::string const &tie)=0
virtual double getParameter(std::string const &parameterName) const =0
void attributePropertyChanged(std::string const &attrName)
Function attribute gets changed.
virtual void setIntAttribute(std::string const &parameterName, int value)=0
void functionHelpRequest()
User requested function help.
void functionReplaced(std::string const &funStr)
User replaces the whole function (eg, by pasting it from clipboard)
void parameterConstraintAdded(std::string const &functionIndex, std::string const &constraint)
User sets a constraint.
virtual bool hasFunction() const =0
virtual IFunction_sptr getSelectedFunction()=0
virtual void setErrorsEnabled(bool enabled)=0
void functionRemovedString(std::string const &funStr)
User removes a function.
void functionRemoved(std::string const &functionIndex)
User removes a function.
void currentFunctionChanged()
User selects a different (sub)function (or one of it's sub-properties)
virtual void setBooleanAttribute(std::string const &parameterName, bool value)=0
virtual void setStringAttribute(std::string const &parameterName, std::string &value)=0
virtual void showFunctionHelp(std::string const &) const =0
Attribute is a non-fitting parameter.
Definition IFunction.h:285
The AlgorithmProgressDialogPresenter keeps track of the running algorithms and displays a progress ba...
std::shared_ptr< IFunction > IFunction_sptr
shared pointer to the function base class
Definition IFunction.h:743