// commercial license or contractual agreement.
#include <inspector/TreeModel_ItemBase.hxx>
-
+#include <inspector/TreeModel_ItemProperties.hxx>
#include <inspector/TreeModel_ItemRole.hxx>
+#include <inspector/TreeModel_ItemStream.hxx>
+#include <Standard_Dump.hxx>
#include <Standard_WarningsDisable.hxx>
#include <QStringList>
#include <Standard_WarningsRestore.hxx>
// purpose :
// =======================================================================
TreeModel_ItemBase::TreeModel_ItemBase (TreeModel_ItemBasePtr theParent, const int theRow, const int theColumn)
- : m_bInitialized (false)
+ : m_iStreamChildren (0), m_bInitialized (false)
{
m_pParent = theParent;
m_iRow = theRow;
}
// =======================================================================
-// function : reset
+// function : Reset
// purpose :
// =======================================================================
void TreeModel_ItemBase::Reset()
anItem->Reset();
}
m_bInitialized = false;
+ if (!myProperties.IsNull())
+ {
+ myProperties->Reset();
+ }
myCachedValues.clear();
+ myStream.str ("");
}
// =======================================================================
// =======================================================================
void TreeModel_ItemBase::Reset (int theRole)
{
- if (!myCachedValues.contains (theRole))
+ if (!myCachedValues.contains (theRole))
return;
myCachedValues.remove (theRole);
TreeModel_ItemBasePtr anItem;
if (isToCreate) {
- anItem = createChild (theRow, theColumn);
+ if (theRow < m_iStreamChildren)
+ anItem = TreeModel_ItemStream::CreateItem (currentItem(), theRow, theColumn);
+ else
+ anItem = createChild (theRow - m_iStreamChildren, theColumn);
+
if (anItem)
m_ChildItems[aPos] = anItem;
}
if (myCachedValues.contains (theItemRole))
return myCachedValues[theItemRole];
- const_cast<TreeModel_ItemBase*>(this)->myCachedValues.insert (theItemRole,
- theItemRole == TreeModel_ItemRole_RowCountRole ? QVariant (initRowCount()) : initValue (theItemRole));
+ QVariant aValueToCache;
+ if (theItemRole == TreeModel_ItemRole_RowCountRole)
+ aValueToCache = initRowCount() + const_cast<TreeModel_ItemBase*>(this)->initStreamRowCount();
+ else
+ aValueToCache = initValue (theItemRole);
+ myCachedValues.insert (theItemRole, aValueToCache);
return myCachedValues.contains (theItemRole) ? myCachedValues[theItemRole] : QVariant();
}
+
+// =======================================================================
+// function : Init
+// purpose :
+// =======================================================================
+void TreeModel_ItemBase::Init()
+{
+ m_bInitialized = true;
+
+ initStream(myStream);
+ initStreamRowCount();
+}
+
+// =======================================================================
+// function : Object
+// purpose :
+// =======================================================================
+const Handle(Standard_Transient)& TreeModel_ItemBase::Object() const
+{
+ static Handle(Standard_Transient) aNullObject;
+ return aNullObject;
+}
+
+// =======================================================================
+// function : initStreamRowCount
+// purpose :
+// =======================================================================
+int TreeModel_ItemBase::initStreamRowCount()
+{
+ int aStreamChildrenCount = 0;
+ if (Column() == 0)
+ {
+ Standard_SStream aStream;
+ initStream (aStream);
+ if (!Standard_Dump::Text (aStream).IsEmpty())
+ {
+ if (!myProperties)
+ {
+ myProperties = new TreeModel_ItemProperties();
+ myProperties->SetItem (currentItem());
+ }
+ myProperties->Init();
+ aStreamChildrenCount = myProperties->Children().Extent();
+ }
+ }
+ m_iStreamChildren = aStreamChildrenCount;
+ return m_iStreamChildren;
+}
+
+// =======================================================================
+// function : initValue
+// purpose :
+// =======================================================================
+QVariant TreeModel_ItemBase::initValue (const int theItemRole) const
+{
+ if (theItemRole != Qt::DisplayRole && theItemRole != Qt::ToolTipRole)
+ return QVariant();
+
+ switch (Column())
+ {
+ case 1: { return Row(); }
+ }
+
+ return QVariant();
+}