15 #include <QtGui/QTableWidgetItem>
16 #include <QtCore/QStringList>
17 #include <QtGui/QLineEdit>
31 : QTableWidget(parent),
36 connect(
this, SIGNAL(cellChanged(
int,
int)),
40 parent, SLOT(slotTableChanged(
int,
int, QString)));
43 parent, SLOT(slotParameterStatusChanged(
int,
bool)));
49 setSelectionMode(QTableWidget::NoSelection);
60 std::vector<std::string> ret;
62 ret.push_back(
"unknown");
67 for (i = 0; i < imax; ++i)
71 std::vector<std::string> lll;
72 std::vector<std::string>::const_iterator sourceIt, sourceItEnd;
73 std::vector<std::string>::const_iterator searchIt, searchItEnd;
76 sourceItEnd = lll.end();
78 for (sourceIt = lll.begin(); sourceIt != sourceItEnd; ++sourceIt)
81 searchItEnd = ret.end();
83 for (searchIt = ret.begin(); searchIt != searchItEnd; ++searchIt)
84 if (*searchIt == Source)
87 if (searchIt == searchItEnd)
88 ret.push_back(Source);
92 sourceItEnd = lll.end();
94 for (sourceIt = lll.begin(); sourceIt != sourceItEnd; ++sourceIt)
97 searchItEnd = ret.end();
99 for (searchIt = ret.begin(); searchIt != searchItEnd; ++searchIt)
100 if (*searchIt == Source)
103 if (searchIt == searchItEnd)
104 ret.push_back(Source);
108 sourceItEnd = lll.end();
110 for (sourceIt = lll.begin(); sourceIt != sourceItEnd; ++sourceIt)
113 searchItEnd = ret.end();
115 for (searchIt = ret.begin(); searchIt != searchItEnd; ++searchIt)
116 if (*searchIt == Source)
119 if (searchIt == searchItEnd)
120 ret.push_back(Source);
136 for (i = 0; i < imax; ++i)
152 for (i = 0; i < imax; ++i)
164 if (pReaction == NULL)
return;
191 std::vector<std::string>::const_iterator it;
211 size_t i, imax = ri.
size();
213 size_t rowCounter = 0;
215 QTableWidgetItem *pItem = NULL;
217 QColor subsColor(255, 210, 210);
218 QColor prodColor(210, 255, 210);
219 QColor modiColor(250, 250, 190);
220 QColor paraColor(210, 210, 255);
221 QColor volColor(210, 210, 255);
222 QColor timeColor(210, 210, 210);
227 const std::vector<std::string> * metabNames;
232 setRowCount((
int) imax);
234 for (i = 0; i < imax; ++i)
270 color = QColor(255, 20, 20);
275 color = QColor(255, 20, 20);
280 pItem =
new QTableWidgetItem(qUsage);
281 pItem->setBackground(color);
290 pItem->setFlags(pItem->flags() & (~Qt::ItemIsEditable));
291 setItem((
int) rowCounter, 0, pItem);
295 pItem->setBackground(color);
307 pItem->setFlags(pItem->flags() & (~Qt::ItemIsEditable));
308 setItem((
int) rowCounter, 1, pItem);
313 if (pDataModel == NULL)
return;
315 QString theseUnits =
FROM_UTF8(
" " + units.getDimensions()[i].getDisplayString(pModel));
316 pItem =
new QTableWidgetItem(theseUnits);
317 pItem->setBackgroundColor(color);
318 pItem->setFlags(pItem->flags() & (~Qt::ItemIsEditable));
319 setItem((
int) rowCounter, 4, pItem);
322 pItem =
new QTableWidgetItem(
"");
323 pItem->setBackground(QColor(color));
324 pItem->setFlags(pItem->flags() & (~Qt::ItemIsEditable));
325 setItem((
int) rowCounter, 3, pItem);
328 pItem =
new QTableWidgetItem(
"");
329 pItem->setBackground(color);
330 setItem((
int) rowCounter, 2, pItem);
342 pItem->setFlags(pItem->flags() & (~Qt::ItemIsEditable));
343 closePersistentEditor(pItem);
356 openPersistentEditor(pItem);
366 pItem->setText(
"add species");
369 jmax = metabNames->size();
373 setRowCount(rowCount() + (
int)(jmax - 1));
375 item((
int) rowCounter, 2)->setText(
FROM_UTF8((*metabNames)[0]));
377 for (j = 1; j < jmax; ++j)
381 for (
int k = 0; k < 5; k++)
383 pItem =
new QTableWidgetItem(
"");
384 pItem->setFlags(pItem->flags() & (~Qt::ItemIsEditable));
385 pItem->setBackgroundColor(color);
386 setItem((
int) rowCounter, k, pItem);
389 item((
int) rowCounter, 2)->setText(
FROM_UTF8((*metabNames)[j]));
390 item((
int) rowCounter, 4)->setText(theseUnits);
402 pItem->setText(
"--local--");
408 if (paramText ==
"--local--")
409 paramText =
"\"--local--\"";
411 pItem->setText(paramText);
414 openPersistentEditor(pItem);
417 pItem = item((
int) rowCounter, 3);
422 pItem->setFlags(pItem->flags() | (Qt::ItemIsEditable));
428 if (mapping.size() > 0)
430 std::string Key = mapping[0];
435 if (pParamObject != NULL &&
439 pItem->setTextColor(QColor(Qt::darkGray));
450 openPersistentEditor(pItem);
463 resizeRowToContents((
int) rowCounter);
468 resizeColumnsToContents();
475 bool changed =
false;
479 for (i = 0; i < imax; ++i)
483 if ((
mOldRow < row) || (row == 0)) ++row;
else --row;
488 if (col > 3) {changed =
true; col = 3;}
490 if (col < 2) {changed =
true; col = 2;}
494 if (changed) setCurrentCell(row, col);
501 if (col != 2 && col != 3)
return;
508 QString newVal = item(row, col)->text();
512 if (col == 2 && comboList[0] ==
"--local--")
516 if (newVal ==
"--local--")
CCopasiDataModel * getObjectDataModel()
size_t getMolecularity(CFunctionParameter::Role role) const
std::string getParameterName(size_t index) const
CCopasiContainer * getObjectAncestor(const std::string &type) const
CModel::AreaUnit getAreaUnitEnum() const
ParameterTable(QWidget *parent=0)
void updateTable(const CReactionInterface &ri, const CReaction *mpReaction)
const CCopasiVector< CMetab > & getMetabolites() const
const std::string & getObjectName() const
const std::vector< std::string > & getMappings(size_t index) const
const CChemEqInterface & getChemEqInterface() const
const CCopasiVectorN< CModelValue > & getModelValues() const
CModel::QuantityUnit getQuantityUnitEnum() const
virtual size_t size() const
void parameterStatusChanged(int, bool)
CCopasiObject * get(const std::string &key)
std::vector< size_t > mIndex2Line
void handleCurrentCell(int row, int col, int, int)
static QStringList getListOfAllCompartmentNames(const CModel &model)
bool isVector(size_t index) const
const QStringList * getItems(int row) const
void setUseHeuristics(bool flag)
const CFunction * getFunction() const
static const std::vector< std::string > getListOfAllMetabNames(const CModel &model, const CReactionInterface &ri)
bool isLocked(size_t index) const
const C_FLOAT64 & getLocalValue(size_t index) const
std::vector< size_t > mLine2Index
const std::string & getMapping(size_t index) const
const C_FLOAT64 & getInitialValue() const
QStringList mGlobalParameters
CFunctionParameter::Role getUsage(size_t index) const
void vectorOfStrings2QStringList(std::vector< std::string > vs, QStringList &qsl)
static const QIcon & icon(const IconID &id)
CModel::LengthUnit getLengthUnitEnum() const
CQComboDelegate * mpComboDelegate
void signalChanged(int, int, QString)
CCopasiVectorNS< CCompartment > & getCompartments()
CModel::TimeUnit getTimeUnitEnum() const
static CKeyFactory * getKeyFactory()
const std::vector< std::string > & getListOfMetabs(CFunctionParameter::Role role) const
static const std::string RoleNameDisplay[]
size_t getNumModelValues() const
void setItems(int row, const QStringList *pComboItems)
const CModelEntity::Status & getStatus() const
bool isLocalValue(size_t index) const
CModel::VolumeUnit getVolumeUnitEnum() const
bool isMulticompartment() const
static QStringList getListOfAllGlobalParameterNames(const CModel &model)
void slotCellChanged(int row, int col)
const std::vector< std::string > & getParameterMapping(const size_t &index) const