#853 Support zooming when two y-axis are present

This commit is contained in:
Magne Sjaastad
2016-10-13 09:33:50 +02:00
parent a816454494
commit 30bef2bb17
5 changed files with 106 additions and 70 deletions

View File

@@ -57,7 +57,7 @@ namespace caf
void caf::AppEnum< RimDefines::PlotAxis >::setUp()
{
addItem(RimDefines::PLOT_AXIS_LEFT, "PLOT_AXIS_LEFT", "Left");
//addItem(RimDefines::PLOT_AXIS_RIGHT, "PLOT_AXIS_RIGHT", "Right");
addItem(RimDefines::PLOT_AXIS_RIGHT, "PLOT_AXIS_RIGHT", "Right");
setDefault(RimDefines::PLOT_AXIS_LEFT);
}

View File

@@ -264,18 +264,19 @@ QWidget* RimSummaryPlot::viewer()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::setZoomWindow(const QRectF& zoomWindow)
void RimSummaryPlot::setZoomWindow(const QwtInterval& leftAxis, const QwtInterval& rightAxis, const QwtInterval& timeAxis)
{
if(!zoomWindow.isEmpty())
{
m_leftYAxisProperties->visibleRangeMax = zoomWindow.bottom();
m_leftYAxisProperties->visibleRangeMin = zoomWindow.top();
m_leftYAxisProperties->updateConnectedEditors();
m_leftYAxisProperties->visibleRangeMax = leftAxis.maxValue();
m_leftYAxisProperties->visibleRangeMin = leftAxis.minValue();
m_leftYAxisProperties->updateConnectedEditors();
m_timeAxisProperties->setVisibleRangeMin(zoomWindow.left());
m_timeAxisProperties->setVisibleRangeMax(zoomWindow.right());
m_timeAxisProperties->updateConnectedEditors();
}
m_rightYAxisProperties->visibleRangeMax = rightAxis.maxValue();
m_rightYAxisProperties->visibleRangeMin = rightAxis.minValue();
m_rightYAxisProperties->updateConnectedEditors();
m_timeAxisProperties->setVisibleRangeMin(timeAxis.minValue());
m_timeAxisProperties->setVisibleRangeMax(timeAxis.maxValue());
m_timeAxisProperties->updateConnectedEditors();
disableAutoZoom();
}
@@ -320,10 +321,10 @@ void RimSummaryPlot::zoomAll()
}
m_qwtPlot->replot();
this->setZoomWindow(m_qwtPlot->currentVisibleWindow());
}
updateZoomFromQwt();
m_isAutoZoom = true;
}
@@ -423,10 +424,9 @@ void RimSummaryPlot::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering
{
uiTreeOrdering.add(&m_timeAxisProperties);
uiTreeOrdering.add(&m_leftYAxisProperties);
//uiTreeOrdering.add(&m_rightYAxisProperties);
uiTreeOrdering.add(&m_rightYAxisProperties);
uiTreeOrdering.add(&m_curveFilters);
uiTreeOrdering.add(&m_curves);
uiTreeOrdering.setForgetRemainingFields(true);
}
//--------------------------------------------------------------------------------------------------
@@ -464,16 +464,40 @@ void RimSummaryPlot::updateZoomInQwt()
}
else
{
QRectF visibleWindow;
visibleWindow.setBottom(m_leftYAxisProperties->visibleRangeMin());
visibleWindow.setTop(m_leftYAxisProperties->visibleRangeMax());
visibleWindow.setLeft(m_timeAxisProperties->visibleRangeMin());
visibleWindow.setRight(m_timeAxisProperties->visibleRangeMax());
m_qwtPlot->setZoomWindow(visibleWindow);
setZoomIntervalsInQwtPlot();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::setZoomIntervalsInQwtPlot()
{
QwtInterval left, right, time;
left.setMinValue(m_leftYAxisProperties->visibleRangeMin());
left.setMaxValue(m_leftYAxisProperties->visibleRangeMax());
right.setMinValue(m_rightYAxisProperties->visibleRangeMin());
right.setMaxValue(m_rightYAxisProperties->visibleRangeMax());
time.setMinValue(m_timeAxisProperties->visibleRangeMin());
time.setMaxValue(m_timeAxisProperties->visibleRangeMax());
m_qwtPlot->setZoomWindow(left, right, time);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::updateZoomFromQwt()
{
if (!m_qwtPlot) return;
QwtInterval left, right, time;
m_qwtPlot->currentVisibleWindow(&left, &right, &time);
setZoomWindow(left, right, time);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -40,6 +40,7 @@ class RimSummaryTimeAxisProperties;
class PdmUiTreeOrdering;
class QwtPlotCurve;
class QwtInterval;
//==================================================================================================
///
@@ -66,12 +67,16 @@ public:
QWidget* viewer();
void setZoomWindow(const QRectF& zoomWindow);
virtual void zoomAll() override;
void updateZoomInQwt();
void disableAutoZoom();
void updateAxes();
virtual void zoomAll() override;
void setZoomWindow(const QwtInterval& leftAxis,
const QwtInterval& rightAxis,
const QwtInterval& timeAxis);
void updateZoomInQwt();
void updateZoomFromQwt();
void disableAutoZoom();
bool isLogarithmicScaleEnabled(RimDefines::PlotAxis plotAxis) const;
protected:
@@ -94,6 +99,7 @@ private:
std::vector<RimSummaryCurve*> curvesForAxis(RimDefines::PlotAxis plotAxis) const;
void updateTimeAxis();
void setZoomIntervalsInQwtPlot();
private: