SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
reactionsystemeditordialog.h
Go to the documentation of this file.
1
29#ifndef OPENSWMM_UI_DIALOGS_REACTIONSYSTEMEDITORDIALOG_H
30#define OPENSWMM_UI_DIALOGS_REACTIONSYSTEMEDITORDIALOG_H
31
32#include <openswmm/engine/openswmm_engine.h>
33
34#include <QDialog>
35
36class QComboBox;
37class QDoubleSpinBox;
38class QLabel;
39class QLineEdit;
40class QPlainTextEdit;
41class QPushButton;
42class QTableWidget;
43class QTabWidget;
44
45namespace OpenSWMMVis
46{
47
51class ReactionSystemEditorDialog : public QDialog
52{
53 Q_OBJECT
54
55public:
57 QWidget *parent = nullptr);
58 ~ReactionSystemEditorDialog() override = default;
59
62 [[nodiscard]] int writeCount() const { return m_writes; }
63 [[nodiscard]] bool wroteAnyChanges() const { return m_writes > 0; }
64
66 void reloadAll();
67
68private slots:
69 void onAddSpecies();
70 void onRemoveSpecies();
71 void onAddCoefficient();
72 void onRemoveCoefficient();
73 void onAddTerm();
74 void onRemoveTerm();
75 void onAddInitOverride();
76 void onRemoveInitOverride();
77 void onSave();
78 void onTabChanged(int index);
79
80private:
81 void buildUi();
82 QWidget *buildOptionsTab();
83 QWidget *buildSpeciesTab();
84 QWidget *buildCoefficientsTab();
85 QWidget *buildTermsTab();
86 QWidget *buildExpressionsTab();
87 QWidget *buildInitialQualityTab();
88 QWidget *buildFileTab();
89 QWidget *buildSourcesPlaceholderTab();
90
91 void loadOptions();
92 void loadSpecies();
93 void loadCoefficients();
94 void loadTerms();
95 void loadExpressions();
96 void loadInitialQuality();
97 void loadFileTab();
98 bool applyFileTab();
99
100 void refreshBinding();
101 void setStatus(const QString &msg, bool error);
102 void bumpWrites() { ++m_writes; }
103
104 QStringList speciesNames() const;
105
106 SWMM_Engine m_engine = nullptr;
107 QTabWidget *m_tabs = nullptr;
108 QLabel *m_statusLabel = nullptr;
109 QPushButton *m_saveBtn = nullptr;
110
111 // Options
112 QComboBox *m_solverCombo = nullptr;
113 QComboBox *m_couplingCombo = nullptr;
114 QComboBox *m_rateUnitsCombo = nullptr;
115 QComboBox *m_areaUnitsCombo = nullptr;
116 QDoubleSpinBox *m_timestepSpin = nullptr;
117 QDoubleSpinBox *m_atolSpin = nullptr;
118 QDoubleSpinBox *m_rtolSpin = nullptr;
119
120 // Species
121 QTableWidget *m_speciesTable = nullptr;
122 QLineEdit *m_newSpeciesName = nullptr;
123 QComboBox *m_newSpeciesKind = nullptr;
124 QLineEdit *m_newSpeciesUnits = nullptr;
125
126 // Coefficients
127 QTableWidget *m_coeffTable = nullptr;
128 QLineEdit *m_newCoeffName = nullptr;
129 QComboBox *m_newCoeffKind = nullptr;
130 QDoubleSpinBox *m_newCoeffValue = nullptr;
131
132 // Terms
133 QTableWidget *m_termTable = nullptr;
134 QLineEdit *m_newTermName = nullptr;
135
136 // Expressions
137 QTableWidget *m_exprTable = nullptr;
138
139 // Initial quality
140 QTableWidget *m_initGlobalTable = nullptr;
141 QTableWidget *m_initOverrideTable = nullptr;
142
143 // File tab
144 QPlainTextEdit *m_fileEdit = nullptr;
145 QLabel *m_fileStatus = nullptr;
146 QString m_fileBaseline;
147 int m_fileTabIndex = -1;
148 int m_lastTabIndex = 0;
149
150 bool m_loading = false;
151 bool m_gatingBack = false;
152 int m_writes = 0;
153};
154
155} // namespace OpenSWMMVis
156
157#endif // OPENSWMM_UI_DIALOGS_REACTIONSYSTEMEDITORDIALOG_H
Non-modal editor for the model's reaction system.
Definition reactionsystemeditordialog.h:52
int writeCount() const
Successful engine writes performed so far (test-facing; the caller marks the project dirty when > 0 o...
Definition reactionsystemeditordialog.h:62
void reloadAll()
Reload every tab from the engine (after external CRUD).
Definition reactionsystemeditordialog.cpp:600
bool wroteAnyChanges() const
Definition reactionsystemeditordialog.h:63
~ReactionSystemEditorDialog() override=default
int index
Position in m_quadRegions / m_quadReports.
Definition meshgenerator.cpp:153
Definition gwsourcesummary.h:21
void * SWMM_Engine
Definition objectdefaultsapplier.h:19
QVector< int > parent
union-find
Definition pslgminsize.cpp:176