void CQExperimentData::slotFileChanged(QListWidgetItem * pCurrentItem, QListWidgetItem * /* pPreviousItem */) { if (pCurrentItem) { slotExperimentChanged(NULL, NULL); // Assure that changes are saved. mpBoxExperiment->clear(); if (mpFileInfo->setFileName(mFileMap[TO_UTF8(pCurrentItem->text())])) { // fill experiment list box std::vector< std::string > ExperimentNames = mpFileInfo->getExperimentNames(); std::vector< std::string >::const_iterator it = ExperimentNames.begin(); std::vector< std::string >::const_iterator end = ExperimentNames.end(); for (; it != end; ++it) mpBoxExperiment->addItem(FROM_UTF8((*it))); } if (mpBoxExperiment->count()) mpBoxExperiment->setCurrentRow(0); else slotExperimentChanged(NULL, NULL); } else { mpBoxExperiment->clear(); } size_t First, Last; mpBtnExperimentAdd->setEnabled(mpFileInfo->getFirstUnusedSection(First, Last)); }
void CQFittingWidget::slotExperimentData() { CQExperimentData * pDialog = new CQExperimentData(this); pDialog->load(mpExperimentSet, mpDataModel); connect(pDialog, SIGNAL(experimentChanged()), mpParameters, SLOT(slotExperimentChanged())); connect(pDialog, SIGNAL(experimentChanged()), mpConstraints, SLOT(slotExperimentChanged())); pDialog->exec(); pdelete(pDialog); }
void CQExperimentData::slotOK() { mpBtnOK->setFocus(); // Force the save all current changes. slotExperimentChanged(NULL, NULL); CExperiment * pExperiment; size_t i = mpExperimentSet->getExperimentCount() - 1; for (; i != C_INVALID_INDEX; i--) { pExperiment = dynamic_cast<CExperiment *>(CCopasiRootContainer::getKeyFactory()->get(mKeyMap[mpExperimentSet->getExperiment(i)->CCopasiParameter::getKey()])); if (pExperiment) { *mpExperimentSet->getExperiment(i) = *pExperiment; mpExperimentSetCopy->removeParameter(pExperiment->getObjectName()); } else mpExperimentSet->removeExperiment(i); } emit experimentChanged(); for (i = 0; i < mpExperimentSetCopy->getExperimentCount(); i++) mpExperimentSet->addExperiment(*mpExperimentSetCopy->getExperiment(i)); #ifdef COPASI_CROSSVALIDATION if (mCrossValidation) { CCrossValidationSet * pSet = static_cast< CCrossValidationSet * >(mpExperimentSet); if (QString::number(pSet->getWeight()) != mpEditWeight->text()) { pSet->setWeight(mpEditWeight->text().toDouble()); } if (QString::number(pSet->getThreshold()) != mpEditThreshold->text()) { pSet->setThreshold(mpEditThreshold->text().toUInt()); } } #endif // COPASI_CROSSVALIDATION pdelete(mpExperimentSetCopy); accept(); }
void CQExperimentData::slotExperimentDelete() { // Get info from current selection size_t index = mpBoxExperiment->currentRow(); if (index == C_INVALID_INDEX) return; std::string key = mpFileInfo->getExperiment(TO_UTF8(mpBoxExperiment->item((int) index)->text()))->CCopasiParameter::getKey(); // change selection if (mpBoxExperiment->count() > 1) { if (mpBoxExperiment->count() > (int)index + 1) mpBoxExperiment->setCurrentRow((int)(index + 1)); else mpBoxExperiment->setCurrentRow((int)(index - 1)); } else slotExperimentChanged(NULL, NULL); // remove experiment mpExperimentSetCopy->removeExperiment(mpExperimentSetCopy->keyToIndex(key)); syncExperiments(); size_t First, Last; mpBtnExperimentAdd->setEnabled(mpFileInfo->getFirstUnusedSection(First, Last)); // We need to correct mpCheckFrom and mpCheckTo since the removal of the experiment // may have changed their status. disconnect(mpCheckTo, SIGNAL(toggled(bool)), this, SLOT(slotCheckTo(bool))); disconnect(mpCheckFrom, SIGNAL(toggled(bool)), this, SLOT(slotCheckFrom(bool))); mpCheckFrom->setChecked(isLikePreviousExperiment(mpExperiment)); enableEdit(!mpCheckFrom->isChecked()); if (mpExperiment) { size_t Next = mpExperimentSetCopy->keyToIndex(mpExperiment->CCopasiParameter::getKey()) + 1; if (Next < mpExperimentSetCopy->size()) mpCheckTo->setChecked(isLikePreviousExperiment(mpExperimentSetCopy->getExperiment(Next))); else mpCheckTo->setChecked(false); } connect(mpCheckFrom, SIGNAL(toggled(bool)), this, SLOT(slotCheckFrom(bool))); connect(mpCheckTo, SIGNAL(toggled(bool)), this, SLOT(slotCheckTo(bool))); }