24 #include <QtGui/QHeaderView>
25 #include <QtGui/QTreeWidget>
26 #include <QtGui/QTextEdit>
27 #include <QtGui/QPushButton>
28 #include <QtGui/QPixmap>
29 #include <QtGui/QGridLayout>
30 #include <QtGui/QHBoxLayout>
31 #include <QtGui/QVBoxLayout>
32 #include <QtGui/QFrame>
47 #include "./icons/objectAll.xpm"
48 #include "./icons/objectParts.xpm"
49 #include "./icons/objectNone.xpm"
60 : QWidget(parent, fl),
63 ObjectBrowserLayout(NULL),
65 toggleViewButton(NULL),
71 mOutputObjectVector(NULL),
74 setObjectName(QString::fromUtf8(name));
77 setObjectName(
"ObjectBrowser");
93 strList << trUtf8(
"Name") << trUtf8(
"Type");
99 ObjectListView->header()->setResizeMode(QHeaderView::ResizeToContents);
111 Line1 =
new QFrame(
this);
112 Line1->setObjectName(
"Line1");
113 Line1->setFrameShape(QFrame::HLine);
114 Line1->setFrameShadow(QFrame::Sunken);
115 Line1->setFrameShape(QFrame::HLine);
134 spacer =
new QSpacerItem(131, 31, QSizePolicy::Expanding, QSizePolicy::Minimum);
150 pObjectAll =
new QPixmap((
const char**)ptrObjectAll);
151 pObjectNone =
new QPixmap((
const char**)ptrObjectNone);
152 pObjectParts =
new QPixmap((
const char**)ptrObjectParts);
185 if ((pCurrent == NULL) || (pCurrent->text(0) ==
"Select by attribute"))
199 while (pTmp->parent() != NULL)
210 setUncheck(static_cast< ObjectBrowserItem * >(pCurrent->child(0)));
218 setCheck(static_cast< ObjectBrowserItem * >(pCurrent->child(0)));
224 if (pCurrent == NULL)
232 if (pCurrent->child(0) != NULL)
233 setUncheck(static_cast< ObjectBrowserItem * >(pCurrent->child(0)));
241 if (pCurrent == NULL)
249 if (pCurrent->child(0) != NULL)
250 setCheck(static_cast< ObjectBrowserItem * >(pCurrent->child(0)));
282 std::vector< const CCopasiObject * > * outputVector;
286 outputVector =
new std::vector< const CCopasiObject * >();
287 eXport(rootItem, outputVector);
292 for (i = 0; i < outputVector->size(); i++)
298 if ((*outputVector)[i])
345 if (!outputVector)
return;
347 if (pCurrent->child(0))
353 eXport(pChild, outputVector);
361 bool insertFlag =
true;
364 for (; i < outputVector->size(); i++)
379 array[first_pos] = array[second_pos];
380 array[second_pos] = tmp;
387 if (split_pos != start_pos)
388 swap(split_pos, start_pos, quick_sort_array);
390 split_pos = start_pos;
393 while (start_pos < end_pos)
395 while ((++start_pos < end_pos) && (quick_sort_array[start_pos]->getObject()->pCopasiObject <= tmp));
397 while ((--end_pos > start_pos) && (quick_sort_array[end_pos]->getObject()->pCopasiObject > tmp));
399 if (start_pos < end_pos)
400 swap(start_pos, end_pos, quick_sort_array);
407 if (split_pos != start_pos)
408 swap(split_pos, start_pos, quick_sort_array);
417 int medium = (m + n) / 2;
418 medium =
partition(medium, m, n, quick_sort_array);
435 itemRoot->setText(0, QString(
"COPASI"));
436 itemRoot->setExpanded(
true);
444 int length = objectItemList->
len();
450 for (
int i = 0; i < length; i++)
452 bufferVector[i] = pCurrent->
pItem;
453 pCurrent = pCurrent->
pNext;
463 for (index = 0; (index < length) && (!bufferVector[index]->getObject()->pCopasiObject); index++);
465 pBrowserObject = bufferVector[index++]->
getObject();
467 for (; index < length; index++)
469 if (bufferVector[index]->getObject()->pCopasiObject == pBrowserObject->
pCopasiObject)
476 pBrowserObject = bufferVector[index]->
getObject();
491 CCopasiContainer::objectMap::const_iterator it = pObjectList->begin();
492 CCopasiContainer::objectMap::const_iterator end = pObjectList->end();
494 if ((copaParent->
isVector()) && (nField))
502 fieldChild->setText(0,
"Select by attribute");
512 for (i = 0; i < static_cast< const CCopasiVector < CCopasiObject > * >(copaParent)->size(); i++)
525 currentItem->setText(0, currentItem->text(0) +
"[]");
527 loadChild(currentItem, static_cast< CCopasiContainer * >(current), nField);
532 childStack->
insert(currentItem);
540 current = it->second;
543 if (dynamic_cast<CCopasiStaticString *>(current))
559 currentItem->setText(0, currentItem->text(0) +
"[]");
561 loadChild(currentItem, static_cast< CCopasiContainer * >(current), nField);
566 childStack->
insert(currentItem);
575 while (childStack->
len() > 0)
577 pCurrent = childStack->
pop();
592 if ((copaParent->
size() < 1) || (!(*copaParent)[0]->isContainer()))
return;
597 CCopasiContainer::objectMap::const_iterator fieldIt = pFieldList->begin();
598 CCopasiContainer::objectMap::const_iterator fieldEnd = pFieldList->end();
600 while (fieldIt != fieldEnd)
602 currentFieldObject = fieldIt->second;
607 lastFieldItem = currentFieldItem;
608 lastObjectItem = NULL;
610 for (i = 0; i < copaParent->
size(); i++)
634 loadChild(currentItem, static_cast< CCopasiContainer * >(pSubField),
false);
637 lastObjectItem = currentItem;
654 while (pHead != NULL)
658 if (pCurrent != pHead)
659 for (; (pCurrentLevel != NULL); pCurrentLevel =
663 pHead = pHead->
pNext;
679 if (pCurrent->text(0) ==
"Select by attribute")
681 pCurrent->setIcon(0, QIcon());
688 pCurrent->setIcon(0, QIcon(*pObjectNone));
691 pCurrent->setIcon(0, QIcon(*pObjectAll));
694 pCurrent->setIcon(0, QIcon(*pObjectParts));
704 for (; pCurrent != NULL; pCurrent = pCurrent->
pNext)
711 CCopasiContainer::objectMap::const_iterator it = pObjectList->begin();
712 CCopasiContainer::objectMap::const_iterator end = pObjectList->end();
723 if (
FROM_UTF8(it->second->getObjectName()) == name)
739 for (i = 0; i < pObjectVector->size(); i++)
741 if ((*pObjectVector)[i])
selectObjects(rootItem, (*pObjectVector)[i]);
751 pCurrent = browserItem;
753 if (pCurrent->child(0))
772 while (pTmp->parent() != NULL)
779 setCheck(static_cast< ObjectBrowserItem * >(pCurrent->child(0)));
CBrowserObject * getObject()
void insert(ObjectBrowserItem *pItem)
void createBucketIndex(int max)
ObjectBrowserItem * bucketPop(int &cursor)
QTreeWidgetItem * nextSibling()
virtual CCopasiObjectName getCN() const
const std::string & getObjectName() const
virtual size_t size() const
void setObjectType(objectType newType)
const CCopasiObject * pCopasiObject
virtual const objectMap & getObjects() const
ObjectList * referenceList
void insertBucket(ObjectBrowserItem *pItem)
void setBrowserObject(CBrowserObject *updateObject)
std::multimap< std::string, CCopasiObject * > objectMap
ObjectBrowserItem * pItem
Header file of class CCopasiContainer.
bool fl(const C_FLOAT64 &d1, const C_FLOAT64 &d2)
static void resetKeySpace()
static long getKeySpace()
static const CCopasiContainer * getRoot()
ObjectListItem * getRoot()
ObjectBrowserItem * pop()