57 QWidget *
parent =
nullptr);
62 [[nodiscard]]
int writeCount()
const {
return m_writes; }
70 void onRemoveSpecies();
71 void onAddCoefficient();
72 void onRemoveCoefficient();
75 void onAddInitOverride();
76 void onRemoveInitOverride();
78 void onTabChanged(
int index);
82 QWidget *buildOptionsTab();
83 QWidget *buildSpeciesTab();
84 QWidget *buildCoefficientsTab();
85 QWidget *buildTermsTab();
86 QWidget *buildExpressionsTab();
87 QWidget *buildInitialQualityTab();
88 QWidget *buildFileTab();
89 QWidget *buildSourcesPlaceholderTab();
93 void loadCoefficients();
95 void loadExpressions();
96 void loadInitialQuality();
100 void refreshBinding();
101 void setStatus(
const QString &msg,
bool error);
102 void bumpWrites() { ++m_writes; }
104 QStringList speciesNames()
const;
107 QTabWidget *m_tabs =
nullptr;
108 QLabel *m_statusLabel =
nullptr;
109 QPushButton *m_saveBtn =
nullptr;
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;
121 QTableWidget *m_speciesTable =
nullptr;
122 QLineEdit *m_newSpeciesName =
nullptr;
123 QComboBox *m_newSpeciesKind =
nullptr;
124 QLineEdit *m_newSpeciesUnits =
nullptr;
127 QTableWidget *m_coeffTable =
nullptr;
128 QLineEdit *m_newCoeffName =
nullptr;
129 QComboBox *m_newCoeffKind =
nullptr;
130 QDoubleSpinBox *m_newCoeffValue =
nullptr;
133 QTableWidget *m_termTable =
nullptr;
134 QLineEdit *m_newTermName =
nullptr;
137 QTableWidget *m_exprTable =
nullptr;
140 QTableWidget *m_initGlobalTable =
nullptr;
141 QTableWidget *m_initOverrideTable =
nullptr;
144 QPlainTextEdit *m_fileEdit =
nullptr;
145 QLabel *m_fileStatus =
nullptr;
146 QString m_fileBaseline;
147 int m_fileTabIndex = -1;
148 int m_lastTabIndex = 0;
150 bool m_loading =
false;
151 bool m_gatingBack =
false;