#2782 Auto name for 3d Well Log Curves

This commit is contained in:
Gaute Lindkvist 2018-04-27 15:30:34 +02:00
parent b686c1a081
commit 04f793c19d
12 changed files with 693 additions and 40 deletions

View File

@ -104,6 +104,7 @@ ${CMAKE_CURRENT_LIST_DIR}/Rim3dWellLogExtractionCurve.h
${CMAKE_CURRENT_LIST_DIR}/Rim3dWellLogRftCurve.h
${CMAKE_CURRENT_LIST_DIR}/RimVirtualPerforationResults.h
${CMAKE_CURRENT_LIST_DIR}/RimLegendConfig.h
${CMAKE_CURRENT_LIST_DIR}/RimWellLogCurveNameConfig.h
)
@ -212,6 +213,7 @@ ${CMAKE_CURRENT_LIST_DIR}/Rim3dWellLogExtractionCurve.cpp
${CMAKE_CURRENT_LIST_DIR}/Rim3dWellLogRftCurve.cpp
${CMAKE_CURRENT_LIST_DIR}/RimVirtualPerforationResults.cpp
${CMAKE_CURRENT_LIST_DIR}/RimLegendConfig.cpp
${CMAKE_CURRENT_LIST_DIR}/RimWellLogCurveNameConfig.cpp
)
list(APPEND CODE_HEADER_FILES

View File

@ -85,6 +85,7 @@ void Rim3dWellLogCurveCollection::add3dWellLogCurve(Rim3dWellLogCurve* curve)
size_t index = m_3dWellLogCurves.size();
curve->setColor(RiaColorTables::wellLogPlotPaletteColors().cycledColor3f(index));
m_3dWellLogCurves.push_back(curve);
curve->createCurveAutoName();
}
}

View File

@ -69,8 +69,6 @@ Rim3dWellLogCurve::Rim3dWellLogCurve()
CAF_PDM_InitField(&m_drawPlane, "DrawPlane", DrawPlaneEnum(VERTICAL_ABOVE), "Draw Plane", "", "", "");
CAF_PDM_InitField(&m_color, "CurveColor", cvf::Color3f(0.0f, 0.0f, 0.0f), "Curve Color", "", "", "");
CAF_PDM_InitField(&m_name, "Name", QString("3D Well Log Curve"), "3d Well Log Curve", "", "", "");
m_name.uiCapability()->setUiHidden(true);
}
//--------------------------------------------------------------------------------------------------
@ -90,14 +88,6 @@ void Rim3dWellLogCurve::updateCurveIn3dView()
proj->createDisplayModelAndRedrawAllViews();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const QString& Rim3dWellLogCurve::name() const
{
return m_name();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -171,14 +161,6 @@ void Rim3dWellLogCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* Rim3dWellLogCurve::userDescriptionField()
{
return &m_name;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -246,6 +228,14 @@ void Rim3dWellLogCurve::defineEditorAttribute(const caf::PdmFieldHandle* field,
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dWellLogCurve::initAfterRead()
{
this->createCurveAutoName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -255,11 +245,9 @@ void Rim3dWellLogCurve::resetMinMaxValuesAndUpdateUI()
this->updateConnectedEditors();
}
void Rim3dWellLogCurve::setGeometryGenerator(Riv3dWellLogCurveGeometryGenerator* generator)
{
m_geometryGenerator = generator;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool Rim3dWellLogCurve::findClosestPointOnCurve(const cvf::Vec3d& globalIntersection,
cvf::Vec3d* closestPoint,
double* measuredDepthAtPoint,
@ -272,6 +260,17 @@ bool Rim3dWellLogCurve::findClosestPointOnCurve(const cvf::Vec3d& globalIntersec
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dWellLogCurve::setGeometryGenerator(Riv3dWellLogCurveGeometryGenerator* generator)
{
m_geometryGenerator = generator;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
cvf::ref<Riv3dWellLogCurveGeometryGenerator> Rim3dWellLogCurve::geometryGenerator()
{
return m_geometryGenerator;

View File

@ -23,17 +23,19 @@
#include "cafPdmObject.h"
#include "cafPdmFieldCvfColor.h"
#include "cafPdmChildField.h"
#include "cvfObject.h"
#include "cvfVector3.h"
#include "RimWellLogCurveNameConfig.h"
class Riv3dWellLogCurveGeometryGenerator;
//==================================================================================================
///
///
//==================================================================================================
class Rim3dWellLogCurve : public caf::PdmObject
class Rim3dWellLogCurve : public caf::PdmObject, public RimCurveNameConfigHolderInterface
{
CAF_PDM_HEADER_INIT;
@ -52,7 +54,7 @@ public:
void updateCurveIn3dView();
const QString& name() const;
virtual QString name() const = 0;
virtual QString resultPropertyString() const = 0;
DrawPlane drawPlane() const;
cvf::Color3f color() const;
@ -72,18 +74,17 @@ public:
void setGeometryGenerator(Riv3dWellLogCurveGeometryGenerator* generator);
cvf::ref<Riv3dWellLogCurveGeometryGenerator> geometryGenerator();
protected:
virtual caf::PdmFieldHandle* objectToggleField() override;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
virtual caf::PdmFieldHandle* userDescriptionField() override;
void configurationUiOrdering(caf::PdmUiOrdering& uiOrdering);
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override;
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
virtual void initAfterRead();
private:
void resetMinMaxValues();
protected:
caf::PdmField<QString> m_name;
caf::PdmField<caf::AppEnum<DrawPlane>> m_drawPlane;
caf::PdmField<cvf::Color3f> m_color;
caf::PdmField<double> m_minCurveValue;

View File

@ -21,10 +21,17 @@
#include "RigWellLogFile.h"
#include "RiaExtractionTools.h"
#include "RigEclipseCaseData.h"
#include "RigGeoMechCaseData.h"
#include "RigEclipseWellLogExtractor.h"
#include "RigGeoMechWellLogExtractor.h"
#include "RigResultAccessorFactory.h"
#include "RigCaseCellResultsData.h"
#include "RigFemPartResultsCollection.h"
#include "RimEclipseCase.h"
#include "RimGeoMechCase.h"
#include "Rim3dView.h"
#include "RimWellLogCurveNameConfig.h"
#include "RimCase.h"
#include "RimEclipseCase.h"
#include "RimEclipseCellColors.h"
@ -71,7 +78,8 @@ Rim3dWellLogExtractionCurve::Rim3dWellLogExtractionCurve()
m_geomResultDefinition.uiCapability()->setUiTreeChildrenHidden(true);
m_geomResultDefinition = new RimGeoMechResultDefinition;
m_name = "3D Well Log Curve";
CAF_PDM_InitFieldNoDefault(&m_nameConfig, "NameGenerator", "", "", "", "");
m_nameConfig = new RimWellLogExtractionCurveNameConfig(this);
}
//--------------------------------------------------------------------------------------------------
@ -81,6 +89,7 @@ Rim3dWellLogExtractionCurve::~Rim3dWellLogExtractionCurve()
{
delete m_geomResultDefinition;
delete m_eclipseResultDefinition;
delete m_nameConfig;
}
//--------------------------------------------------------------------------------------------------
@ -174,6 +183,88 @@ void Rim3dWellLogExtractionCurve::curveValuesAndMds(std::vector<double>* values,
}
}
QString Rim3dWellLogExtractionCurve::name() const
{
return m_nameConfig()->name();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dWellLogExtractionCurve::createCurveAutoName() const
{
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(m_case.value());
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(m_case.value());
QStringList generatedCurveName;
if (m_nameConfig->addWellName())
{
RimWellPath* wellPath;
this->firstAncestorOrThisOfTypeAsserted(wellPath);
if (!wellPath->name().isEmpty())
{
generatedCurveName += wellPath->name();
}
}
if (m_nameConfig->addCaseName() && m_case())
{
generatedCurveName.push_back(m_case->caseUserDescription());
}
if (m_nameConfig->addProperty() && !resultPropertyString().isEmpty())
{
generatedCurveName.push_back(resultPropertyString());
}
if (m_nameConfig->addTimeStep() || m_nameConfig->addDate())
{
size_t maxTimeStep = 0;
if (eclipseCase)
{
RigEclipseCaseData* data = eclipseCase->eclipseCaseData();
if (data)
{
maxTimeStep = data->results(m_eclipseResultDefinition->porosityModel())->maxTimeStepCount();
}
}
else if (geomCase)
{
RigGeoMechCaseData* data = geomCase->geoMechData();
if (data)
{
maxTimeStep = data->femPartResults()->frameCount();
}
}
if (m_nameConfig->addDate())
{
QString dateString = wellDate();
if (!dateString.isEmpty())
{
generatedCurveName.push_back(dateString);
}
}
if (m_nameConfig->addTimeStep())
{
generatedCurveName.push_back(QString("[%1/%2]").arg(m_timeStep()).arg(maxTimeStep));
}
}
return generatedCurveName.join(", ");
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* Rim3dWellLogExtractionCurve::userDescriptionField()
{
return m_nameConfig()->nameField();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -237,6 +328,8 @@ void Rim3dWellLogExtractionCurve::defineUiOrdering(QString uiConfigName, caf::Pd
Rim3dWellLogCurve::configurationUiOrdering(uiOrdering);
caf::PdmUiGroup* nameGroup = m_nameConfig()->createUiGroup(uiConfigName, uiOrdering);
uiOrdering.skipRemainingFields(true);
}
@ -251,3 +344,28 @@ void Rim3dWellLogExtractionCurve::initAfterRead()
m_eclipseResultDefinition->setEclipseCase(eclipseCase);
m_geomResultDefinition->setGeoMechCase(geomCase);
}
QString Rim3dWellLogExtractionCurve::wellDate() const
{
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(m_case.value());
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(m_case.value());
QStringList timeStepNames;
if (eclipseCase)
{
if (eclipseCase->eclipseCaseData())
{
timeStepNames = eclipseCase->timeStepStrings();
}
}
else if (geomCase)
{
if (geomCase->geoMechData())
{
timeStepNames = geomCase->timeStepStrings();
}
}
return (m_timeStep >= 0 && m_timeStep < timeStepNames.size()) ? timeStepNames[m_timeStep] : "";
}

View File

@ -28,6 +28,7 @@ class Rim3dView;
class RimCase;
class RimGeoMechResultDefinition;
class RimEclipseResultDefinition;
class RimWellLogExtractionCurveNameConfig;
//==================================================================================================
///
@ -45,17 +46,22 @@ public:
virtual QString resultPropertyString() const override;
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override;
virtual QString name() const override;
virtual QString createCurveAutoName() const override;
protected:
virtual caf::PdmFieldHandle* userDescriptionField() override;
private:
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
bool* useOptionsOnly) override;
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
virtual void initAfterRead() override;
QString wellDate() const;
private:
caf::PdmPtrField<RimCase*> m_case;
caf::PdmField<int> m_timeStep;
caf::PdmChildField<RimEclipseResultDefinition*> m_eclipseResultDefinition;
caf::PdmChildField<RimGeoMechResultDefinition*> m_geomResultDefinition;
caf::PdmChildField<RimWellLogExtractionCurveNameConfig*> m_nameConfig;
};

View File

@ -20,6 +20,7 @@
#include "RigWellLogFile.h"
#include "RimWellLogCurveNameConfig.h"
#include "RimWellLogFile.h"
#include "RimWellLogFileChannel.h"
#include "RimWellPath.h"
@ -44,13 +45,17 @@ Rim3dWellLogFileCurve::Rim3dWellLogFileCurve()
CAF_PDM_InitFieldNoDefault(&m_wellLogFile, "WellLogFile", "Well Log File", "", "", "");
m_name = "3D Well Log LAS Curve";
CAF_PDM_InitFieldNoDefault(&m_nameConfig, "NameConfig", "", "", "", "");
m_nameConfig = new RimWellLogFileCurveNameConfig(this);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
Rim3dWellLogFileCurve::~Rim3dWellLogFileCurve() {}
Rim3dWellLogFileCurve::~Rim3dWellLogFileCurve()
{
delete m_nameConfig;
}
//--------------------------------------------------------------------------------------------------
///
@ -72,7 +77,6 @@ void Rim3dWellLogFileCurve::setDefaultFileCurveDataInfo()
if (!fileLogs.empty())
{
m_wellLogChannelName = fileLogs[0]->name();
m_name = "LAS: " + m_wellLogChannelName;
}
}
}
@ -104,6 +108,76 @@ QString Rim3dWellLogFileCurve::resultPropertyString() const
return m_wellLogChannelName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dWellLogFileCurve::name() const
{
return m_nameConfig->name();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dWellLogFileCurve::createCurveAutoName() const
{
QStringList name;
QString unit;
bool channelNameAvailable = false;
RimWellPath* wellPath;
this->firstAncestorOrThisOfType(wellPath);
if (wellPath)
{
name.push_back(wellPath->name());
name.push_back("LAS");
if (!m_wellLogChannelName().isEmpty())
{
name.push_back(m_wellLogChannelName);
channelNameAvailable = true;
}
RigWellLogFile* wellLogFile = m_wellLogFile ? m_wellLogFile->wellLogFileData() : nullptr;
if (wellLogFile)
{
if (channelNameAvailable)
{
/* RimWellLogPlot* wellLogPlot;
firstAncestorOrThisOfType(wellLogPlot);
CVF_ASSERT(wellLogPlot);
QString unitName = wellLogFile->wellLogChannelUnitString(m_wellLogChannelName, wellLogPlot->depthUnit());
if (!unitName.isEmpty())
{
name.back() += QString(" [%1]").arg(unitName);
} */
}
QString date = wellLogFile->date();
if (!date.isEmpty())
{
name.push_back(wellLogFile->date());
}
}
return name.join(", ");
}
return "Empty curve";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* Rim3dWellLogFileCurve::userDescriptionField()
{
return m_nameConfig()->nameField();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -178,5 +252,7 @@ void Rim3dWellLogFileCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrd
Rim3dWellLogCurve::configurationUiOrdering(uiOrdering);
caf::PdmUiGroup* nameGroup = m_nameConfig()->createUiGroup(uiConfigName, uiOrdering);
uiOrdering.skipRemainingFields(true);
}

View File

@ -25,6 +25,7 @@
#include "cafPdmPtrField.h"
class RimWellLogFile;
class RimWellLogFileCurveNameConfig;
//==================================================================================================
///
@ -41,8 +42,10 @@ public:
void setDefaultFileCurveDataInfo();
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override;
virtual QString resultPropertyString() const override;
virtual QString name() const override;
virtual QString createCurveAutoName() const override;
protected:
virtual caf::PdmFieldHandle* userDescriptionField() override;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
const QVariant& oldValue,
const QVariant& newValue) override;
@ -56,4 +59,5 @@ private:
private:
caf::PdmPtrField<RimWellLogFile*> m_wellLogFile;
caf::PdmField<QString> m_wellLogChannelName;
caf::PdmChildField<RimWellLogFileCurveNameConfig*> m_nameConfig;
};

View File

@ -18,12 +18,14 @@
#include "Rim3dWellLogRftCurve.h"
#include "RifReaderEclipseRft.h"
#include "RigWellLogCurveData.h"
#include "RimWellLogCurveNameConfig.h"
#include "RimEclipseResultCase.h"
#include "RimTools.h"
#include "RimWellPath.h"
#include "RimWellLogCurve.h"
#include "RigWellLogCurveData.h"
#include "RimEclipseResultCase.h"
#include "RifReaderEclipseRft.h"
#include "RimTools.h"
//==================================================================================================
///
@ -49,7 +51,8 @@ Rim3dWellLogRftCurve::Rim3dWellLogRftCurve()
m_2dWellLogRftCurve = new RimWellLogRftCurve();
m_2dWellLogRftCurve.xmlCapability()->disableIO();
m_name = "3D Well Log RFT Curve";
CAF_PDM_InitFieldNoDefault(&m_nameConfig, "NameConfig", "", "", "", "");
m_nameConfig = new RimWellLogRftCurveNameConfig(this);
}
//--------------------------------------------------------------------------------------------------
@ -57,6 +60,7 @@ Rim3dWellLogRftCurve::Rim3dWellLogRftCurve()
//--------------------------------------------------------------------------------------------------
Rim3dWellLogRftCurve::~Rim3dWellLogRftCurve()
{
delete m_nameConfig;
}
//--------------------------------------------------------------------------------------------------
@ -84,6 +88,53 @@ QString Rim3dWellLogRftCurve::resultPropertyString() const
return caf::AppEnum<RifEclipseRftAddress::RftWellLogChannelType>::uiText(m_wellLogChannelName());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dWellLogRftCurve::name() const
{
return m_nameConfig->name();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dWellLogRftCurve::createCurveAutoName() const
{
QStringList name;
if (!wellName().isEmpty())
{
name.push_back(wellName());
}
name.push_back("RFT");
if (m_eclipseResultCase)
{
name.push_back(m_eclipseResultCase->caseUserDescription());
}
if (m_wellLogChannelName().text() != caf::AppEnum<RifEclipseRftAddress::RftWellLogChannelType>::text(RifEclipseRftAddress::NONE))
{
RifEclipseRftAddress::RftWellLogChannelType channelNameEnum = m_wellLogChannelName();
name.push_back(caf::AppEnum<RifEclipseRftAddress::RftWellLogChannelType>::uiText(channelNameEnum));
}
if (!m_timeStep().isNull())
{
name.push_back(m_timeStep().toString(RimTools::dateFormatString()));
}
return name.join(", ");
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* Rim3dWellLogRftCurve::userDescriptionField()
{
return m_nameConfig()->nameField();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -28,6 +28,7 @@
#include "RimWellLogRftCurve.h"
class RimEclipseResultCase;
class RimWellLogRftCurveNameConfig;
class QString;
//==================================================================================================
@ -45,8 +46,12 @@ public:
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override;
virtual QString resultPropertyString() const override;
virtual QString name() const override;
virtual QString createCurveAutoName() const override;
protected:
virtual caf::PdmFieldHandle* userDescriptionField() override;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
const QVariant& oldValue,
const QVariant& newValue) override;
@ -66,4 +71,5 @@ private:
caf::PdmField<caf::AppEnum<RifEclipseRftAddress::RftWellLogChannelType>> m_wellLogChannelName;
caf::PdmChildField<RimWellLogRftCurve*> m_2dWellLogRftCurve;
caf::PdmChildField<RimWellLogRftCurveNameConfig*> m_nameConfig;
};

View File

@ -0,0 +1,274 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2018- Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// + m_addWellName {m_fieldValue=true m_defaultFieldValue=true } caf::PdmField<bool>
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RimProject.h"
#include "RimWellLogCurveNameConfig.h"
#include "Rim3dWellLogCurve.h"
//==================================================================================================
///
///
//==================================================================================================
CAF_PDM_SOURCE_INIT(RimCurveNameConfig, "RimCurveNameGenerator");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimCurveNameConfig::RimCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder /*= nullptr*/)
: m_configHolder(configHolder)
{
CAF_PDM_InitObject("Curve Name Generator", "", "", "");
CAF_PDM_InitField(&m_isUsingAutoName, "IsUsingAutoName", true, "Generate Name Automatically", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_customName, "CustomCurveName", "Curve Name", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_autoName, "AutoCurveName", "Curve Name", "", "", "");
m_autoName.registerGetMethod(this, &RimCurveNameConfig::autoName);
m_autoName.registerSetMethod(this, &RimCurveNameConfig::setCustomName);
m_autoName.xmlCapability()->disableIO();
CVF_ASSERT(configHolder);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimCurveNameConfig::~RimCurveNameConfig()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimCurveNameConfig::isUsingAutoName() const
{
return m_isUsingAutoName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* RimCurveNameConfig::nameField()
{
if (isUsingAutoName())
{
return &m_autoName;
}
return &m_customName;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimCurveNameConfig::name() const
{
if (isUsingAutoName())
{
return m_autoName();
}
return m_customName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmUiGroup* RimCurveNameConfig::createUiGroup(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
caf::PdmUiGroup* nameGroup = uiOrdering.addNewGroup("Curve Name Configuration");
nameGroup->add(&m_isUsingAutoName);
return nameGroup;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCurveNameConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
if (changedField == &m_customName)
{
m_isUsingAutoName = false;
}
if (changedField == &m_isUsingAutoName && !isUsingAutoName())
{
m_customName = m_configHolder->createCurveAutoName();
m_customName.uiCapability()->updateConnectedEditors();
}
updateAllSettings();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimCurveNameConfig::autoName() const
{
return m_configHolder->createCurveAutoName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCurveNameConfig::setCustomName(const QString& name)
{
m_isUsingAutoName = false;
m_customName = name;
updateAllSettings();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCurveNameConfig::updateAllSettings()
{
m_isUsingAutoName.uiCapability()->updateConnectedEditors();
m_autoName.uiCapability()->updateConnectedEditors();
m_customName.uiCapability()->updateConnectedEditors();
Rim3dWellLogCurve* curve;
this->firstAncestorOrThisOfTypeAsserted(curve);
curve->updateConnectedEditors();
}
//==================================================================================================
///
///
//==================================================================================================
CAF_PDM_SOURCE_INIT(RimWellLogExtractionCurveNameConfig, "RimWellLogExtractionCurveNameGenerator");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimWellLogExtractionCurveNameConfig::RimWellLogExtractionCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder)
: RimCurveNameConfig(configHolder)
{
CAF_PDM_InitObject("Well Log Extraction Curve Name Generator", "", "", "");
CAF_PDM_InitField(&m_addCaseName, "AddCaseName", false, "Add Case Name To Auto Name", "", "", "");
CAF_PDM_InitField(&m_addProperty, "AddProperty", true, "Add Property Type To Auto Name", "", "", "");
CAF_PDM_InitField(&m_addWellName, "AddWellName", true, "Add Well Name To Auto Name", "", "", "");
CAF_PDM_InitField(&m_addTimestep, "AddTimeStep", true, "Add Time Step To Auto Name", "", "", "");
CAF_PDM_InitField(&m_addDate, "AddDate", true, "Add Date To Auto Name", "", "", "");
m_customName = "Extraction Curve";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmUiGroup* RimWellLogExtractionCurveNameConfig::createUiGroup(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
caf::PdmUiGroup* nameGroup = RimCurveNameConfig::createUiGroup(uiConfigName, uiOrdering);
nameGroup->add(&m_addCaseName);
nameGroup->add(&m_addProperty);
nameGroup->add(&m_addWellName);
nameGroup->add(&m_addTimestep);
nameGroup->add(&m_addDate);
return nameGroup;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimWellLogExtractionCurveNameConfig::addCaseName() const
{
return m_addCaseName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimWellLogExtractionCurveNameConfig::addProperty() const
{
return m_addProperty();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimWellLogExtractionCurveNameConfig::addWellName() const
{
return m_addWellName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimWellLogExtractionCurveNameConfig::addTimeStep() const
{
return m_addTimestep();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimWellLogExtractionCurveNameConfig::addDate() const
{
return m_addDate();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellLogExtractionCurveNameConfig::updateAllSettings()
{
m_addCaseName.uiCapability()->setUiReadOnly(!isUsingAutoName());
m_addProperty.uiCapability()->setUiReadOnly(!isUsingAutoName());
m_addWellName.uiCapability()->setUiReadOnly(!isUsingAutoName());
m_addTimestep.uiCapability()->setUiReadOnly(!isUsingAutoName());
m_addDate.uiCapability()->setUiReadOnly(!isUsingAutoName());
RimCurveNameConfig::updateAllSettings();
}
//==================================================================================================
///
///
//==================================================================================================
CAF_PDM_SOURCE_INIT(RimWellLogFileCurveNameConfig, "RimWellLogFileCurveNameGenerator");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimWellLogFileCurveNameConfig::RimWellLogFileCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder)
: RimCurveNameConfig(configHolder)
{
CAF_PDM_InitObject("Well Log File Curve Name Generator", "", "", "");
m_customName = "Las Curve";
}
//==================================================================================================
///
///
//==================================================================================================
CAF_PDM_SOURCE_INIT(RimWellLogRftCurveNameConfig, "RimWellLogRftCurveNameGenerator");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimWellLogRftCurveNameConfig::RimWellLogRftCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder)
: RimCurveNameConfig(configHolder)
{
CAF_PDM_InitObject("Well Log Rft Curve Name Generator", "", "", "");
m_customName = "Rft Curve";
}

View File

@ -0,0 +1,115 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2015- Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmProxyValueField.h"
//==================================================================================================
///
///
//==================================================================================================
class RimCurveNameConfigHolderInterface
{
public:
virtual QString createCurveAutoName() const = 0;
};
//==================================================================================================
///
///
//==================================================================================================
class RimCurveNameConfig : public caf::PdmObject
{
CAF_PDM_HEADER_INIT;
public:
RimCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder = nullptr);
virtual ~RimCurveNameConfig();
bool isUsingAutoName() const;
caf::PdmFieldHandle* nameField();
QString name() const;
virtual caf::PdmUiGroup* createUiGroup(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
QString autoName() const;
void setCustomName(const QString& name);
virtual void updateAllSettings();
protected:
caf::PdmField<bool> m_isUsingAutoName;
caf::PdmField<QString> m_customName;
caf::PdmProxyValueField<QString> m_autoName;
const RimCurveNameConfigHolderInterface* m_configHolder;
};
//==================================================================================================
///
///
//==================================================================================================
class RimWellLogExtractionCurveNameConfig : public RimCurveNameConfig
{
CAF_PDM_HEADER_INIT;
public:
RimWellLogExtractionCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder = nullptr);
virtual caf::PdmUiGroup* createUiGroup(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
bool addCaseName() const;
bool addProperty() const;
bool addWellName() const;
bool addTimeStep() const;
bool addDate() const;
protected:
virtual void updateAllSettings();
private:
caf::PdmField<bool> m_addCaseName;
caf::PdmField<bool> m_addProperty;
caf::PdmField<bool> m_addWellName;
caf::PdmField<bool> m_addTimestep;
caf::PdmField<bool> m_addDate;
};
//==================================================================================================
///
///
//==================================================================================================
class RimWellLogFileCurveNameConfig : public RimCurveNameConfig
{
CAF_PDM_HEADER_INIT;
public:
RimWellLogFileCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder = nullptr);
};
//==================================================================================================
///
///
//==================================================================================================
class RimWellLogRftCurveNameConfig : public RimCurveNameConfig
{
CAF_PDM_HEADER_INIT;
public:
RimWellLogRftCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder = nullptr);
};