COPASI API  4.16.103
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
CQReactionDM Class Reference

#include <CQReactionDM.h>

Inheritance diagram for CQReactionDM:
Inheritance graph
[legend]
Collaboration diagram for CQReactionDM:
Collaboration graph
[legend]

Public Member Functions

virtual int columnCount (const QModelIndex &parent=QModelIndex()) const
 
 CQReactionDM (QObject *parent=0)
 
QVariant data (const QModelIndex &index, int role) const
 
Qt::ItemFlags flags (const QModelIndex &index) const
 
QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
 
bool removeRows (QModelIndexList rows, const QModelIndex &index=QModelIndex())
 
virtual int rowCount (const QModelIndex &parent=QModelIndex()) const
 
bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
 
- Public Member Functions inherited from CQBaseDataModel
virtual bool clear ()
 
 CQBaseDataModel (QObject *parent=0)
 
QString createNewName (const QString name, const int nameCol)
 
bool insertRow ()
 
virtual bool isDefaultRow (const QModelIndex &i) const
 
bool removeRow (int position)
 

Protected Member Functions

bool insertRows (int position, int rows, const QModelIndex &index=QModelIndex())
 
bool removeRows (int position, int rows, const QModelIndex &index=QModelIndex())
 

Private Member Functions

void setEquation (const CReaction *pRea, const QModelIndex &index, const QVariant &value)
 

Private Attributes

QString mNewEquation
 

Additional Inherited Members

- Signals inherited from CQBaseDataModel
void notifyGUI (ListViews::ObjectType objectType, ListViews::Action action, const std::string &key="")
 

Detailed Description

Definition at line 32 of file CQReactionDM.h.

Constructor & Destructor Documentation

CQReactionDM::CQReactionDM ( QObject *  parent = 0)

Definition at line 24 of file CQReactionDM.cpp.

24  :
25  CQBaseDataModel(parent),
26  mNewEquation()
27 {}
CQBaseDataModel(QObject *parent=0)
QString mNewEquation
Definition: CQReactionDM.h:55

Member Function Documentation

int CQReactionDM::columnCount ( const QModelIndex &  parent = QModelIndex()) const
virtual

Definition at line 33 of file CQReactionDM.cpp.

References TOTAL_COLS_REACTIONS.

Referenced by CQReactionsWidget::keyPressEvent().

34 {
35  return TOTAL_COLS_REACTIONS;
36 }
#define TOTAL_COLS_REACTIONS
Definition: CQReactionDM.h:30
QVariant CQReactionDM::data ( const QModelIndex &  index,
int  role 
) const
virtual

Implements CQBaseDataModel.

Definition at line 49 of file CQReactionDM.cpp.

References COL_EQUATION, COL_FLUX, COL_NAME_REACTIONS, COL_PARTICLE_FLUX, COL_RATE_LAW, COL_ROW_NUMBER, flags(), FROM_UTF8, CChemEqInterface::getChemEqString(), CCopasiRootContainer::getDatamodelList(), CReaction::getFlux(), CReaction::getFunction(), CCopasiObject::getObjectName(), CReaction::getParticleFlux(), CQBaseDataModel::isDefaultRow(), mNewEquation, and rowCount().

Referenced by setData(), and setEquation().

50 {
51  if (!index.isValid())
52  return QVariant();
53 
54  if (index.row() >= rowCount())
55  return QVariant();
56 
57  if (index.column() > 0 && role == Qt::ForegroundRole && !(flags(index) & Qt::ItemIsEditable))
58  return QColor(Qt::darkGray);
59 
60  if (role == Qt::DisplayRole || role == Qt::EditRole)
61  {
62  if (isDefaultRow(index))
63  {
64  switch (index.column())
65  {
66  case COL_ROW_NUMBER:
67  return QVariant(QString(""));
68 
69  case COL_NAME_REACTIONS:
70  return QVariant(QString("New Reaction"));
71 
72  default:
73  return QVariant(QString(""));
74  }
75  }
76  else
77  {
78  CReaction *pRea = (*CCopasiRootContainer::getDatamodelList())[0]->getModel()->getReactions()[index.row()];
79 
80  switch (index.column())
81  {
82  case COL_ROW_NUMBER:
83  return QVariant(index.row() + 1);
84 
85  case COL_NAME_REACTIONS:
86  return QVariant(QString(FROM_UTF8(pRea->getObjectName())));
87 
88  case COL_EQUATION:
89 
90  if (mNewEquation.isEmpty())
91  {
92  return QVariant(QString(FROM_UTF8(CChemEqInterface::getChemEqString((*CCopasiRootContainer::getDatamodelList())[0]->getModel(), *pRea, false))));
93  }
94  else
95  {
96  return QVariant(mNewEquation);
97  }
98 
99  case COL_RATE_LAW:
100 
101  if (pRea->getFunction())
102  return QVariant(QString(FROM_UTF8(pRea->getFunction()->getObjectName())));
103  else
104  return QVariant();
105 
106  case COL_FLUX:
107  return QVariant(pRea->getFlux());
108 
109  case COL_PARTICLE_FLUX:
110  return QVariant(pRea->getParticleFlux());
111  }
112  }
113  }
114 
115  return QVariant();
116 }
#define COL_FLUX
Definition: CQReactionDM.h:28
#define FROM_UTF8(__x)
Definition: qtUtilities.h:73
const C_FLOAT64 & getParticleFlux() const
Definition: CReaction.cpp:201
const std::string & getObjectName() const
#define COL_EQUATION
const C_FLOAT64 & getFlux() const
Definition: CReaction.cpp:192
#define COL_PARTICLE_FLUX
Definition: CQReactionDM.h:29
const CFunction * getFunction() const
Definition: CReaction.cpp:252
#define COL_NAME_REACTIONS
Definition: CQReactionDM.h:25
#define COL_RATE_LAW
Definition: CQReactionDM.h:27
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
std::string getChemEqString(bool expanded) const
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
QString mNewEquation
Definition: CQReactionDM.h:55
virtual bool isDefaultRow(const QModelIndex &i) const
#define COL_ROW_NUMBER
Qt::ItemFlags flags(const QModelIndex &index) const
Qt::ItemFlags CQReactionDM::flags ( const QModelIndex &  index) const
virtual

Reimplemented from CQBaseDataModel.

Definition at line 38 of file CQReactionDM.cpp.

References COL_EQUATION, and COL_NAME_REACTIONS.

Referenced by data().

39 {
40  if (!index.isValid())
41  return Qt::ItemIsEnabled;
42 
43  if (index.column() == COL_NAME_REACTIONS || index.column() == COL_EQUATION)
44  return QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
45  else
46  return QAbstractItemModel::flags(index);
47 }
#define COL_EQUATION
#define COL_NAME_REACTIONS
Definition: CQReactionDM.h:25
QVariant CQReactionDM::headerData ( int  section,
Qt::Orientation  orientation,
int  role = Qt::DisplayRole 
) const
virtual

Implements CQBaseDataModel.

Definition at line 118 of file CQReactionDM.cpp.

References COL_EQUATION, COL_FLUX, COL_NAME_REACTIONS, COL_PARTICLE_FLUX, COL_RATE_LAW, COL_ROW_NUMBER, FROM_UTF8, CCopasiRootContainer::getDatamodelList(), CModel::getFrequencyUnitsDisplayString(), and CModel::getQuantityRateUnitsDisplayString().

120 {
121  if (role != Qt::DisplayRole)
122  return QVariant();
123 
124  if (orientation == Qt::Horizontal)
125  {
126  switch (section)
127  {
128  case COL_ROW_NUMBER:
129  return QVariant(QString("#"));
130 
131  case COL_NAME_REACTIONS:
132  return QVariant(QString("Name"));
133 
134  case COL_EQUATION:
135  return QVariant(QString("Reaction"));
136 
137  case COL_RATE_LAW:
138  return QVariant(QString("Rate Law"));
139 
140  case COL_FLUX:
141  {
142  const CModel * pModel = (*CCopasiRootContainer::getDatamodelList())[0]->getModel();
143 
144  if (pModel == NULL) return QVariant();
145 
146  QString RateUnits;
147 
148  if (pModel)
149  RateUnits = FROM_UTF8(pModel->getQuantityRateUnitsDisplayString());
150 
151  if (!RateUnits.isEmpty())
152  RateUnits = "\n(" + RateUnits + ")";
153 
154  return QVariant("Flux" + RateUnits);
155  }
156 
157  case COL_PARTICLE_FLUX:
158  {
159  const CModel * pModel = (*CCopasiRootContainer::getDatamodelList())[0]->getModel();
160 
161  if (pModel == NULL) return QVariant();
162 
163  QString FrequencyUnits;
164 
165  if (pModel)
166  FrequencyUnits = FROM_UTF8(pModel->getFrequencyUnitsDisplayString());
167 
168  if (!FrequencyUnits.isEmpty())
169  FrequencyUnits = "\n(" + FrequencyUnits + ")";
170 
171  return QVariant("Flux" + FrequencyUnits);
172  }
173 
174  default:
175  return QVariant();
176  }
177  }
178  else
179  return QString("%1").arg(section + 1);
180 }
#define COL_FLUX
Definition: CQReactionDM.h:28
#define FROM_UTF8(__x)
Definition: qtUtilities.h:73
std::string getFrequencyUnitsDisplayString() const
Definition: CModel.cpp:4539
#define COL_EQUATION
std::string getQuantityRateUnitsDisplayString() const
Definition: CModel.cpp:4657
#define COL_PARTICLE_FLUX
Definition: CQReactionDM.h:29
#define COL_NAME_REACTIONS
Definition: CQReactionDM.h:25
#define COL_RATE_LAW
Definition: CQReactionDM.h:27
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
Definition: CModel.h:50
#define COL_ROW_NUMBER
bool CQReactionDM::insertRows ( int  position,
int  rows,
const QModelIndex &  index = QModelIndex() 
)
protectedvirtual

Implements CQBaseDataModel.

Definition at line 327 of file CQReactionDM.cpp.

References ListViews::ADD, COL_NAME_REACTIONS, CQBaseDataModel::createNewName(), CCopasiRootContainer::getDatamodelList(), CReaction::getKey(), CQBaseDataModel::notifyGUI(), ListViews::REACTION, and TO_UTF8.

328 {
329  beginInsertRows(QModelIndex(), position, position + rows - 1);
330 
331  for (int row = 0; row < rows; ++row)
332  {
333  CReaction *pRea = (*CCopasiRootContainer::getDatamodelList())[0]->getModel()->createReaction(TO_UTF8(createNewName("reaction", COL_NAME_REACTIONS)));
335  }
336 
337  endInsertRows();
338 
339  return true;
340 }
void notifyGUI(ListViews::ObjectType objectType, ListViews::Action action, const std::string &key="")
virtual const std::string & getKey() const
Definition: CReaction.cpp:190
#define COL_NAME_REACTIONS
Definition: CQReactionDM.h:25
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
QString createNewName(const QString name, const int nameCol)
#define TO_UTF8(__x)
Definition: qtUtilities.h:74
bool CQReactionDM::removeRows ( QModelIndexList  rows,
const QModelIndex &  index = QModelIndex() 
)

Definition at line 376 of file CQReactionDM.cpp.

References C_INVALID_INDEX, CQMessageBox::confirmDelete(), FROM_UTF8, CCopasiRootContainer::getDatamodelList(), CReaction::getDeletedObjects(), CCopasiDataModel::getModel(), CCopasiObject::getObjectName(), CModel::getReactions(), CQBaseDataModel::isDefaultRow(), and CQBaseDataModel::removeRow().

Referenced by CQReactionsWidget::deleteSelectedReactions().

377 {
378  if (rows.isEmpty())
379  return false;
380 
381  assert(CCopasiRootContainer::getDatamodelList()->size() > 0);
383  assert(pDataModel != NULL);
384  CModel * pModel = pDataModel->getModel();
385 
386  if (pModel == NULL)
387  return false;
388 
389 //Build the list of pointers to items to be deleted
390 //before actually deleting any item.
391  QList <CReaction *> pReactions;
392  QModelIndexList::const_iterator i;
393 
394  for (i = rows.begin(); i != rows.end(); ++i)
395  {
396  if (!isDefaultRow(*i) && pModel->getReactions()[(*i).row()])
397  pReactions.append(pModel->getReactions()[(*i).row()]);
398  }
399 
400  QList <CReaction *>::const_iterator j;
401 
402  for (j = pReactions.begin(); j != pReactions.end(); ++j)
403  {
404  CReaction * pReaction = *j;
405 
406  size_t delRow =
407  pModel->getReactions().CCopasiVector< CReaction >::getIndex(pReaction);
408 
409  if (delRow != C_INVALID_INDEX)
410  {
411  QMessageBox::StandardButton choice =
412  CQMessageBox::confirmDelete(NULL, "reaction",
413  FROM_UTF8(pReaction->getObjectName()),
414  pReaction->getDeletedObjects());
415 
416  if (choice == QMessageBox::Ok)
417  removeRow((int) delRow);
418  }
419  }
420 
421  return true;
422 }
#define FROM_UTF8(__x)
Definition: qtUtilities.h:73
const std::string & getObjectName() const
#define C_INVALID_INDEX
Definition: copasi.h:222
virtual std::set< const CCopasiObject * > getDeletedObjects() const
Definition: CReaction.cpp:959
bool removeRow(int position)
static StandardButton confirmDelete(QWidget *parent, const QString &objectType, const QString &objects, const std::set< const CCopasiObject * > &deletedObjects)
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
CCopasiVectorNS< CReaction > & getReactions()
Definition: CModel.cpp:1039
Definition: CModel.h:50
virtual bool isDefaultRow(const QModelIndex &i) const
bool CQReactionDM::removeRows ( int  position,
int  rows,
const QModelIndex &  index = QModelIndex() 
)
protectedvirtual

Implements CQBaseDataModel.

Definition at line 342 of file CQReactionDM.cpp.

References CCopasiVector< T >::begin(), ListViews::DELETE, CCopasiRootContainer::getDatamodelList(), CModel::getReactions(), CQBaseDataModel::notifyGUI(), ListViews::REACTION, and CModel::removeReaction().

343 {
344  if (rows <= 0)
345  return true;
346 
347  beginRemoveRows(QModelIndex(), position, position + rows - 1);
348 
349  CModel * pModel = (*CCopasiRootContainer::getDatamodelList())[0]->getModel();
350 
351  std::vector< std::string > DeletedKeys;
352  DeletedKeys.resize(rows);
353 
354  std::vector< std::string >::iterator itDeletedKey;
355  std::vector< std::string >::iterator endDeletedKey = DeletedKeys.end();
356 
357  CCopasiVector< CReaction >::const_iterator itRow = pModel->getReactions().begin() + position;
358 
359  for (itDeletedKey = DeletedKeys.begin(); itDeletedKey != endDeletedKey; ++itDeletedKey, ++itRow)
360  {
361  *itDeletedKey = (*itRow)->getKey();
362  }
363 
364  for (itDeletedKey = DeletedKeys.begin(); itDeletedKey != endDeletedKey; ++itDeletedKey)
365  {
366  pModel->removeReaction(*itDeletedKey);
367  emit notifyGUI(ListViews::REACTION, ListViews::DELETE, *itDeletedKey);
368  emit notifyGUI(ListViews::REACTION, ListViews::DELETE, "");//Refresh all as there may be dependencies.
369  }
370 
371  endRemoveRows();
372 
373  return true;
374 }
void notifyGUI(ListViews::ObjectType objectType, ListViews::Action action, const std::string &key="")
iterator begin()
std::vector< CType * >::const_iterator const_iterator
Definition: CCopasiVector.h:57
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
CCopasiVectorNS< CReaction > & getReactions()
Definition: CModel.cpp:1039
Definition: CModel.h:50
bool removeReaction(const CReaction *pReaction, const bool &recursive=true)
Definition: CModel.cpp:2792
int CQReactionDM::rowCount ( const QModelIndex &  parent = QModelIndex()) const
virtual

Definition at line 29 of file CQReactionDM.cpp.

References CCopasiRootContainer::getDatamodelList().

Referenced by data(), and CQReactionsWidget::deleteSelectedReactions().

30 {
31  return (int)(*CCopasiRootContainer::getDatamodelList())[0]->getModel()->getReactions().size() + 1;
32 }
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
bool CQReactionDM::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
)
virtual

Implements CQBaseDataModel.

Definition at line 182 of file CQReactionDM.cpp.

References ListViews::CHANGE, COL_EQUATION, COL_NAME_REACTIONS, CQBaseDataModel::createNewName(), data(), CCopasiRootContainer::getDatamodelList(), CReaction::getKey(), CQBaseDataModel::insertRow(), CQBaseDataModel::isDefaultRow(), CQBaseDataModel::notifyGUI(), ListViews::REACTION, setEquation(), CCopasiObject::setObjectName(), and TO_UTF8.

184 {
185  if (index.isValid() && role == Qt::EditRole)
186  {
187  bool defaultRow = isDefaultRow(index);
188 
189  if (defaultRow)
190  {
191  if (index.data() != value)
192  insertRow();
193  else
194  return false;
195  }
196 
197  // this loads the reaction into a CReactionInterface object.
198  // the gui works on this object and later writes back the changes to ri;
199  assert(CCopasiRootContainer::getDatamodelList()->size() > 0);
201  CReaction *pRea = (*CCopasiRootContainer::getDatamodelList())[0]->getModel()->getReactions()[index.row()];
202 
203  if (index.column() == COL_NAME_REACTIONS)
204  pRea->setObjectName(TO_UTF8(value.toString()));
205  else if (index.column() == COL_EQUATION)
206  setEquation(pRea, index, value);
207 
208  if (defaultRow && this->index(index.row(), COL_NAME_REACTIONS).data().toString() == "reaction")
210 
211  emit dataChanged(index, index);
213  }
214 
215  return true;
216 }
void notifyGUI(ListViews::ObjectType objectType, ListViews::Action action, const std::string &key="")
virtual const std::string & getKey() const
Definition: CReaction.cpp:190
#define COL_EQUATION
void setEquation(const CReaction *pRea, const QModelIndex &index, const QVariant &value)
QVariant data(const QModelIndex &index, int role) const
#define COL_NAME_REACTIONS
Definition: CQReactionDM.h:25
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
QString createNewName(const QString name, const int nameCol)
#define TO_UTF8(__x)
Definition: qtUtilities.h:74
virtual bool isDefaultRow(const QModelIndex &i) const
bool setObjectName(const std::string &name)
void CQReactionDM::setEquation ( const CReaction pRea,
const QModelIndex &  index,
const QVariant &  value 
)
private

Definition at line 218 of file CQReactionDM.cpp.

References ListViews::ADD, ListViews::CHANGE, COL_NAME_REACTIONS, CQMessageBox::confirmDelete(), CReactionInterface::createMetabolites(), CReactionInterface::createOtherObjects(), data(), ListViews::DELETE, FROM_UTF8, CKeyFactory::get(), CReactionInterface::getChemEqString(), CCopasiRootContainer::getDatamodelList(), CReactionInterface::getDeletedParameters(), CReaction::getKey(), CCopasiRootContainer::getKeyFactory(), CCopasiDataModel::getModel(), CReactionInterface::initFromReaction(), CChemEqInterface::isValidEq(), ListViews::METABOLITE, mNewEquation, ListViews::MODEL, CQBaseDataModel::notifyGUI(), ListViews::REACTION, CModel::removeLocalReactionParameter(), CReactionInterface::setChemEqString(), CReactionInterface::setFunctionWithEmptyMapping(), TO_UTF8, and CReactionInterface::writeBackToReaction().

Referenced by setData().

219 {
220  std::string objKey = pRea->getKey();
221  mNewEquation = value.toString();
222 
223  assert(CCopasiRootContainer::getDatamodelList()->size() > 0);
225  assert(pDataModel != NULL);
226  CModel * pModel = pDataModel->getModel();
227 
228  if (pModel == NULL) return;
229 
230  // this loads the reaction into a CReactionInterface object.
231  // the gui works on this object and later writes back the changes to ri;
232  assert(CCopasiRootContainer::getDatamodelList()->size() > 0);
234  ri.initFromReaction(objKey);
235 
236  if (TO_UTF8(mNewEquation) != ri.getChemEqString())
237  {
238  //first check if the string is a valid equation
240  {
241  mNewEquation = "";
242  return;
243  }
244  else
245  {
246  //tell the reaction interface
247  ri.setChemEqString(TO_UTF8(mNewEquation), "");
248  }
249  }
250 
251  // Before we save any changes we must check whether any local reaction parameters,
252  // which are used in any mathematical expression in the model are removed.
253  // If that is the case the user must have option to cancel the changes or remove the
254  // affected expressions.
255  std::set< const CCopasiObject * > DeletedParameters = ri.getDeletedParameters();
256 
257  if (DeletedParameters.size() != 0)
258  {
259  QString ObjectType = "parameter(s) of reaction " + this->index(index.row(), COL_NAME_REACTIONS).data().toString();
260  QString Objects;
261 
262  std::set< const CCopasiObject * >::const_iterator itParameter, endParameter = DeletedParameters.end();
263  std::set< const CCopasiObject * > DeletedObjects;
264 
265  for (itParameter = DeletedParameters.begin(); itParameter != endParameter; ++itParameter) //all parameters
266  {
267  Objects.append(FROM_UTF8((*itParameter)->getObjectName()) + ", ");
268  DeletedObjects.insert(static_cast< const CCopasiObject * >((*itParameter)->getObject(CCopasiObjectName("Reference=Value"))));
269  }
270 
271  Objects.remove(Objects.length() - 2, 2);
272 
273  QMessageBox::StandardButton choice =
274  CQMessageBox::confirmDelete(NULL, ObjectType,
275  Objects, DeletedObjects);
276 
277  switch (choice)
278  {
279  case QMessageBox::Ok:
280 
281  for (itParameter = DeletedParameters.begin(); itParameter != endParameter; ++itParameter) //all parameters
282  pModel->removeLocalReactionParameter((*itParameter)->getKey());
283 
284  break;
285 
286  default:
287  mNewEquation = "";
288  return;
289  break;
290  }
291  }
292 
293  // We need to check whether the current reaction still exists, since it is possible that
294  // removing a local reaction parameter triggers its deletion.
295  CReaction * reac = dynamic_cast< CReaction * >(CCopasiRootContainer::getKeyFactory()->get(objKey));
296 
297  if (reac == NULL)
298  {
299  ri.setFunctionWithEmptyMapping("");
301  emit notifyGUI(ListViews::REACTION, ListViews::DELETE, ""); //Refresh all as there may be dependencies.
302  mNewEquation = "";
303  return;
304  }
305 
306  //first check if new metabolites need to be created
307  bool createdMetabs = ri.createMetabolites();
308  bool createdObjects = ri.createOtherObjects();
309  //this writes all changes to the reaction
310  ri.writeBackToReaction(NULL);
311 
312  //(*CCopasiRootContainer::getDatamodelList())[0]->getModel()->compile();
313  //this tells the gui what it needs to know.
314  if (createdObjects ||
315  DeletedParameters.size() != 0)
316  {
318  }
319  else if (createdMetabs)
320  {
322  }
323 
324  mNewEquation = "";
325 }
#define FROM_UTF8(__x)
Definition: qtUtilities.h:73
void notifyGUI(ListViews::ObjectType objectType, ListViews::Action action, const std::string &key="")
CCopasiObject * get(const std::string &key)
virtual const std::string & getKey() const
Definition: CReaction.cpp:190
QVariant data(const QModelIndex &index, int role) const
static bool isValidEq(const std::string &eq)
#define COL_NAME_REACTIONS
Definition: CQReactionDM.h:25
static StandardButton confirmDelete(QWidget *parent, const QString &objectType, const QString &objects, const std::set< const CCopasiObject * > &deletedObjects)
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
static CKeyFactory * getKeyFactory()
#define TO_UTF8(__x)
Definition: qtUtilities.h:74
QString mNewEquation
Definition: CQReactionDM.h:55
Definition: CModel.h:50
bool removeLocalReactionParameter(const std::string &key, const bool &recursive=true)
Definition: CModel.cpp:2818

Member Data Documentation

QString CQReactionDM::mNewEquation
private

Definition at line 55 of file CQReactionDM.h.

Referenced by data(), and setEquation().


The documentation for this class was generated from the following files: