mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2380 AppFwk: Move fieldsByType to RimProject
This commit is contained in:
@@ -151,6 +151,10 @@ protected:
|
||||
|
||||
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
||||
|
||||
private:
|
||||
template <typename T>
|
||||
void fieldsByType(caf::PdmObjectHandle* object, std::vector<T*>& typedFields);
|
||||
|
||||
private:
|
||||
caf::PdmField<QString> m_projectFileVersionString;
|
||||
|
||||
@@ -166,3 +170,39 @@ private:
|
||||
caf::PdmChildArrayField<RimEclipseCase*> casesObsolete; // obsolete
|
||||
caf::PdmChildArrayField<RimIdenticalGridCaseGroup*> caseGroupsObsolete; // obsolete
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
template <typename T>
|
||||
void RimProject::fieldsByType(caf::PdmObjectHandle* object, std::vector<T*>& typedFields)
|
||||
{
|
||||
if (!object) return;
|
||||
|
||||
std::vector<caf::PdmFieldHandle*> allFieldsInObject;
|
||||
object->fields(allFieldsInObject);
|
||||
|
||||
std::vector<caf::PdmObjectHandle*> children;
|
||||
|
||||
for (const auto& field : allFieldsInObject)
|
||||
{
|
||||
caf::PdmField<T>* typedField = dynamic_cast<caf::PdmField<T>*>(field);
|
||||
if (typedField) typedFields.push_back(&typedField->v());
|
||||
|
||||
caf::PdmField< std::vector<T> >* typedFieldInVector = dynamic_cast<caf::PdmField< std::vector<T> >*>(field);
|
||||
if (typedFieldInVector)
|
||||
{
|
||||
for (T& typedFieldFromVector : typedFieldInVector->v())
|
||||
{
|
||||
typedFields.push_back(&typedFieldFromVector);
|
||||
}
|
||||
}
|
||||
|
||||
field->childObjects(&children);
|
||||
}
|
||||
|
||||
for (const auto& child : children)
|
||||
{
|
||||
fieldsByType(child, typedFields);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user