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:
parent
ed930da11d
commit
56188c8f3f
@ -28,7 +28,6 @@
|
|||||||
#include "RigGridBase.h"
|
#include "RigGridBase.h"
|
||||||
|
|
||||||
#include "RimCalcScript.h"
|
#include "RimCalcScript.h"
|
||||||
#include "RimSummaryCalculationCollection.h"
|
|
||||||
#include "RimCase.h"
|
#include "RimCase.h"
|
||||||
#include "RimCaseCollection.h"
|
#include "RimCaseCollection.h"
|
||||||
#include "RimCommandObject.h"
|
#include "RimCommandObject.h"
|
||||||
@ -38,6 +37,7 @@
|
|||||||
#include "RimEclipseCaseCollection.h"
|
#include "RimEclipseCaseCollection.h"
|
||||||
#include "RimFlowPlotCollection.h"
|
#include "RimFlowPlotCollection.h"
|
||||||
#include "RimFormationNamesCollection.h"
|
#include "RimFormationNamesCollection.h"
|
||||||
|
#include "RimSummaryCalculationCollection.h"
|
||||||
|
|
||||||
#ifdef USE_PROTOTYPE_FEATURE_FRACTURES
|
#ifdef USE_PROTOTYPE_FEATURE_FRACTURES
|
||||||
#include "RimFractureTemplateCollection.h"
|
#include "RimFractureTemplateCollection.h"
|
||||||
@ -47,6 +47,7 @@
|
|||||||
#include "RimGeoMechCase.h"
|
#include "RimGeoMechCase.h"
|
||||||
#include "RimGeoMechModels.h"
|
#include "RimGeoMechModels.h"
|
||||||
#include "RimGridSummaryCase.h"
|
#include "RimGridSummaryCase.h"
|
||||||
|
#include "RimGridView.h"
|
||||||
#include "RimIdenticalGridCaseGroup.h"
|
#include "RimIdenticalGridCaseGroup.h"
|
||||||
#include "RimMainPlotCollection.h"
|
#include "RimMainPlotCollection.h"
|
||||||
#include "RimMultiSnapshotDefinition.h"
|
#include "RimMultiSnapshotDefinition.h"
|
||||||
@ -58,7 +59,7 @@
|
|||||||
#include "RimSummaryCaseMainCollection.h"
|
#include "RimSummaryCaseMainCollection.h"
|
||||||
#include "RimSummaryCrossPlotCollection.h"
|
#include "RimSummaryCrossPlotCollection.h"
|
||||||
#include "RimSummaryPlotCollection.h"
|
#include "RimSummaryPlotCollection.h"
|
||||||
#include "RimGridView.h"
|
#include "RimTools.h"
|
||||||
#include "RimViewLinker.h"
|
#include "RimViewLinker.h"
|
||||||
#include "RimViewLinkerCollection.h"
|
#include "RimViewLinkerCollection.h"
|
||||||
#include "RimWellLogFile.h"
|
#include "RimWellLogFile.h"
|
||||||
@ -67,15 +68,15 @@
|
|||||||
#include "RimWellPathCollection.h"
|
#include "RimWellPathCollection.h"
|
||||||
#include "RimWellPathImport.h"
|
#include "RimWellPathImport.h"
|
||||||
|
|
||||||
#include "RiuMainWindow.h"
|
|
||||||
#include "RiuMainPlotWindow.h"
|
#include "RiuMainPlotWindow.h"
|
||||||
|
#include "RiuMainWindow.h"
|
||||||
|
|
||||||
#include "OctaveScriptCommands/RicExecuteScriptForCasesFeature.h"
|
#include "OctaveScriptCommands/RicExecuteScriptForCasesFeature.h"
|
||||||
|
|
||||||
#include "cafCmdFeature.h"
|
#include "cafCmdFeature.h"
|
||||||
#include "cafCmdFeatureManager.h"
|
#include "cafCmdFeatureManager.h"
|
||||||
#include "cafPdmUiTreeOrdering.h"
|
|
||||||
#include "cafCmdFeatureMenuBuilder.h"
|
#include "cafCmdFeatureMenuBuilder.h"
|
||||||
|
#include "cafPdmUiTreeOrdering.h"
|
||||||
#include "cvfBoundingBox.h"
|
#include "cvfBoundingBox.h"
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@ -440,6 +441,18 @@ void RimProject::setProjectFileNameAndUpdateDependencies(const QString& fileName
|
|||||||
|
|
||||||
QFileInfo fileInfoOld(oldProjectFileName);
|
QFileInfo fileInfoOld(oldProjectFileName);
|
||||||
QString oldProjectPath = fileInfoOld.path();
|
QString oldProjectPath = fileInfoOld.path();
|
||||||
|
|
||||||
|
std::vector<caf::FilePath*> filePaths;
|
||||||
|
fieldsByType(this, filePaths);
|
||||||
|
|
||||||
|
for (caf::FilePath* filePath : filePaths)
|
||||||
|
{
|
||||||
|
bool foundFile = false;
|
||||||
|
std::vector<QString> searchedPaths;
|
||||||
|
|
||||||
|
QString newFilePath = RimTools::relocateFile(filePath->path(), newProjectPath, oldProjectPath, &foundFile, &searchedPaths);
|
||||||
|
filePath->setPath(newFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
// Loop over all cases and update file path
|
// Loop over all cases and update file path
|
||||||
|
|
||||||
|
@ -151,6 +151,10 @@ protected:
|
|||||||
|
|
||||||
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
||||||
|
|
||||||
|
private:
|
||||||
|
template <typename T>
|
||||||
|
void fieldsByType(caf::PdmObjectHandle* object, std::vector<T*>& typedFields);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<QString> m_projectFileVersionString;
|
caf::PdmField<QString> m_projectFileVersionString;
|
||||||
|
|
||||||
@ -166,3 +170,39 @@ private:
|
|||||||
caf::PdmChildArrayField<RimEclipseCase*> casesObsolete; // obsolete
|
caf::PdmChildArrayField<RimEclipseCase*> casesObsolete; // obsolete
|
||||||
caf::PdmChildArrayField<RimIdenticalGridCaseGroup*> caseGroupsObsolete; // 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -16,9 +16,8 @@
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void fieldsByType(caf::PdmObjectHandle* object, std::vector<T*>* typedFields)
|
void fieldsByType(caf::PdmObjectHandle* object, std::vector<T*>& typedFields)
|
||||||
{
|
{
|
||||||
if (!typedFields) return;
|
|
||||||
if (!object) return;
|
if (!object) return;
|
||||||
|
|
||||||
std::vector<caf::PdmFieldHandle*> allFieldsInObject;
|
std::vector<caf::PdmFieldHandle*> allFieldsInObject;
|
||||||
@ -29,14 +28,14 @@ void fieldsByType(caf::PdmObjectHandle* object, std::vector<T*>* typedFields)
|
|||||||
for (const auto& field : allFieldsInObject)
|
for (const auto& field : allFieldsInObject)
|
||||||
{
|
{
|
||||||
caf::PdmField<T>* typedField = dynamic_cast<caf::PdmField<T>*>(field);
|
caf::PdmField<T>* typedField = dynamic_cast<caf::PdmField<T>*>(field);
|
||||||
if (typedField) typedFields->push_back(&typedField->v());
|
if (typedField) typedFields.push_back(&typedField->v());
|
||||||
|
|
||||||
caf::PdmField< std::vector<T> >* typedFieldInVector = dynamic_cast<caf::PdmField< std::vector<T> >*>(field);
|
caf::PdmField< std::vector<T> >* typedFieldInVector = dynamic_cast<caf::PdmField< std::vector<T> >*>(field);
|
||||||
if (typedFieldInVector)
|
if (typedFieldInVector)
|
||||||
{
|
{
|
||||||
for (T& typedFieldFromVector : typedFieldInVector->v())
|
for (T& typedFieldFromVector : typedFieldInVector->v())
|
||||||
{
|
{
|
||||||
typedFields->push_back(&typedFieldFromVector);
|
typedFields.push_back(&typedFieldFromVector);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,7 +64,7 @@ TEST(RimRelocatePathTest, findPathsInProjectFile)
|
|||||||
|
|
||||||
std::vector< caf::FilePath* > filePaths;
|
std::vector< caf::FilePath* > filePaths;
|
||||||
|
|
||||||
fieldsByType(&project, &filePaths);
|
fieldsByType(&project, filePaths);
|
||||||
|
|
||||||
for (auto filePath : filePaths)
|
for (auto filePath : filePaths)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user