From 456bc034839f27b2c956bcb9848f98e11fc85c3a Mon Sep 17 00:00:00 2001 From: astridkbjorke Date: Mon, 19 Dec 2016 12:04:07 +0100 Subject: [PATCH] #1037 - pre-proto - Added calculateValueOptions for RimFracture to find options for fractureDefinitions and wellpaths --- .../ProjectDataModel/RimFracture.cpp | 57 +++++++++++++++++++ .../ProjectDataModel/RimFracture.h | 3 + 2 files changed, 60 insertions(+) diff --git a/ApplicationCode/ProjectDataModel/RimFracture.cpp b/ApplicationCode/ProjectDataModel/RimFracture.cpp index b3cc535c0d..4ae121dc6a 100644 --- a/ApplicationCode/ProjectDataModel/RimFracture.cpp +++ b/ApplicationCode/ProjectDataModel/RimFracture.cpp @@ -18,10 +18,20 @@ #include "RimFracture.h" +#include "RiaApplication.h" + #include "RimFractureDefinition.h" +#include "RimFractureDefinitionCollection.h" +#include "RimOilField.h" +#include "RimProject.h" #include "RimWellPath.h" +#include "cafPdmFieldHandle.h" #include "cafPdmObject.h" +#include "cafPdmUiItem.h" + +#include "QToolBox" +#include "QList" namespace caf @@ -67,6 +77,53 @@ RimFracture::~RimFracture() { } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QList RimFracture::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) +{ + + QList options; + + RimProject* proj = RiaApplication::instance()->project(); + CVF_ASSERT(proj); + + RimOilField* oilField = proj->activeOilField(); + if (oilField == nullptr) return options; + + if (fieldNeedingOptions == &fractureDefinition) + { + + RimFractureDefinitionCollection* fracDefColl = oilField->fractureDefinitionCollection(); + if (fracDefColl == nullptr) return options; + + for (RimFractureDefinition* fracDef : fracDefColl->fractureDefinitions()) + { + options.push_back(caf::PdmOptionItemInfo(fracDef->name(), fracDef)); + } + } + else if (fieldNeedingOptions == &wellpath) + { + RimWellPathCollection* wellPathColl = oilField->wellPathCollection(); + if (wellPathColl == nullptr) return options; + + for (RimWellPath* wellPath : wellPathColl->wellPaths()) + { + options.push_back(caf::PdmOptionItemInfo(wellPath->name(), wellPath)); + } + + + + } + + + + return options; + + + +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimFracture.h b/ApplicationCode/ProjectDataModel/RimFracture.h index 010afe09de..f84ed943ee 100644 --- a/ApplicationCode/ProjectDataModel/RimFracture.h +++ b/ApplicationCode/ProjectDataModel/RimFracture.h @@ -56,6 +56,9 @@ public: caf::PdmField j; caf::PdmField k; + virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override; + + protected: virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);