void address_book_aliases::OK () { // map [email => addr_id] of aliases to m_email in the database std::map<QString,int> alias_map; mail_address address; bool found; address.fetchByEmail (m_email, &found); if (!found) { close(); return; } // remove the aliases marked for removal std::set<QString>::const_iterator iter1; for (iter1 = m_remove_list.begin(); iter1 != m_remove_list.end(); iter1++) { address.remove_alias (*(iter1)); } mail_address_list aliases_list; address.fetch_aliases (&aliases_list); // fill in alias_map std::list<mail_address>::const_iterator iter; for (iter = aliases_list.begin(); iter != aliases_list.end(); iter++) { alias_map[iter->get()] = iter->id(); } // find the entries of the aliases widget that are not in the alias // map and add these aliases to the database Q3ListViewItemIterator it (m_aliases_list_w); for ( ; it.current(); ++it ) { std::map<QString,int>::const_iterator iter = alias_map.find (it.current()->text(0)); if (iter == alias_map.end()) address.add_alias (it.current()->text(0)); } close(); }
void address_book_aliases::add_aliases () { const Q3ListView* l = m_result_list_w; Q3ListViewItem* i =l->firstChild(); while (i) { if (i->isSelected()) { QString email = i->text(0); // add only if the item isn't already part of the alias list bool found=false; Q3ListViewItemIterator it (m_aliases_list_w); for ( ; it.current() && !found; ++it ) found = (it.current()->text(0) == email); if (!found) Q3ListViewItem* inew = new Q3ListViewItem (m_aliases_list_w, email); } i = i->nextSibling(); } }
/* * build the population tree */ void CCopasiSimpleSelectionTree::populateTree(const CModel * pModel, const ObjectClasses & classes) { if (!pModel) return; const CCopasiObject * pObject; Q3ListViewItem * pItem; // find all kinds of time pObject = pModel->getObject(CCopasiObjectName("Reference=Time")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpTimeSubtree, "Model Time"); treeItems[pItem] = pObject; } pObject = pModel->getObject(CCopasiObjectName("Reference=Initial Time")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpTimeSubtree, "Model Initial Time"); treeItems[pItem] = pObject; } pObject = pModel->getObjectDataModel()->getObject(CCopasiObjectName("Timer=CPU Time")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpTimeSubtree, "CPU time"); treeItems[pItem] = pObject; } pObject = pModel->getObjectDataModel()->getObject(CCopasiObjectName("Timer=Wall Clock Time")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpTimeSubtree, "real time"); treeItems[pItem] = pObject; } removeEmptySubTree(&mpTimeSubtree); // find all species (aka metabolites) and create items in the metabolite subtree const CCopasiVector<CMetab>& metabolites = pModel->getMetabolites(); unsigned int counter; unsigned int maxCount = metabolites.size(); for (counter = maxCount; counter != 0; --counter) { const CMetab* metab = metabolites[counter - 1]; std::string name = metab->getObjectName(); bool unique = isMetaboliteNameUnique(name, metabolites); if (!unique) { const CCompartment* comp = metab->getCompartment(); if (comp) { name = name + "(" + comp->getObjectName() + ")"; } } pObject = metab->getObject(CCopasiObjectName("Reference=InitialParticleNumber")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpMetaboliteInitialNumberSubtree, FROM_UTF8(name + "(t=0)")); treeItems[pItem] = pObject; } pObject = metab->getObject(CCopasiObjectName("Reference=ParticleNumber")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpMetaboliteTransientNumberSubtree, FROM_UTF8(name + "(t)")); treeItems[pItem] = pObject; } if (metab->getStatus() != CModelEntity::ASSIGNMENT) { pObject = metab->getObject(CCopasiObjectName("Reference=ParticleNumberRate")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpMetaboliteRateNumberSubtree, FROM_UTF8("d(" + name + ")/dt")); treeItems[pItem] = pObject; } } name = "[" + name + "]"; // Concentration pObject = metab->getObject(CCopasiObjectName("Reference=InitialConcentration")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpMetaboliteInitialConcentrationSubtree, FROM_UTF8(name + "(t=0)")); treeItems[pItem] = pObject; } pObject = metab->getObject(CCopasiObjectName("Reference=Concentration")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpMetaboliteTransientConcentrationSubtree, FROM_UTF8(name + "(t)")); treeItems[pItem] = pObject; } if (metab->getStatus() != CModelEntity::ASSIGNMENT) { pObject = metab->getObject(CCopasiObjectName("Reference=Rate")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpMetaboliteRateConcentrationSubtree, FROM_UTF8("d(" + name + ")/dt")); treeItems[pItem] = pObject; } } } removeEmptySubTree(&mpMetaboliteInitialNumberSubtree); removeEmptySubTree(&mpMetaboliteTransientNumberSubtree); removeEmptySubTree(&mpMetaboliteRateNumberSubtree); removeEmptySubTree(&mpMetaboliteInitialConcentrationSubtree); removeEmptySubTree(&mpMetaboliteTransientConcentrationSubtree); removeEmptySubTree(&mpMetaboliteRateConcentrationSubtree); removeEmptySubTree(&mpMetaboliteSubtree); // find all reactions and create items in the reaction subtree const CCopasiVectorNS<CReaction>& reactions = pModel->getReactions(); maxCount = reactions.size(); for (counter = maxCount; counter != 0; --counter) { const CReaction* react = reactions[counter - 1]; std::string name = "flux(" + react->getObjectName() + ")"; pObject = react->getObject(CCopasiObjectName("Reference=Flux")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpReactionFluxConcentrationSubtree, FROM_UTF8(name)); treeItems[pItem] = pObject; } pObject = react->getObject(CCopasiObjectName("Reference=ParticleFlux")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpReactionFluxNumberSubtree, FROM_UTF8("particle " + name)); treeItems[pItem] = pObject; } // create items for the reaction parameters pItem = new Q3ListViewItem(mpReactionParameterSubtree, FROM_UTF8(react->getObjectName())); const CCopasiParameterGroup & Parameters = react->getParameters(); unsigned int j; unsigned int numParameters = Parameters.size(); for (j = numParameters; j != 0; --j) { const CCopasiParameter * pParameter = Parameters.getParameter(j - 1); // We skip local parameters which ar covered by global parameters if (!react->isLocalParameter(pParameter->getObjectName())) continue; pObject = pParameter->getObject(CCopasiObjectName("Reference=Value")); if (filter(classes, pObject)) { Q3ListViewItem * pParameterItem = new Q3ListViewItem(pItem, FROM_UTF8(pParameter->getObjectName())); treeItems[pParameterItem] = pObject; } } removeEmptySubTree(&pItem); } removeEmptySubTree(&mpReactionFluxNumberSubtree); removeEmptySubTree(&mpReactionFluxConcentrationSubtree); removeEmptySubTree(&mpReactionParameterSubtree); removeEmptySubTree(&mpReactionSubtree); // find all global parameters (aka model values) variables const CCopasiVector<CModelValue>& objects = pModel->getModelValues(); maxCount = objects.size(); for (counter = maxCount; counter != 0; --counter) { const CModelEntity* object = objects[counter - 1]; std::string name = object->getObjectName(); pObject = object->getObject(CCopasiObjectName("Reference=InitialValue")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpModelQuantityInitialValueSubtree, FROM_UTF8(name + "(t=0)")); treeItems[pItem] = pObject; } pObject = object->getObject(CCopasiObjectName("Reference=Value")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpModelQuantityTransientValueSubtree, FROM_UTF8(name + "(t)")); treeItems[pItem] = pObject; } if (object->getStatus() != CModelEntity::ASSIGNMENT) { pObject = object->getObject(CCopasiObjectName("Reference=Rate")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpModelQuantityRateSubtree, FROM_UTF8("d(" + name + ")/dt")); treeItems[pItem] = pObject; } } } removeEmptySubTree(&mpModelQuantityRateSubtree); removeEmptySubTree(&mpModelQuantityInitialValueSubtree); removeEmptySubTree(&mpModelQuantityTransientValueSubtree); removeEmptySubTree(&mpModelQuantitySubtree); // find all compartments const CCopasiVector<CCompartment>& objects2 = pModel->getCompartments(); maxCount = objects2.size(); for (counter = maxCount; counter != 0; --counter) { const CModelEntity* object = objects2[counter - 1]; std::string name = object->getObjectName(); pObject = object->getObject(CCopasiObjectName("Reference=InitialVolume")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpCompartmentInitialVolumeSubtree, FROM_UTF8(name + "(t=0)")); treeItems[pItem] = pObject; } pObject = object->getObject(CCopasiObjectName("Reference=Volume")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpCompartmentTransientVolumeSubtree, FROM_UTF8(name + "(t)")); treeItems[pItem] = pObject; } if (object->getStatus() != CModelEntity::ASSIGNMENT) { pObject = object->getObject(CCopasiObjectName("Reference=Rate")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(mpCompartmentRateSubtree, FROM_UTF8("d(" + name + ")/dt")); treeItems[pItem] = pObject; } } } removeEmptySubTree(&mpCompartmentRateSubtree); removeEmptySubTree(&mpCompartmentInitialVolumeSubtree); removeEmptySubTree(&mpCompartmentTransientVolumeSubtree); removeEmptySubTree(&mpCompartmentSubtree); pObject = pModel->getObject(CCopasiObjectName("Reference=Avogadro Constant")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(this, "Avogadro Constant"); treeItems[pItem] = pObject; } pObject = pModel->getObject(CCopasiObjectName("Reference=Quantity Conversion Factor")); if (filter(classes, pObject)) { pItem = new Q3ListViewItem(this, "Quantity Conversion Factor"); treeItems[pItem] = pObject; } // find all model matrices const CMatrix<C_FLOAT64> &StoiMatrix = pModel->getStoi(); if (StoiMatrix.array()) { pObject = pModel->getObject(CCopasiObjectName("Array=Stoichiometry(ann)")); if (filter(classes, pObject)) { // pItem = new QListViewItem(matrixSubtree, "Stoichiometry(ann)"); pItem = new Q3ListViewItem(mpModelMatrixSubtree, FROM_UTF8(pObject->getObjectName())); treeItems[pItem] = pObject; } } const CMatrix<C_FLOAT64> &RedStoiMatrix = pModel->getRedStoi(); if (RedStoiMatrix.array()) { pObject = pModel->getObject(CCopasiObjectName("Array=Reduced stoichiometry(ann)")); if (filter(classes, pObject)) { // pItem = new QListViewItem(matrixSubtree, "Reduced stoichiometry(ann)"); pItem = new Q3ListViewItem(mpModelMatrixSubtree, FROM_UTF8(pObject->getObjectName())); treeItems[pItem] = pObject; } } const CMatrix<C_FLOAT64> &LinkMatrix = pModel->getL0(); if (LinkMatrix.array()) { pObject = pModel->getObject(CCopasiObjectName("Array=Link matrix(ann)")); if (filter(classes, pObject)) { // pItem = new QListViewItem(matrixSubtree, "Link matrix(ann)"); pItem = new Q3ListViewItem(mpModelMatrixSubtree, FROM_UTF8(pObject->getObjectName())); treeItems[pItem] = pObject; } } removeEmptySubTree(&mpModelMatrixSubtree); // find all result matrices // Metabolic Control Analysis CCopasiTask *task; assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); // MCA task = dynamic_cast<CCopasiTask*>((*pDataModel->getTaskList())["Metabolic Control Analysis"]); try { if (task && task->updateMatrices()) { //for mca the result is in the method CMCAMethod* pMethod = dynamic_cast<CMCAMethod *>(task->getMethod()); const CCopasiContainer::objectMap * pObjects = & pMethod->getObjects(); CCopasiContainer::objectMap::const_iterator its = pObjects->begin(); CArrayAnnotation *ann; for (; its != pObjects->end(); ++its) { ann = dynamic_cast<CArrayAnnotation*>(its->second); if (!ann) continue; if (!ann->isEmpty() && filter(classes, ann)) { pItem = new Q3ListViewItem(this->mpResultMCASubtree, FROM_UTF8(ann->getObjectName())); treeItems[pItem] = ann; } } } } catch (...) {} // Steady State task = dynamic_cast<CCopasiTask *>((*pDataModel->getTaskList())["Steady-State"]); try { if (task && task->updateMatrices()) { //for steady state the results are in the task const CCopasiContainer::objectMap * pObjects = & task->getObjects(); CCopasiContainer::objectMap::const_iterator its = pObjects->begin(); CArrayAnnotation *ann; for (; its != pObjects->end(); ++its) { ann = dynamic_cast<CArrayAnnotation*>(its->second); if (!ann) continue; if (!ann->isEmpty() && filter(classes, ann)) { pItem = new Q3ListViewItem(this->mpResultSteadyStateSubtree, FROM_UTF8(ann->getObjectName())); treeItems[pItem] = ann; } } } } catch (...) {} // Sensitivities task = dynamic_cast<CCopasiTask *>((*pDataModel->getTaskList())["Sensitivities"]); try { if (task && task->updateMatrices()) { //for sensitivities the result is in the problem CSensProblem *sens = dynamic_cast<CSensProblem *>(task->getProblem()); const CCopasiContainer::objectMap * pObjects = & sens->getObjects(); CCopasiContainer::objectMap::const_iterator its = pObjects->begin(); CArrayAnnotation *ann; for (; its != pObjects->end(); ++its) { ann = dynamic_cast<CArrayAnnotation*>(its->second); if (!ann) continue; if (!ann->isEmpty() && filter(classes, ann)) { pItem = new Q3ListViewItem(this->mpResultSensitivitySubtree, FROM_UTF8(ann->getObjectName())); treeItems[pItem] = (CCopasiObject *) ann; } } } } catch (...) {} removeEmptySubTree(&mpResultMCASubtree); removeEmptySubTree(&mpResultSensitivitySubtree); removeEmptySubTree(&mpResultSteadyStateSubtree); removeEmptySubTree(&mpResultMatrixSubtree); if (selectionMode() == Q3ListView::NoSelection) { // see if some objects are there, if yes set to single selection Q3ListViewItemIterator it = Q3ListViewItemIterator(this); while (it.current()) { if (treeItems.find(it.current()) != treeItems.end()) { setSelectionMode(Q3ListView::Single); setCurrentItem(it.current()); it.current()->setSelected(true); Q3ListViewItem* parent = it.current()->parent(); while (parent) { parent->setOpen(true); parent = parent->parent(); } break; } ++it; } } }