Mantid
Loading...
Searching...
No Matches
FitScriptGeneratorView.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2020 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#include "ui_FitScriptGenerator.h"
11
13#include "MantidAPI/IFunction.h"
22
23#include <memory>
24#include <string>
25#include <tuple>
26#include <vector>
27
28#include <QCloseEvent>
29#include <QMap>
30#include <QString>
31#include <QStringList>
32#include <QWidget>
33
34namespace MantidQt {
35namespace MantidWidgets {
36
37class FitScriptGeneratorDataTable;
38class EditLocalParameterDialog;
39class IFitScriptGeneratorPresenter;
40struct GlobalParameter;
41struct GlobalTie;
42
45 Q_OBJECT
46
47public:
48 FitScriptGeneratorView(QWidget *parent = nullptr, FittingMode fittingMode = FittingMode::SEQUENTIAL,
49 QMap<QString, QString> const &fitOptions = QMap<QString, QString>());
50 ~FitScriptGeneratorView() override;
51
52 void subscribePresenter(IFitScriptGeneratorPresenter *presenter) override;
53
54 void deleteHandle(std::string const &wsName, [[maybe_unused]] Workspace_sptr const &ws) override;
55 void clearHandle() override;
56 void renameHandle(std::string const &wsName, std::string const &newName) override;
57
58 [[nodiscard]] std::string workspaceName(FitDomainIndex index) const override;
59 [[nodiscard]] WorkspaceIndex workspaceIndex(FitDomainIndex index) const override;
60 [[nodiscard]] double startX(FitDomainIndex index) const override;
61 [[nodiscard]] double endX(FitDomainIndex index) const override;
62
63 [[nodiscard]] std::vector<FitDomainIndex> allRows() const override;
64 [[nodiscard]] std::vector<FitDomainIndex> selectedRows() const override;
65 [[nodiscard]] FitDomainIndex currentRow() const override;
66
67 [[nodiscard]] bool hasLoadedData() const override;
68
69 [[nodiscard]] double parameterValue(std::string const &parameter) const override;
70 [[nodiscard]] Mantid::API::IFunction::Attribute attributeValue(std::string const &attribute) const override;
71
72 void renameWorkspace(std::string const &workspaceName, std::string const &newName) override;
73
74 void removeDomain(FitDomainIndex domainIndex) override;
75 void addWorkspaceDomain(std::string const &workspaceName, WorkspaceIndex workspaceIndex, double startX,
76 double endX) override;
77
78 void openAddWorkspaceDialog() override;
79 [[nodiscard]] std::vector<Mantid::API::MatrixWorkspace_const_sptr>
80 getDialogWorkspaces(MantidWidgets::IAddWorkspaceDialog *dialog) override;
81
82 void openEditLocalParameterDialog(std::string const &parameter, std::vector<std::string> const &workspaceNames,
83 std::vector<std::string> const &domainNames, std::vector<double> const &values,
84 std::vector<bool> const &fixes, std::vector<std::string> const &ties,
85 std::vector<std::string> const &constraints) override;
86 std::tuple<std::string, std::vector<double>, std::vector<bool>, std::vector<std::string>, std::vector<std::string>>
87 getEditLocalParameterResults() const override;
88
89 [[nodiscard]] std::tuple<std::string, std::string, std::string, std::string, std::string, bool>
90 fitOptions() const override;
91 [[nodiscard]] std::string filepath() const override;
92
93 void resetSelection() override;
94
95 bool applyFunctionChangesToAll() const override;
96
97 void clearFunction() override;
98 void setFunction(Mantid::API::IFunction_sptr const &function) const override;
99
100 void setSimultaneousMode(bool simultaneousMode) override;
101
102 void setGlobalTies(std::vector<GlobalTie> const &globalTies) override;
103 void setGlobalParameters(std::vector<GlobalParameter> const &globalParameter) override;
104
105 void displayWarning(std::string const &message) override;
106
107 void setSuccessText(std::string const &text) override;
108 void saveTextToClipboard(std::string const &text) const override;
109
110public:
112 FitScriptGeneratorDataTable *tableWidget() const override { return m_dataTable.get(); }
113 QPushButton *removeButton() const override { return m_ui.pbRemoveDomain; }
114 QPushButton *addWorkspaceButton() const override { return m_ui.pbAddDomain; }
115 QPushButton *generateScriptToFileButton() const override { return m_ui.pbGenerateScriptToFile; }
116 QPushButton *generateScriptToClipboardButton() const override { return m_ui.pbGenerateScriptToClipboard; }
117
118private slots:
119 void notifyADSDeleteEvent(std::string const &workspaceName);
120 void notifyADSClearEvent();
121 void notifyADSRenameEvent(std::string const &workspaceName, std::string const &newName);
122
123 void addWorkspaceDialogAccepted(MantidWidgets::IAddWorkspaceDialog *dialog);
124
125 void onRemoveDomainClicked();
126 void onAddDomainClicked();
127 void onCellChanged(int row, int column);
128 void onItemSelected();
129 void onFunctionRemoved(std::string const &function);
130 void onFunctionAdded(std::string const &function);
131 void onFunctionReplaced(std::string const &function);
132 void onParameterChanged(std::string const &parameter);
133 void onAttributeChanged(std::string const &attribute);
134 void onParameterTieChanged(std::string const &parameter, std::string const &tie);
135 void onParameterConstraintRemoved(std::string const &parameter);
136 void onParameterConstraintChanged(std::string const &functionIndex, std::string const &constraint);
137 void onGlobalParametersChanged(std::vector<std::string> const &globalParameters);
138 void onCopyFunctionToClipboard();
139 void onFunctionHelpRequested();
140 void onOutputBaseNameChanged(std::string const &outputBaseName);
141 void onFittingModeChanged(FittingMode fittingMode);
142 void onEditLocalParameterClicked(std::string const &parameter);
143 void onEditLocalParameterFinished(int result);
144 void onGenerateScriptToFileClicked();
145 void onGenerateScriptToClipboardClicked();
146 void onHelpClicked();
147
148private:
149 void connectUiSignals();
150
151 void setFitBrowserOptions(QMap<QString, QString> const &fitOptions);
152 void setFittingMode(FittingMode fittingMode);
153
155 std::unique_ptr<FitScriptGeneratorDataTable> m_dataTable;
156 std::unique_ptr<FunctionTreeView> m_functionTreeView;
157 std::unique_ptr<FitScriptOptionsBrowser> m_fitOptionsBrowser;
159 Ui::FitScriptGenerator m_ui;
160};
161
162} // namespace MantidWidgets
163} // namespace MantidQt
#define EXPORT_OPT_MANTIDQT_COMMON
Definition DllOption.h:15
std::map< DeltaEMode::Type, std::string > index
A dialog for displaying and editing values of local parameters.
This class represents the table widget which holds domain data for the FitScriptGenerator interface.
std::unique_ptr< FitScriptOptionsBrowser > m_fitOptionsBrowser
std::unique_ptr< FunctionTreeView > m_functionTreeView
QPushButton * generateScriptToClipboardButton() const override
FitScriptGeneratorDataTable * tableWidget() const override
Testing accessors.
std::unique_ptr< FitScriptGeneratorDataTable > m_dataTable
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< Workspace > Workspace_sptr
shared pointer to Mantid::API::Workspace
std::shared_ptr< IFunction > IFunction_sptr
shared pointer to the function base class
Definition IFunction.h:743
void renameWorkspace(const IAlgorithm_sptr &renamer, const Workspace_sptr &workspace, const std::string &newName)
A struct to impliment strongly typed integers, without implicit conversion.
Definition IndexTypes.h:24