49 QTreeWidget(parent), mpOutputVector(NULL)
51 setSelectionMode(QAbstractItemView::ExtendedSelection);
52 setSortingEnabled(
true);
53 sortByColumn(0, Qt::AscendingOrder);
54 setHeaderLabels(QStringList(
"Sort"));
55 setRootIsDecorated(
true);
56 setSizePolicy(QSizePolicy((QSizePolicy::Policy)7, (QSizePolicy::Policy)7));
105 mpTimeSubtree =
new QTreeWidgetItem(
this, QStringList(
"Time"));
121 QTreeWidgetItem * pItem;
126 if (
filter(classes, pObject))
128 pItem =
new QTreeWidgetItem(
mpTimeSubtree, QStringList(
"Model Time"));
134 if (
filter(classes, pObject))
136 pItem =
new QTreeWidgetItem(
mpTimeSubtree, QStringList(
"Model Initial Time"));
142 if (
filter(classes, pObject))
144 pItem =
new QTreeWidgetItem(
mpTimeSubtree, QStringList(
"CPU time"));
150 if (
filter(classes, pObject))
152 pItem =
new QTreeWidgetItem(
mpTimeSubtree, QStringList(
"real time"));
161 size_t maxCount = metabolites.
size();
163 for (counter = maxCount; counter != 0; --counter)
165 const CMetab* metab = metabolites[counter - 1];
181 if (
filter(classes, pObject))
189 if (
filter(classes, pObject))
199 if (
filter(classes, pObject))
206 name =
"[" + name +
"]";
209 if (
filter(classes, pObject))
217 if (
filter(classes, pObject))
227 if (
filter(classes, pObject))
245 maxCount = reactions.
size();
247 for (counter = maxCount; counter != 0; --counter)
249 const CReaction* react = reactions[counter - 1];
254 if (
filter(classes, pObject))
262 if (
filter(classes, pObject))
274 size_t numParameters = Parameters.
size();
276 for (j = numParameters; j != 0; --j)
286 if (
filter(classes, pObject))
288 QTreeWidgetItem * pParameterItem =
304 maxCount = objects.
size();
306 for (counter = maxCount; counter != 0; --counter)
311 pObject =
object->getInitialValueReference();
313 if (
filter(classes, pObject))
319 pObject =
object->getValueReference();
321 if (
filter(classes, pObject))
329 pObject =
object->getRateReference();
331 if (
filter(classes, pObject))
346 maxCount = objects2.
size();
348 for (counter = maxCount; counter != 0; --counter)
353 pObject =
object->getInitialValueReference();
355 if (
filter(classes, pObject))
361 pObject =
object->getValueReference();
363 if (
filter(classes, pObject))
371 pObject =
object->getRateReference();
373 if (
filter(classes, pObject))
388 if (
filter(classes, pObject))
390 pItem =
new QTreeWidgetItem(
this, QStringList(
"Avogadro Constant"));
396 if (
filter(classes, pObject))
398 pItem =
new QTreeWidgetItem(
this, QStringList(
"Quantity Conversion Factor"));
405 if (StoiMatrix.
array())
409 if (
filter(classes, pObject))
419 if (RedStoiMatrix.
array())
423 if (
filter(classes, pObject))
433 if (LinkMatrix.
array())
437 if (
filter(classes, pObject))
452 assert(pDataModel != NULL);
464 CCopasiContainer::objectMap::const_iterator its = pObjects->begin();
467 for (; its != pObjects->end(); ++its)
497 CCopasiContainer::objectMap::const_iterator its = pObjects->begin();
500 for (; its != pObjects->end(); ++its)
549 CCopasiContainer::objectMap::const_iterator its = pObjects->begin();
552 for (; its != pObjects->end(); ++its)
580 CCopasiContainer::objectMap::const_iterator its = pObjects->begin();
583 for (; its != pObjects->end(); ++its)
606 if (selectionMode() == QAbstractItemView::NoSelection)
609 QTreeWidgetItemIterator it(
this);
615 setSelectionMode(QAbstractItemView::SingleSelection);
617 (*it)->setSelected(
true);
618 QTreeWidgetItem* parent = (*it)->parent();
622 parent->setExpanded(
true);
623 parent = parent->parent();
636 bool hasSelection =
false;
637 QTreeWidgetItemIterator it(
this);
641 if ((*it)->isSelected())
655 std::vector<const CCopasiObject * > * selection =
new std::vector<const CCopasiObject * >();
656 std::map< std::string, const CCopasiObject * > SelectionMap;
658 if (selectedItems().isEmpty())
661 if (selectionMode() == QAbstractItemView::SingleSelection)
663 selection->push_back(
treeItems[selectedItems()[0]]);
671 QTreeWidgetItemIterator it(
this);
672 QTreeWidgetItem* currentItem = *it;
676 if (currentItem->isSelected())
678 if (currentItem->childCount() == 0)
681 SelectionMap[
treeItems[currentItem]->getObjectDisplayName()] =
treeItems[currentItem];
685 QTreeWidgetItemIterator it2(currentItem);
686 QTreeWidgetItem* tmpItem = *it2;
687 QTreeWidgetItem* Ancestor;
691 if ((tmpItem->childCount() == 0) &&
693 SelectionMap[
treeItems[tmpItem]->getObjectDisplayName()] = treeItems[tmpItem];
703 for (Ancestor = tmpItem->parent();
704 Ancestor != currentItem && Ancestor;
705 Ancestor = Ancestor->parent()) ;
707 if (!Ancestor)
break;
717 selection->resize(SelectionMap.size());
718 std::vector< const CCopasiObject * >::iterator itSelection = selection->begin();
719 std::map< std::string, const CCopasiObject * >::const_iterator itSet = SelectionMap.begin();
720 std::map< std::string, const CCopasiObject * >::const_iterator endSet = SelectionMap.end();
722 for (; itSet != endSet; ++itSet, ++itSelection)
723 *itSelection = itSet->second;
735 for (counter = 0; counter < metabolites.
size(); ++counter)
737 const std::string& thisName = metabolites[counter]->
getObjectName();
739 if (name == thisName)
756 QTreeWidgetItem* item = NULL;
757 std::map< QTreeWidgetItem *, const CCopasiObject * >::iterator it =
treeItems.begin();
758 std::map< QTreeWidgetItem *, const CCopasiObject * >::iterator endPos =
treeItems.end();
762 if (it->second ==
object)
779 size_t iMax = objects->size();
781 if ((selectionMode() == QAbstractItemView::SingleSelection || selectionMode() == QAbstractItemView::NoSelection) && iMax > 1)
786 for (i = 0; i < iMax; ++i)
800 QTreeWidgetItem* parent = item->parent();
802 if (parent && !(parent->isExpanded()))
806 parent->setExpanded(
true);
807 parent = parent->parent();
811 setCurrentItem(item);
822 mpOutputVector->assign(treeSelection->begin(), treeSelection->end());
823 std::vector< const CCopasiObject * >::iterator it =
mpOutputVector->begin();
837 delete treeSelection;
886 !static_cast<const CModel *>(pEntity)->isAutonomous() &&
887 ObjectName ==
"Initial Time")
893 ObjectName.compare(0, 7,
"Initial") == 0 &&
900 (ObjectName ==
"Value" ||
901 ObjectName ==
"Volume" ||
902 ObjectName ==
"ParticleNumber" ||
903 ObjectName ==
"Concentration"))
909 (ObjectName ==
"Value" ||
910 ObjectName ==
"Volume" ||
911 ObjectName ==
"Concentration"))
916 (ObjectName ==
"Avogadro Constant" ||
917 ObjectName ==
"Quantity Conversion Factor")) ||
921 ObjectName.compare(0, 7,
"Initial") == 0) ||
925 ObjectName.compare(0, 7,
"Initial") == 0 &&
929 if ((classes &
Time) &&
931 ObjectName ==
"Time")
937 (ObjectName.find(
"Rate") != std::string::npos ||
938 ObjectName ==
"TransitionTime")) ||
940 (ObjectName ==
"Value" ||
941 ObjectName ==
"Volume" ||
942 ObjectName ==
"ParticleNumber" ||
943 ObjectName ==
"Concentration"))))
958 ObjectName.find(
"Flux") != std::string::npos)
985 if (ppSubTree != NULL &&
986 *ppSubTree != NULL &&
987 (*ppSubTree)->childCount() == 0)
QTreeWidgetItem * mpCompartmentInitialVolumeSubtree
QTreeWidgetItem * mpMetaboliteTransientNumberSubtree
CCopasiDataModel * getObjectDataModel()
CCopasiContainer * getObjectAncestor(const std::string &type) const
QTreeWidgetItem * mpReactionSubtree
CCopasiObject * getDataObject(const CCopasiObjectName &CN) const
QTreeWidgetItem * mpModelQuantityTransientValueSubtree
virtual std::string getObjectDisplayName(bool regular=true, bool richtext=false) const
QTreeWidgetItem * mpModelMatrixSubtree
CCopasiProblem * getProblem()
QTreeWidgetItem * mpCompartmentSubtree
const CCopasiVector< CMetab > & getMetabolites() const
QTreeWidgetItem * mpTimeSubtree
const std::string & getObjectName() const
const CCopasiVectorN< CModelValue > & getModelValues() const
virtual size_t size() const
QTreeWidgetItem * mpMetaboliteInitialConcentrationSubtree
QTreeWidgetItem * mpCompartmentRateSubtree
CCopasiObject * getInitialValueReference() const
void selectObjects(std::vector< const CCopasiObject * > *objects)
virtual const objectMap & getObjects() const
bool isMetaboliteNameUnique(const std::string &name, const CCopasiVector< CMetab > &metabolites)
bool isLocalParameter(const size_t &index) const
void setOutputVector(std::vector< const CCopasiObject * > *outputVector)
CQSimpleSelectionTree(QWidget *parent)
QTreeWidgetItem * mpResultMCASubtree
QTreeWidgetItem * mpResultMatrixSubtree
virtual void commitClicked()
const CCopasiMethod::SubType & getSubType() const
virtual const CObjectInterface * getObject(const CCopasiObjectName &cn) const
QTreeWidgetItem * mpMetaboliteInitialNumberSubtree
const CMatrix< C_FLOAT64 > & getRedStoi() const
QTreeWidgetItem * mpModelQuantityRateSubtree
static bool filter(const ObjectClasses &classes, const CCopasiObject *pObject)
QTreeWidgetItem * mpMetaboliteTransientConcentrationSubtree
std::multimap< std::string, CCopasiObject * > objectMap
QTreeWidgetItem * mpMetaboliteRateNumberSubtree
virtual bool updateMatrices()
QTreeWidgetItem * mpResultSteadyStateSubtree
QTreeWidgetItem * mpResultTSSASubtree
std::vector< const CCopasiObject * > * getTreeSelection()
QTreeWidgetItem * mpReactionFluxNumberSubtree
std::string getInitialExpression() const
QTreeWidgetItem * mpCompartmentTransientVolumeSubtree
CCopasiVectorN< CCopasiTask > * getTaskList()
QTreeWidgetItem * mpModelQuantitySubtree
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
QTreeWidgetItem * findListViewItem(const CCopasiObject *object)
QTreeWidgetItem * mpMetaboliteRateConcentrationSubtree
QTreeWidgetItem * mpMetaboliteSubtree
QTreeWidgetItem * mpReactionParameterSubtree
Header file of class CCopasiContainer.
CCopasiVectorNS< CCompartment > & getCompartments()
CCopasiMethod * getMethod()
Header file of class CArrayAnnotation.
~CQSimpleSelectionTree()
Destructor.
const CCopasiParameterGroup & getParameters() const
std::vector< const CCopasiObject * > * mpOutputVector
bool isValueInt64() const
CCopasiVectorNS< CReaction > & getReactions()
QTreeWidgetItem * mpModelQuantityInitialValueSubtree
void populateTree(const CModel *pModel, const ObjectClasses &classes)
const CLinkMatrix & getL0() const
virtual const CObjectInterface * getObject(const CCopasiObjectName &cn) const
const CModelEntity::Status & getStatus() const
const CMatrix< C_FLOAT64 > & getStoi() const
void removeEmptySubTree(QTreeWidgetItem **ppSubTree)
QTreeWidgetItem * mpExpertSubtree
CCopasiObject * getRateReference() const
QTreeWidgetItem * mpResultSensitivitySubtree
CCopasiContainer * getObjectParent() const
std::map< QTreeWidgetItem *, const CCopasiObject * > treeItems
CCopasiObject * getValueReference() const
QTreeWidgetItem * mpReactionFluxConcentrationSubtree