From 46127ee7248f2dc8eb112956fd197952c5f7c551 Mon Sep 17 00:00:00 2001 From: Rebecca Cox Date: Wed, 7 Mar 2018 14:24:18 +0100 Subject: [PATCH] #2581 3D wellLog curves: Add function to set property detaults from view --- .../Commands/RicAdd3dWellLogCurveFeature.cpp | 7 ++ .../ProjectDataModel/Rim3dWellLogCurve.cpp | 90 ++++++++++++++++++- .../ProjectDataModel/Rim3dWellLogCurve.h | 9 +- 3 files changed, 103 insertions(+), 3 deletions(-) diff --git a/ApplicationCode/Commands/RicAdd3dWellLogCurveFeature.cpp b/ApplicationCode/Commands/RicAdd3dWellLogCurveFeature.cpp index 3d16ac3463..0cbfddc9d4 100644 --- a/ApplicationCode/Commands/RicAdd3dWellLogCurveFeature.cpp +++ b/ApplicationCode/Commands/RicAdd3dWellLogCurveFeature.cpp @@ -53,6 +53,13 @@ void RicAdd3dWellLogCurveFeature::onActionTriggered(bool isChecked) RimWellPath* selectedWellPath = RicWellLogTools::selectedWellPath(); Rim3dWellLogCurve* rim3dWellLogCurve = new Rim3dWellLogCurve(); + + Rim3dView* view = RiaApplication::instance()->activeReservoirView(); + if (view) + { + rim3dWellLogCurve->setPropertiesFromView(view); + } + selectedWellPath->add3dWellLogCurve(rim3dWellLogCurve); RiaApplication::instance()->project()->updateConnectedEditors(); diff --git a/ApplicationCode/ProjectDataModel/Rim3dWellLogCurve.cpp b/ApplicationCode/ProjectDataModel/Rim3dWellLogCurve.cpp index 8e9d39f82f..588b73fe90 100644 --- a/ApplicationCode/ProjectDataModel/Rim3dWellLogCurve.cpp +++ b/ApplicationCode/ProjectDataModel/Rim3dWellLogCurve.cpp @@ -22,7 +22,11 @@ #include "RimEclipseResultDefinition.h" #include "RimGeoMechCase.h" #include "RimGeoMechResultDefinition.h" - +#include "RimTools.h" +#include "Rim3dView.h" +#include "RimEclipseView.h" +#include "RimGeoMechView.h" +#include "RimEclipseCellColors.h" //================================================================================================== /// @@ -70,6 +74,9 @@ Rim3dWellLogCurve::Rim3dWellLogCurve() { CAF_PDM_InitObject("3d Well Log Curve", "", "", ""); + CAF_PDM_InitField(&m_showCurve, "Show3dWellLogCurve", true, "Show 3d Well Log Curve", "", "", ""); + m_showCurve.uiCapability()->setUiHidden(true); + CAF_PDM_InitFieldNoDefault(&m_drawPlane, "DrawPlane", "Draw Plane", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_drawStyle, "DrawStyle", "Draw Style", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_coloringStyle, "ColoringStyle", "Coloring Style", "", "", ""); @@ -90,7 +97,7 @@ Rim3dWellLogCurve::Rim3dWellLogCurve() CAF_PDM_InitField(&m_timeStep, "CurveTimeStep", 0, "Time Step", "", "", ""); - CAF_PDM_InitField(&m_name, "Name", QString("3d Well Log Curve"), "3d Well Log Curve", "", "", ""); + CAF_PDM_InitField(&m_name, "Name", QString("3D Well Log Curve"), "3d Well Log Curve", "", "", ""); m_name.uiCapability()->setUiHidden(true); } @@ -103,6 +110,84 @@ Rim3dWellLogCurve::~Rim3dWellLogCurve() delete m_eclipseResultDefinition; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void Rim3dWellLogCurve::setPropertiesFromView(Rim3dView* view) +{ + m_case = nullptr; + if (view) + { + m_case = view->ownerCase(); + } + + RimGeoMechCase* geomCase = dynamic_cast(m_case.value()); + RimEclipseCase* eclipseCase = dynamic_cast(m_case.value()); + m_eclipseResultDefinition->setEclipseCase(eclipseCase); + m_geomResultDefinition->setGeoMechCase(geomCase); + + RimEclipseView* eclipseView = dynamic_cast(view); + if (eclipseView) + { + m_eclipseResultDefinition->simpleCopy(eclipseView->cellResult()); + m_timeStep = eclipseView->currentTimeStep(); + } + + RimGeoMechView* geoMechView = dynamic_cast(view); + if (geoMechView) + { + m_geomResultDefinition->setResultAddress(geoMechView->cellResultResultDefinition()->resultAddress()); + m_timeStep = geoMechView->currentTimeStep(); + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +caf::PdmFieldHandle* Rim3dWellLogCurve::objectToggleField() +{ + return &m_showCurve; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void Rim3dWellLogCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) +{ + +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QList Rim3dWellLogCurve::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) +{ + QList options; + + if (fieldNeedingOptions == &m_case) + { + RimTools::caseOptionItems(&options); + + options.push_front(caf::PdmOptionItemInfo("None", nullptr)); + } + else if (fieldNeedingOptions == &m_timeStep) + { + QStringList timeStepNames; + + if (m_case) + { + timeStepNames = m_case->timeStepStrings(); + } + + for (int i = 0; i < timeStepNames.size(); i++) + { + options.push_back(caf::PdmOptionItemInfo(timeStepNames[i], i)); + } + } + + return options; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -147,3 +232,4 @@ void Rim3dWellLogCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrderin uiOrdering.skipRemainingFields(); } + diff --git a/ApplicationCode/ProjectDataModel/Rim3dWellLogCurve.h b/ApplicationCode/ProjectDataModel/Rim3dWellLogCurve.h index 72c30e0fe1..7ee92cb13d 100644 --- a/ApplicationCode/ProjectDataModel/Rim3dWellLogCurve.h +++ b/ApplicationCode/ProjectDataModel/Rim3dWellLogCurve.h @@ -64,12 +64,19 @@ public: Rim3dWellLogCurve(); virtual ~Rim3dWellLogCurve(); - virtual caf::PdmFieldHandle* userDescriptionField() override; + void setPropertiesFromView(Rim3dView* view); + + virtual caf::PdmFieldHandle* objectToggleField() override; + virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; + virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override; + virtual caf::PdmFieldHandle* userDescriptionField() override; private: virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; + private: + caf::PdmField m_showCurve; caf::PdmField m_name; caf::PdmPtrField m_case;