#792 Summary: Added storing of visible display window based on zoom and pan

This commit is contained in:
Magne Sjaastad 2016-07-05 14:58:42 +02:00
parent b8615f0ebc
commit 2e8c4ac211
5 changed files with 51 additions and 3 deletions

View File

@ -32,6 +32,8 @@
#include "cvfColor3.h"
#include <QDateTime>
#include <QRectF>
#include "qwt_plot_renderer.h"
@ -54,6 +56,8 @@ RimSummaryPlot::RimSummaryPlot()
CAF_PDM_InitFieldNoDefault(&m_curves, "SummaryCurves", "", "", "", "");
m_curves.uiCapability()->setUiHidden(true);
CAF_PDM_InitField(&m_visibleWindow, "VisibleWindow", std::vector<float>(), "Visible Display Window", "", "", "");
m_visibleWindow.uiCapability()->setUiHidden(true);
}
//--------------------------------------------------------------------------------------------------
@ -217,6 +221,20 @@ void RimSummaryPlot::setupBeforeSave()
{
this->setMdiWindowGeometry(RiaApplication::instance()->mainPlotWindow()->windowGeometryForViewer(m_qwtPlot));
}
QRectF visibleWindow = m_qwtPlot->currentVisibleWindow();
if (!visibleWindow.isEmpty())
{
//QRectF(qreal left, qreal top, qreal width, qreal height);
std::vector<float> window;
window.push_back(visibleWindow.left());
window.push_back(visibleWindow.top());
window.push_back(visibleWindow.width());
window.push_back(visibleWindow.height());
m_visibleWindow = window;
}
}
}
@ -261,7 +279,12 @@ void RimSummaryPlot::loadDataAndUpdate()
this->updateYAxisUnit();
// Todo: Update zoom
if (m_visibleWindow().size() == 4)
{
QRectF visibleWindow(m_visibleWindow()[0], m_visibleWindow()[1], m_visibleWindow()[2], m_visibleWindow()[3]);
m_qwtPlot->setZoomWindow(visibleWindow);
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -79,6 +79,7 @@ private:
caf::PdmField<QString> m_userName;
caf::PdmChildArrayField<RimSummaryCurve*> m_curves;
caf::PdmChildArrayField<RimSummaryCurveFilter*> m_curveFilters;
caf::PdmField<std::vector<float> > m_visibleWindow;
QPointer<RiuSummaryQwtPlot> m_qwtPlot;
};

View File

@ -50,7 +50,6 @@
#include "RimTools.h"
#include "RimTreeViewStateSerializer.h"
#include "RimViewWindow.h"
#include "RimSummaryPlot.h"
#include "RimWellPathImport.h"
#include "RiuDragDrop.h"
@ -60,7 +59,6 @@
#include "RiuProjectPropertyView.h"
#include "RiuResultInfoPanel.h"
#include "RiuResultQwtPlot.h"
#include "RiuSummaryQwtPlot.h"
#include "RiuToolTipMenu.h"
#include "RiuTreeViewEventFilter.h"
#include "RiuViewer.h"

View File

@ -106,6 +106,29 @@ void RiuSummaryQwtPlot::zoomAll()
zoomer->setZoomBase(true);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QRectF RiuSummaryQwtPlot::currentVisibleWindow() const
{
QRectF scaleRect;
scaleRect.setLeft(axisScaleDiv(xBottom).lowerBound());
scaleRect.setRight(axisScaleDiv(xBottom).upperBound());
scaleRect.setBottom(axisScaleDiv(yLeft).upperBound());
scaleRect.setTop(axisScaleDiv(yLeft).lowerBound());
return scaleRect;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuSummaryQwtPlot::setZoomWindow(const QRectF& zoomWindow)
{
zoomer->zoom(zoomWindow);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -44,6 +44,9 @@ public:
void setYAxisTitle(const QString& title);
void zoomAll();
QRectF currentVisibleWindow() const;
void setZoomWindow(const QRectF& zoomWindow);
protected:
virtual bool eventFilter(QObject* watched, QEvent* event);