mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Improved tree ordering system
This commit is contained in:
@@ -398,9 +398,25 @@ PdmUiTreeOrdering* PdmObject::uiTreeOrdering(QString uiConfigName /*= ""*/)
|
||||
|
||||
for (size_t fIdx = 0; fIdx < m_fields.size(); ++fIdx)
|
||||
{
|
||||
if ( (m_fields[fIdx]->hasChildObjects()) && !uiTreeOrdering->containsField(m_fields[fIdx]))
|
||||
if (m_fields[fIdx]->hasChildObjects() && !uiTreeOrdering->containsField(m_fields[fIdx]))
|
||||
{
|
||||
uiTreeOrdering->add( m_fields[fIdx]);
|
||||
if (m_fields[fIdx]->isUiHidden() && !m_fields[fIdx]->isUiChildrenHidden())
|
||||
{
|
||||
std::vector<PdmObject*> children;
|
||||
m_fields[fIdx]->childObjects(&children);
|
||||
|
||||
for (size_t cIdx = 0; cIdx < children.size(); cIdx++)
|
||||
{
|
||||
if (!uiTreeOrdering->containsObject(children[cIdx]))
|
||||
{
|
||||
uiTreeOrdering->add(children[cIdx]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( !m_fields[fIdx]->isUiHidden())
|
||||
{
|
||||
uiTreeOrdering->add(m_fields[fIdx]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -422,7 +438,7 @@ void PdmObject::expandUiTree(PdmUiTreeOrdering* root, QString uiConfigName /*= "
|
||||
if (!root->isSubTreeDefined() && root->dataObject())
|
||||
{
|
||||
|
||||
if (root->m_field)
|
||||
if (root->m_field && !root->m_field->isUiChildrenHidden(uiConfigName))
|
||||
{
|
||||
std::vector<PdmObject*> fieldsChildObjects;
|
||||
root->m_field->childObjects(&fieldsChildObjects);
|
||||
|
||||
@@ -72,14 +72,14 @@ namespace caf
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool PdmUiTreeOrdering::containsField(PdmFieldHandle* field)
|
||||
bool PdmUiTreeOrdering::containsField(const PdmFieldHandle* field) const
|
||||
{
|
||||
assert (field);
|
||||
for (int cIdx = 0; cIdx < this->childCount(); ++cIdx)
|
||||
{
|
||||
PdmUiTreeOrdering* child = dynamic_cast<PdmUiTreeOrdering*>(this->child(cIdx));
|
||||
|
||||
if (!(child->m_field == field))
|
||||
if (child->m_field == field)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -88,6 +88,26 @@ namespace caf
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool PdmUiTreeOrdering::containsObject(const PdmObject* object) const
|
||||
{
|
||||
assert (object);
|
||||
for (int cIdx = 0; cIdx < this->childCount(); ++cIdx)
|
||||
{
|
||||
PdmUiTreeOrdering* child = dynamic_cast<PdmUiTreeOrdering*>(this->child(cIdx));
|
||||
|
||||
if (child->dataObject() == object)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Creates an new PdmUiTreeOrdering item, and adds it to parent. If position is -1, it is added
|
||||
/// at the end of parents existing child list.
|
||||
@@ -101,5 +121,7 @@ namespace caf
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
} //End of namespace caf
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ class PdmFieldHandle;
|
||||
|
||||
class PdmUiTreeOrdering : public UiTreeItem< PdmPointer<PdmObject> >
|
||||
{
|
||||
public:
|
||||
PdmUiTreeOrdering(PdmUiTreeOrdering* parent = NULL, int position = -1, PdmObject* dataObject = NULL);
|
||||
|
||||
void add(PdmFieldHandle * field);
|
||||
@@ -68,11 +69,14 @@ class PdmUiTreeOrdering : public UiTreeItem< PdmPointer<PdmObject> >
|
||||
/// To stop the tree generation at this level, setSubTreeDefined to true
|
||||
void setSubTreeDefined(bool isSubTreeDefined ) { m_isSubTreeDefined = isSubTreeDefined; }
|
||||
|
||||
PdmFieldHandle* field() const { return m_field; }
|
||||
|
||||
private:
|
||||
friend class PdmObject;
|
||||
bool forgetRemainingFields() const { return m_forgetRemainingFields; }
|
||||
bool isSubTreeDefined() const { return m_isSubTreeDefined; }
|
||||
bool containsField(PdmFieldHandle* field);
|
||||
bool containsField(const PdmFieldHandle* field) const;
|
||||
bool containsObject(const PdmObject* object) const;
|
||||
|
||||
private:
|
||||
PdmFieldHandle* m_field;
|
||||
|
||||
Reference in New Issue
Block a user