RemoveAllReactionRowsCommand::RemoveAllReactionRowsCommand(CQReactionDM * pReaDM, const QModelIndex&) { mpReactionDM = pReaDM; assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); assert(pModel != NULL); for (int i = 0; i != pReaDM->rowCount() - 1; ++i) { UndoReactionData *data = new UndoReactionData(); CReactionInterface* ri = new CReactionInterface((*CCopasiRootContainer::getDatamodelList())[0]->getModel()); if (pModel->getReactions()[i]) { data->setName(pModel->getReactions()[i]->getObjectName()); ri->initFromReaction(pModel->getReactions()[i]->getKey()); data->setRi(ri); mpReaData.append(data); } } mType = REACTIONREMOVEALL; setEntityType("Reaction"); this->setText(removeAllReactionRowsText()); }
void insertReactionRowsCommand::redo() { mpReactionDM->insertNewReactionRow(mPosition, mRows, QModelIndex()); assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); assert(pModel != NULL); mpReaction = pModel->getReactions()[mPosition]; std::string sName = mpReaction->getObjectName(); if (mpReactionData != NULL) mpReactionData->setName(sName); CReactionInterface* ri = new CReactionInterface((*CCopasiRootContainer::getDatamodelList())[0]->getModel()); ri->initFromReaction(mpReaction); if (mpReactionData != NULL) mpReactionData->setRi(ri); setUndoState(true); setAction("Add to list"); if (mpReactionData != NULL) setName(mpReactionData->getName()); else setName(sName); }
void CQCompartment::copy() { CModel * pModel = mpDataModel->getModel(); CModelExpansion cModelExpObj = CModelExpansion(pModel); CModelExpansion::SetOfModelElements compartmentObjectsToCopy; CModelExpansion::ElementsMap origToCopyMappings; CQCompartmentCopyOptions * pDialog = new CQCompartmentCopyOptions(this); pDialog->exec(); bool success = false; switch (pDialog->result()) { case QDialog::Rejected: break; case CQCompartmentCopyOptions::COMP: //compartment only compartmentObjectsToCopy.addObject(mpObject); success = true; break; case CQCompartmentCopyOptions::SPECIES: // include the species { compartmentObjectsToCopy.addObject(mpObject); CCopasiVectorNS < CMetab > & Metabolites = mpCompartment->getMetabolites(); CCopasiVectorNS < CMetab >::const_iterator itMetab; for (itMetab = Metabolites.begin(); itMetab != Metabolites.end(); ++itMetab) { compartmentObjectsToCopy.addMetab(*itMetab); } } success = true; break; case CQCompartmentCopyOptions::INTREAC: //also include the internal reactions { compartmentObjectsToCopy.addObject(mpObject); // Get all the compartment's species first CCopasiVectorNS < CMetab > & Metabolites = mpCompartment->getMetabolites(); CCopasiVectorNS < CMetab >::const_iterator itMetab; for (itMetab = Metabolites.begin(); itMetab != Metabolites.end(); ++itMetab) { compartmentObjectsToCopy.addMetab(*itMetab); } // Now get the reactions which are not multi-compartment CCopasiVectorN< CReaction >::const_iterator it = pModel->getReactions().begin(); CCopasiVectorN< CReaction >::const_iterator end = pModel->getReactions().end(); CReactionInterface * pRi = new CReactionInterface(pModel); for (; it != end; ++it) { pRi->initFromReaction((*it)->getKey()); if (!pRi->isMulticompartment()) { if (pRi->getChemEqInterface().getCompartment()->getKey() == mKey) compartmentObjectsToCopy.addReaction(*it); } } pdelete(pRi); success = true; break; } case CQCompartmentCopyOptions::ALLREAC: //get everything in compartment compartmentObjectsToCopy.addObject(mpObject); compartmentObjectsToCopy.fillDependencies(pModel); success = true; break; } pdelete(pDialog); if (success) { cModelExpObj.duplicate(compartmentObjectsToCopy, "_copy", origToCopyMappings); protectedNotify(ListViews::COMPARTMENT, ListViews::DELETE, "");//Refresh all protectedNotify(ListViews::METABOLITE, ListViews::DELETE, ""); //Refresh all protectedNotify(ListViews::REACTION, ListViews::DELETE, ""); //Refresh all mpListView->switchToOtherWidget(C_INVALID_INDEX, origToCopyMappings.getDuplicateKey(mKey)); } }