#3155 Implement grid lines settings for depth axis as well

* Done to "get away with" removing tick marks on all depth axes apart from the first track
This commit is contained in:
Gaute Lindkvist 2018-07-06 11:22:18 +02:00
parent 162d82f8b7
commit ca1f9506b1
8 changed files with 118 additions and 64 deletions

View File

@ -197,7 +197,7 @@ void RicNewWellBoreStabilityPlotFeature::createStabilityCurvesTrack(RimWellLogPl
stabilityCurvesTrack->setWidthScaleFactor(RimWellLogTrack::EXTRA_WIDE_TRACK);
stabilityCurvesTrack->setAutoScaleXEnabled(true);
stabilityCurvesTrack->setTickIntervals(0.5, 0.05);
stabilityCurvesTrack->enableGridLines(RimWellLogTrack::GRID_X_MAJOR_AND_MINOR);
stabilityCurvesTrack->setXAxisGridVisibility(RimWellLogPlot::AXIS_GRID_MAJOR_AND_MINOR);
stabilityCurvesTrack->setFormationWellPath(wellPath);
stabilityCurvesTrack->setFormationCase(geoMechView->geoMechCase());
stabilityCurvesTrack->setShowFormations(true);
@ -270,7 +270,7 @@ void RicNewWellBoreStabilityPlotFeature::createAnglesTrack(RimWellLogPlot* plot,
wellPathAnglesTrack->setWidthScaleFactor(RimWellLogTrack::NORMAL_TRACK);
wellPathAnglesTrack->setVisibleXRange(minValue, maxValue);
wellPathAnglesTrack->setTickIntervals(90.0, 30.0);
wellPathAnglesTrack->enableGridLines(RimWellLogTrack::GRID_X_MAJOR_AND_MINOR);
wellPathAnglesTrack->setXAxisGridVisibility(RimWellLogPlot::AXIS_GRID_MAJOR_AND_MINOR);
wellPathAnglesTrack->setFormationWellPath(wellPath);
wellPathAnglesTrack->setFormationCase(geoMechView->geoMechCase());
wellPathAnglesTrack->setShowFormations(true);

View File

@ -53,6 +53,15 @@ namespace caf {
setDefault(RimWellLogPlot::MEASURED_DEPTH);
}
template<>
void RimWellLogPlot::AxisGridEnum::setUp()
{
addItem(RimWellLogPlot::AXIS_GRID_NONE, "GRID_X_NONE", "No Grid Lines");
addItem(RimWellLogPlot::AXIS_GRID_MAJOR, "GRID_X_MAJOR", "Major Only");
addItem(RimWellLogPlot::AXIS_GRID_MAJOR_AND_MINOR, "GRID_X_MAJOR_AND_MINOR", "Major and Minor");
setDefault(RimWellLogPlot::AXIS_GRID_MAJOR);
}
} // End namespace caf
@ -78,6 +87,7 @@ RimWellLogPlot::RimWellLogPlot()
CAF_PDM_InitField(&m_minVisibleDepth, "MinimumDepth", 0.0, "Min", "", "", "");
CAF_PDM_InitField(&m_maxVisibleDepth, "MaximumDepth", 1000.0, "Max", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_depthAxisGridVisibility, "ShowDepthGridLines", "Show Grid Lines", "", "", "");
CAF_PDM_InitField(&m_isAutoScaleDepthEnabled, "AutoScaleDepthEnabled", true, "Auto Scale", "", "", "");
m_isAutoScaleDepthEnabled.uiCapability()->setUiHidden(true);
CAF_PDM_InitField(&m_showTitleInPlot, "ShowTitleInPlot", false, "Show Title", "", "", "");
@ -135,7 +145,8 @@ void RimWellLogPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
}
else if (changedField == &m_showTitleInPlot ||
changedField == &m_showTrackLegends ||
changedField == &m_trackLegendsHorizontal)
changedField == &m_trackLegendsHorizontal ||
changedField == &m_depthAxisGridVisibility)
{
updateTracks();
if (m_viewer) m_viewer->updateChildrenLayout();
@ -568,6 +579,7 @@ void RimWellLogPlot::uiOrderingForDepthAxis(caf::PdmUiOrdering& uiOrdering)
}
gridGroup->add(&m_minVisibleDepth);
gridGroup->add(&m_maxVisibleDepth);
gridGroup->add(&m_depthAxisGridVisibility);
}
//--------------------------------------------------------------------------------------------------
@ -830,6 +842,22 @@ QString RimWellLogPlot::depthPlotTitle() const
return depthTitle;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellLogPlot::enableDepthGridLines(AxisGridVisibility gridVisibility)
{
m_depthAxisGridVisibility = gridVisibility;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimWellLogPlot::AxisGridVisibility RimWellLogPlot::depthGridLinesVisibility() const
{
return m_depthAxisGridVisibility();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -52,8 +52,9 @@ public:
CONNECTION_NUMBER
};
enum AxisGridVisibility { AXIS_GRID_NONE, AXIS_GRID_MAJOR, AXIS_GRID_MAJOR_AND_MINOR };
typedef caf::AppEnum<AxisGridVisibility> AxisGridEnum;
public:
RimWellLogPlot();
@ -71,8 +72,10 @@ public:
RiaDefines::DepthUnitType depthUnit() const;
void setDepthUnit(RiaDefines::DepthUnitType depthUnit);
QString depthPlotTitle() const;
void enableDepthGridLines(AxisGridVisibility gridVisibility);
AxisGridVisibility depthGridLinesVisibility() const;
bool isPlotTitleVisible() const;
void setPlotTitleVisible(bool visible);
bool areTrackLegendsVisible() const;
@ -141,16 +144,16 @@ private:
private:
caf::PdmField<QString> m_userName;
caf::PdmField< caf::AppEnum< DepthTypeEnum > > m_depthType;
caf::PdmField< caf::AppEnum< RiaDefines::DepthUnitType > > m_depthUnit;
std::set<DepthTypeEnum> m_disabledDepthTypes;
caf::PdmChildArrayField<RimWellLogTrack*> m_tracks;
caf::PdmField< caf::AppEnum<DepthTypeEnum>> m_depthType;
caf::PdmField< caf::AppEnum<RiaDefines::DepthUnitType>> m_depthUnit;
std::set<RimWellLogPlot::DepthTypeEnum> m_disabledDepthTypes;
caf::PdmField<double> m_minVisibleDepth;
caf::PdmField<double> m_maxVisibleDepth;
caf::PdmField<AxisGridEnum> m_depthAxisGridVisibility;
caf::PdmField<bool> m_isAutoScaleDepthEnabled;
caf::PdmField<bool> m_showTitleInPlot;
caf::PdmField<bool> m_showTrackLegends;
caf::PdmField<bool> m_trackLegendsHorizontal;
@ -160,5 +163,4 @@ private:
friend class RiuWellLogPlot;
QPointer<RiuWellLogPlot> m_viewer;
};

View File

@ -114,15 +114,6 @@ namespace caf
addItem(RimWellLogTrack::EXTRA_WIDE_TRACK, "EXTRA_WIDE_TRACK", "Extra wide");
setDefault(RimWellLogTrack::NORMAL_TRACK);
}
template<>
void AppEnum< RimWellLogTrack::GridLines >::setUp()
{
addItem(RimWellLogTrack::GRID_X_NONE, "GRID_X_NONE", "No Gridlines");
addItem(RimWellLogTrack::GRID_X_MAJOR, "GRID_X_MAJOR", "Major Only");
addItem(RimWellLogTrack::GRID_X_MAJOR_AND_MINOR, "GRID_X_MAJOR_AND_MINOR", "Major and Minor");
setDefault(RimWellLogTrack::GRID_X_MAJOR);
}
}
@ -150,7 +141,7 @@ RimWellLogTrack::RimWellLogTrack()
CAF_PDM_InitField(&m_isLogarithmicScaleEnabled, "LogarithmicScaleX", false, "Logarithmic Scale", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_showXGridLines, "ShowXGridLines", "Show Grid Lines", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_xAxisGridVisibility, "ShowXGridLines", "Show Grid Lines", "", "", "");
CAF_PDM_InitField(&m_explicitTickIntervals, "ExplicitTickIntervals", false, "Manually Set Tick Intervals", "", "", "");
CAF_PDM_InitField(&m_majorTickInterval, "MajorTickIntervals", 0.0, "Major Tick Interval", "", "", "");
@ -274,7 +265,7 @@ void RimWellLogTrack::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
m_wellLogTrackPlotWidget->replot();
}
}
else if (changedField == &m_showXGridLines ||
else if (changedField == &m_xAxisGridVisibility ||
changedField == &m_majorTickInterval ||
changedField == &m_minorTickInterval)
{
@ -288,7 +279,7 @@ void RimWellLogTrack::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
m_isAutoScaleXEnabled = false;
bool emptyRange = std::abs(m_visibleXRangeMax() - m_visibleXRangeMin) < 1.0e-6 * std::max(1.0, std::max(m_visibleXRangeMax(), m_visibleXRangeMin()));
m_explicitTickIntervals.uiCapability()->setUiReadOnly(emptyRange);
m_showXGridLines.uiCapability()->setUiReadOnly(emptyRange);
m_xAxisGridVisibility.uiCapability()->setUiReadOnly(emptyRange);
updateEditors();
updateParentPlotLayout();
@ -477,16 +468,31 @@ void RimWellLogTrack::updateAxisAndGridTickIntervals()
m_wellLogTrackPlotWidget->setAutoTickIntervalCounts(xMajorTickIntervals, xMinorTickIntervals);
}
switch (m_showXGridLines())
switch (m_xAxisGridVisibility())
{
case GRID_X_NONE:
m_wellLogTrackPlotWidget->enableGridLines(false, false);
case RimWellLogPlot::AXIS_GRID_NONE:
m_wellLogTrackPlotWidget->enableXGridLines(false, false);
break;
case GRID_X_MAJOR:
m_wellLogTrackPlotWidget->enableGridLines(true, false);
case RimWellLogPlot::AXIS_GRID_MAJOR:
m_wellLogTrackPlotWidget->enableXGridLines(true, false);
break;
case GRID_X_MAJOR_AND_MINOR:
m_wellLogTrackPlotWidget->enableGridLines(true, true);
case RimWellLogPlot::AXIS_GRID_MAJOR_AND_MINOR:
m_wellLogTrackPlotWidget->enableXGridLines(true, true);
break;
}
RimWellLogPlot* plot = nullptr;
this->firstAncestorOrThisOfTypeAsserted(plot);
switch (plot->depthGridLinesVisibility())
{
case RimWellLogPlot::AXIS_GRID_NONE:
m_wellLogTrackPlotWidget->enableDepthGridLines(false, false);
break;
case RimWellLogPlot::AXIS_GRID_MAJOR:
m_wellLogTrackPlotWidget->enableDepthGridLines(true, false);
break;
case RimWellLogPlot::AXIS_GRID_MAJOR_AND_MINOR:
m_wellLogTrackPlotWidget->enableDepthGridLines(true, true);
break;
}
}
@ -705,7 +711,7 @@ void RimWellLogTrack::loadDataAndUpdate()
bool emptyRange = std::abs(m_visibleXRangeMax() - m_visibleXRangeMin) < 1.0e-6 * std::max(1.0, std::max(m_visibleXRangeMax(), m_visibleXRangeMin()));
m_explicitTickIntervals.uiCapability()->setUiReadOnly(emptyRange);
m_showXGridLines.uiCapability()->setUiReadOnly(emptyRange);
m_xAxisGridVisibility.uiCapability()->setUiReadOnly(emptyRange);
}
//--------------------------------------------------------------------------------------------------
@ -1032,9 +1038,9 @@ void RimWellLogTrack::setTickIntervals(double majorTickInterval, double minorTic
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellLogTrack::enableGridLines(GridLines gridLines)
void RimWellLogTrack::setXAxisGridVisibility(RimWellLogPlot::AxisGridVisibility gridLines)
{
m_showXGridLines = gridLines;
m_xAxisGridVisibility = gridLines;
}
//--------------------------------------------------------------------------------------------------
@ -1292,7 +1298,7 @@ void RimWellLogTrack::uiOrderingForXAxisSettings(caf::PdmUiOrdering& uiOrdering)
gridGroup->add(&m_isLogarithmicScaleEnabled);
gridGroup->add(&m_visibleXRangeMin);
gridGroup->add(&m_visibleXRangeMax);
gridGroup->add(&m_showXGridLines);
gridGroup->add(&m_xAxisGridVisibility);
gridGroup->add(&m_explicitTickIntervals);
gridGroup->add(&m_majorTickInterval);
gridGroup->add(&m_minorTickInterval);

View File

@ -71,7 +71,6 @@ public:
enum TrajectoryType { WELL_PATH, SIMULATION_WELL };
enum FormationSource { CASE, WELL_PICK_FILTER };
enum WidthScaleFactor { EXTRA_NARROW_TRACK = 2, NARROW_TRACK = 3, NORMAL_TRACK = 4, WIDE_TRACK = 6, EXTRA_WIDE_TRACK = 10 };
enum GridLines { GRID_X_NONE, GRID_X_MAJOR, GRID_X_MAJOR_AND_MINOR};
void setDescription(const QString& description);
bool isVisible();
@ -113,7 +112,7 @@ public:
void updateEditors();
void setVisibleXRange(double minValue, double maxValue);
void setTickIntervals(double majorTickInterval, double minorTickInterval);
void enableGridLines(GridLines gridLines);
void setXAxisGridVisibility(RimWellLogPlot::AxisGridVisibility gridLines);
void setShowFormations(bool on);
void setShowFormationLabels(bool on);
@ -179,7 +178,7 @@ private:
caf::PdmField<double> m_visibleXRangeMax;
caf::PdmField<bool> m_isAutoScaleXEnabled;
caf::PdmField<bool> m_isLogarithmicScaleEnabled;
caf::PdmField<caf::AppEnum<GridLines>> m_showXGridLines;
caf::PdmField<RimWellLogPlot::AxisGridEnum> m_xAxisGridVisibility;
caf::PdmField<bool> m_explicitTickIntervals;
caf::PdmField<double> m_majorTickInterval;
caf::PdmField<double> m_minorTickInterval;

View File

@ -493,7 +493,7 @@ void RiuWellLogPlot::updateChildrenLayout()
m_legends[tIdx]->setMaxColumns(legendColumns);
m_legends[tIdx]->show();
m_trackPlots[tIdx]->enableVerticalAxisLabelsAndTitle(numTracksAlreadyShown == 0);
m_trackPlots[tIdx]->enableDepthAxisLabelsAndTitle(numTracksAlreadyShown == 0);
numTracksAlreadyShown++;
}
else

View File

@ -1,4 +1,4 @@
/////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2015- Statoil ASA
// Copyright (C) 2015- Ceetron Solutions AS
@ -271,7 +271,7 @@ bool RiuWellLogTrack::isRimTrackVisible()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuWellLogTrack::enableVerticalAxisLabelsAndTitle(bool enable)
void RiuWellLogTrack::enableDepthAxisLabelsAndTitle(bool enable)
{
this->axisScaleDraw(QwtPlot::yLeft)->enableComponent(QwtAbstractScaleDraw::Ticks, enable);
this->axisScaleDraw(QwtPlot::yLeft)->enableComponent(QwtAbstractScaleDraw::Labels, enable);
@ -292,7 +292,7 @@ int RiuWellLogTrack::widthScaleFactor() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuWellLogTrack::enableGridLines(bool majorGridLines, bool minorGridLines)
void RiuWellLogTrack::enableXGridLines(bool majorGridLines, bool minorGridLines)
{
QwtPlotItemList plotItems = this->itemList(QwtPlotItem::Rtti_PlotGrid);
for (QwtPlotItem* plotItem : plotItems)
@ -306,6 +306,24 @@ void RiuWellLogTrack::enableGridLines(bool majorGridLines, bool minorGridLines)
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuWellLogTrack::enableDepthGridLines(bool majorGridLines, bool minorGridLines)
{
QwtPlotItemList plotItems = this->itemList(QwtPlotItem::Rtti_PlotGrid);
for (QwtPlotItem* plotItem : plotItems)
{
QwtPlotGrid* grid = static_cast<QwtPlotGrid*>(plotItem);
grid->setYAxis(QwtPlot::yLeft);
grid->enableY(majorGridLines);
grid->enableYMin(minorGridLines);
grid->setMajorPen(Qt::lightGray, 1.0, Qt::SolidLine);
grid->setMinorPen(Qt::lightGray, 1.0, Qt::DashLine);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -52,9 +52,10 @@ public:
void setXRange(double min, double max);
bool isRimTrackVisible();
void enableVerticalAxisLabelsAndTitle(bool enable);
void enableDepthAxisLabelsAndTitle(bool enable);
int widthScaleFactor() const;
void enableGridLines(bool majorGridLines, bool minorGridLines);
void enableXGridLines(bool majorGridLines, bool minorGridLines);
void enableDepthGridLines(bool majorGridLines, bool minorGridLines);
void setMajorAndMinorTickIntervals(double majorTickInterval, double minorTickInterval);
void setAutoTickIntervalCounts(int maxMajorTickIntervalCount, int maxMinorTickIntervalCount);
double getCurrentMajorTickInterval() const;