29 mpCurrentCompartment(NULL),
32 mInitialConcentration(0.0),
33 mExpressionValid(false),
34 mInitialExpressionValid(false)
60 mpReactionTable->verticalHeader()->hide();
61 mpReactionTable->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
62 mpReactionTable->horizontalHeader()->hide();
63 mpReactionTable->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
76 mpExpressionEMW->updateWidget();
79 if (mpBoxUseInitialExpression->isChecked())
82 mpInitialExpressionEMW->updateWidget();
92 const std::string & key)
139 const CModel * pModel = NULL;
149 if (!ValueUnits.isEmpty())
150 ValueUnits =
" (" + ValueUnits +
")";
157 if (!RateUnits.isEmpty())
158 RateUnits =
" (" + RateUnits +
")";
160 QString FrequencyUnits;
165 if (!FrequencyUnits.isEmpty())
166 FrequencyUnits =
" (" + FrequencyUnits +
")";
171 mpLblValue->setText(
"Concentration" + ValueUnits);
175 mpLblExpression->setText(
"Expression" + ValueUnits);
177 mpLblExpression->setText(
"Expression" + RateUnits);
179 mpLblRate->setText(
"Rate" + RateUnits);
181 ValueUnits.replace(0, 1,
'\n');
182 mpLblInitialValue->setText(
"Initial Concentration" + ValueUnits);
183 mpLblInitialExpression->setText(
"Initial Expression" + ValueUnits);
195 mpEditInitialValue->setReadOnly(
false);
196 mpEditCurrentValue->setText(
"");
197 mpEditRate->setText(
"");
203 mpLblInitialValue->setText(
"Initial Particle Number");
205 ValueUnits.replace(0, 1,
'\n');
206 mpLblInitialExpression->setText(
"Initial Expression" + ValueUnits);
210 mpLblExpression->setText(
"Expression" + ValueUnits);
212 mpLblExpression->setText(
"Expression" + RateUnits);
214 mpLblValue->setText(
"Particle Number");
215 mpLblRate->setText(
"Rate" + FrequencyUnits);
217 mpEditInitialValue->setText(QString::number(
mInitialNumber,
'g', 10));
218 mpEditInitialValue->setReadOnly(
false);
222 mpEditCurrentValue->setText(QString::number(
mpMetab->
getValue(),
'g', 10));
223 mpEditRate->setText(QString::number(
mpMetab->
getRate(),
'g', 10));
227 mpEditCurrentValue->setText(
"");
228 mpEditRate->setText(
"");
255 const CModel * pModel = NULL;
265 if (!TimeUnits.isEmpty())
266 TimeUnits =
" (" + TimeUnits +
")";
269 mpLblTransitionTime->setText(
"Transition Time " + TimeUnits);
274 mpComboBoxCompartment->clear();
276 mpComboBoxCompartment->setDuplicatesEnabled(
false);
279 for (m = 0; m < Compartments.
size(); m++)
281 pCompartment = Compartments[m];
282 mpComboBoxCompartment->insertItem(mpComboBoxCompartment->count(),
FROM_UTF8(pCompartment->
getObjectName()));
302 mpExpressionEMW->updateWidget();
306 mpInitialExpressionEMW->updateWidget();
315 mpBoxUseInitialExpression->setChecked(
false);
320 mpBoxUseInitialExpression->setChecked(
true);
339 if (pModel == NULL)
return;
344 QString Compartment = mpComboBoxCompartment->currentText();
351 +
"from compartment '" +
FROM_UTF8(CompartmentToRemove) +
"' to compartment '" + Compartment +
"'\n"
352 +
"since a species with that name already exist in the target compartment.";
355 "Unable to move Species",
357 QMessageBox::Ok, QMessageBox::Ok);
360 mpComboBoxCompartment->setCurrentIndex(mpComboBoxCompartment->findText(
FROM_UTF8(CompartmentToRemove)));
415 if (mpBoxUseInitialExpression->isChecked() &&
421 else if (!mpBoxUseInitialExpression->isChecked() &&
446 if (pModel == NULL)
return;
448 std::set< const CCopasiObject * > Reactions;
451 mpReactionTable->setRowCount((
int) Reactions.size());
453 std::set< const CCopasiObject * >::const_iterator it = Reactions.begin();
454 std::set< const CCopasiObject * >::const_iterator end = Reactions.end();
458 for (; it != end; ++it, ++i)
460 pReaction =
static_cast< const CReaction *
>(*it);
466 mpReactionTable->setItem(i, 0,
new QTableWidgetItem(
"none"));
469 mpLblReactions->setText(
"Involved in \n" + QString::number(mpReactionTable->rowCount()) +
" Reactions");
480 if (pModel == NULL)
return;
482 QMessageBox::StandardButton choice =
489 case QMessageBox::Ok:
513 if (pModel == NULL)
return;
517 pDialog->setWindowTitle(
"Choose a compartment");
518 pDialog->mpLblName->setText(
"compartment");
519 pDialog->mpSelectionBox->clear();
520 pDialog->mpSelectionBox->setDuplicatesEnabled(
false);
521 pDialog->mpSelectionBox->setEditable(
false);
533 QStringList SelectionList;
536 for (; it != end; ++it)
538 SelectionList.append(
FROM_UTF8((*it)->getObjectName()));
547 pDialog->mpSelectionBox->setCurrentIndex(origCompartmentIndex);
549 it = Compartments.
begin();
551 if (pDialog->exec() != QDialog::Rejected)
555 if (origCompartmentIndex != pDialog->mpSelectionBox->currentIndex())
579 assert(pDataModel != NULL);
589 std::string name =
"species_1";
596 name +=
TO_UTF8(QString::number(i));
624 QString Compartment = mpComboBoxCompartment->itemText(compartment);
629 pNewCompartment == NULL)
return;
634 mpEditInitialValue->setText(QString::number(
mInitialNumber,
'g', 10));
651 if (useInitialExpression)
653 mpLblInitialExpression->show();
654 mpInitialExpressionEMW->show();
656 mpEditInitialValue->setEnabled(
false);
657 mpInitialExpressionEMW->updateWidget();
661 mpLblInitialExpression->hide();
662 mpInitialExpressionEMW->hide();
692 if (QString::number(
mInitialNumber,
'g', 10) == mpEditInitialValue->text())
712 if (pModel == NULL)
return;
714 std::set< const CCopasiObject * > Reactions;
718 s1 =
TO_UTF8(mpReactionTable->item(row, 0)->text());
719 s1 = s1.substr(0, s1.length() - 1);
722 std::set< const CCopasiObject * >::const_iterator it = Reactions.begin();
723 std::set< const CCopasiObject * >::const_iterator end = Reactions.end();
726 for (; it != end; ++it, ++i)
728 pReaction =
static_cast< const CReaction *
>(*it);
741 mpLblExpression->hide();
742 mpExpressionEMW->hide();
744 mpBoxUseInitialExpression->setEnabled(
true);
749 mpLblExpression->show();
750 mpExpressionEMW->show();
752 mpBoxUseInitialExpression->setEnabled(
false);
755 mpExpressionEMW->updateWidget();
759 mpLblExpression->show();
760 mpExpressionEMW->show();
762 mpBoxUseInitialExpression->setEnabled(
true);
765 mpExpressionEMW->updateWidget();
769 mpLblExpression->hide();
770 mpExpressionEMW->hide();
772 mpBoxUseInitialExpression->setEnabled(
true);
void setSelectionList(const QStringList &selectionList)
const CCompartment * mpCurrentCompartment
void slotSwitchToReaction(int row, int column)
virtual void setFramework(int framework)
std::string getTimeUnitsDisplayString() const
static const std::string StatusName[]
void switchToOtherWidget(const size_t &id, const std::string &key)
const C_FLOAT64 & getRate() const
std::string getConcentrationRateUnitsDisplayString() const
const std::string & getObjectName() const
std::string getFrequencyUnitsDisplayString() const
void slotCompartmentChanged(int compartment)
double mInitialConcentration
virtual size_t size() const
bool removeMetabolite(const std::string &key, const bool &recursive=true)
virtual const std::string & getKey() const
bool setInitialExpression(const std::string &expression)
static StandardButton information(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons=Ok, StandardButton defaultButton=NoButton)
void slotInitialTypeChanged(bool useInitialExpression)
std::string getExpression() const
void changed(const bool &changed=true)
void duplicateMetab(const CMetab *source, const std::string &index, const SetOfModelElements &sourceSet, ElementsMap &emap)
virtual ~CQSpeciesDetail()
CQSpeciesDetail(QWidget *parent=0, const char *name=0)
void slotInitialExpressionValid(bool valid)
bool appendDependentReactions(std::set< const CCopasiObject * > candidates, std::set< const CCopasiObject * > &dependents) const
const C_FLOAT64 & getInitialValue() const
virtual bool enterProtected()
void addMetab(const CMetab *x)
virtual bool update(ListViews::ObjectType objectType, ListViews::Action action, const std::string &key)
virtual const std::string & getKey() const
static StandardButton confirmDelete(QWidget *parent, const QString &objectType, const QString &objects, const std::set< const CCopasiObject * > &deletedObjects)
void add(const CCopasiObject *source, CCopasiObject *copy)
add a source->duplicate mapping
std::string getInitialExpression() const
void initializeMetabolites()
std::string getDuplicateKey(const std::string &sourceKey) const
find the key of the duplicated object from the source object (if it exists)
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
std::string getChemEqString(bool expanded) const
void setCompileFlag(bool flag=true)
virtual void remove(const std::string &name)
std::string getConcentrationUnitsDisplayString() const
CCopasiVectorNS< CCompartment > & getCompartments()
const C_FLOAT64 & getValue() const
void addCompartment(const CCompartment *x)
bool mInitialExpressionValid
std::vector< int > mItemToType
void slotInitialValueLostFocus()
virtual void setInitialValue(const C_FLOAT64 &initialValue)
const CModelEntity::Status & getStatus() const
void slotExpressionValid(bool valid)
bool setExpression(const std::string &expression)
void slotTypeChanged(int type)
CCompartment * createCompartment(const std::string &name, const C_FLOAT64 &volume=1.0)
CMetab * createMetabolite(const std::string &name, const std::string &compartment, const C_FLOAT64 &iconc=1.0, const CModelEntity::Status &status=CModelEntity::REACTIONS)