#1467 Fix how coordinates are displayed in property editor for well path completions

This commit is contained in:
Bjørnar Grip Fjær 2017-05-10 17:37:50 +02:00
parent b81150829a
commit f78b4db16c
2 changed files with 31 additions and 3 deletions

View File

@ -32,9 +32,14 @@ RimWellPathCompletion::RimWellPathCompletion()
{
CAF_PDM_InitObject("WellPathCompletion", ":/Well.png", "", "");
CAF_PDM_InitFieldNoDefault(&m_coordinates, "Coordinates", "Coordinates", "", "", "");
m_coordinates.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_measuredDepths, "MeasuredDepth", "MeasuredDepth", "", "", "");
m_measuredDepths.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
m_measuredDepths.uiCapability()->setUiHidden(true);
m_name.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_displayCoordinates, "DisplayCoordinates", "Coordinates", "", "", "");
m_displayCoordinates.registerGetMethod(this, &RimWellPathCompletion::displayCoordinates);
m_displayCoordinates.uiCapability()->setUiReadOnly(true);
}
@ -77,6 +82,25 @@ void RimWellPathCompletion::fieldChangedByUi(const caf::PdmFieldHandle* changedF
void RimWellPathCompletion::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
caf::PdmUiGroup* geometryGroup = uiOrdering.addNewGroup("Geometry");
geometryGroup->add(&m_coordinates);
geometryGroup->add(&m_measuredDepths);
geometryGroup->add(&m_displayCoordinates);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimWellPathCompletion::displayCoordinates() const
{
CVF_ASSERT(m_coordinates().size() == m_measuredDepths().size());
std::vector<QString> displayValues;
displayValues.push_back(QString("X\tY\tZ\tMD"));
for (size_t i = 0; i < m_coordinates().size(); i++)
{
const cvf::Vec3d& coords = m_coordinates()[i];
const double& measuredDepth = m_measuredDepths()[i];
displayValues.push_back(QString("%1\t%2\t%3\t%4\t").arg(coords.x()).arg(coords.y()).arg(coords.z()).arg(measuredDepth));
}
return displayValues;
}

View File

@ -31,6 +31,7 @@
#include "cafPdmFieldCvfColor.h"
#include "cafPdmChildArrayField.h"
#include "cafPdmFieldCvfVec3d.h"
#include "cafPdmProxyValueField.h"
#include "cvfBase.h"
#include "cvfObject.h"
@ -57,6 +58,9 @@ public:
std::vector< cvf::Vec3d > coordinates() { return m_coordinates(); }
std::vector< double > measuredDepths() { return m_measuredDepths(); }
private:
std::vector<QString> displayCoordinates() const;
caf::PdmField< std::vector< cvf::Vec3d> > m_coordinates;
caf::PdmField< std::vector< double > > m_measuredDepths;
caf::PdmProxyValueField< std::vector<QString> > m_displayCoordinates;
};