mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3097 Optionally add plot title to the plot itself
This commit is contained in:
parent
ad4e0bccc5
commit
f0bd7c726a
@ -65,6 +65,23 @@ void RimViewWindow::removeMdiWindowFromMdiArea()
|
||||
if ( m_windowController() ) m_windowController->removeWindowFromMDI();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimViewWindow::windowTitle()
|
||||
{
|
||||
if (this->userDescriptionField())
|
||||
{
|
||||
caf::PdmUiFieldHandle* uiFieldHandle = this->userDescriptionField()->uiCapability();
|
||||
if (uiFieldHandle)
|
||||
{
|
||||
QVariant v = uiFieldHandle->uiValue();
|
||||
return v.toString();
|
||||
}
|
||||
}
|
||||
return QString("");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -168,15 +185,7 @@ void RimViewWindow::updateMdiWindowTitle()
|
||||
{
|
||||
if ( viewWidget() )
|
||||
{
|
||||
if ( this->userDescriptionField() )
|
||||
{
|
||||
caf::PdmUiFieldHandle* uiFieldHandle = this->userDescriptionField()->uiCapability();
|
||||
if ( uiFieldHandle )
|
||||
{
|
||||
QVariant v = uiFieldHandle->uiValue();
|
||||
viewWidget()->setWindowTitle(v.toString());
|
||||
}
|
||||
}
|
||||
viewWidget()->setWindowTitle(windowTitle());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -69,6 +69,7 @@ protected:
|
||||
///////// Interface for the Window controller
|
||||
friend class RimMdiWindowController;
|
||||
|
||||
QString windowTitle();
|
||||
virtual QWidget* createViewWidget(QWidget* mainWindowParent) = 0;
|
||||
virtual void updateViewWidgetAfterCreation() {};
|
||||
virtual void updateMdiWindowTitle(); // Has real default implementation
|
||||
|
@ -79,6 +79,7 @@ RimWellLogPlot::RimWellLogPlot()
|
||||
CAF_PDM_InitField(&m_maxVisibleDepth, "MaximumDepth", 1000.0, "Max", "", "", "");
|
||||
CAF_PDM_InitField(&m_isAutoScaleDepthEnabled, "AutoScaleDepthEnabled", true, "Auto Scale", "", "", "");
|
||||
m_isAutoScaleDepthEnabled.uiCapability()->setUiHidden(true);
|
||||
CAF_PDM_InitField(&m_showTitleInPlot, "ShowTitleInPlot", true, "Show Title in Plot", "", "", "");
|
||||
CAF_PDM_InitField(&m_showTrackLegends, "ShowTrackLegends", true, "Show Legends", "", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_tracks, "Tracks", "", "", "", "");
|
||||
@ -113,6 +114,12 @@ void RimWellLogPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
|
||||
|
||||
m_isAutoScaleDepthEnabled = false;
|
||||
}
|
||||
else if (changedField == &m_showTitleInPlot ||
|
||||
changedField == &m_showTrackLegends)
|
||||
{
|
||||
updateTracks();
|
||||
if (m_viewer) m_viewer->updateChildrenLayout();
|
||||
}
|
||||
else if (changedField == &m_isAutoScaleDepthEnabled)
|
||||
{
|
||||
updateDepthZoom();
|
||||
@ -121,8 +128,7 @@ void RimWellLogPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
|
||||
{
|
||||
updateMdiWindowTitle();
|
||||
}
|
||||
|
||||
if ( changedField == &m_depthType )
|
||||
else if ( changedField == &m_depthType )
|
||||
{
|
||||
RimWellAllocationPlot* wellAllocPlot;
|
||||
firstAncestorOrThisOfType(wellAllocPlot);
|
||||
@ -134,18 +140,12 @@ void RimWellLogPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
|
||||
updateDepthZoom();
|
||||
}
|
||||
}
|
||||
if ( changedField == &m_depthUnit)
|
||||
else if ( changedField == &m_depthUnit)
|
||||
{
|
||||
updateTracks();
|
||||
updateDepthZoom();
|
||||
}
|
||||
|
||||
if ( changedField == &m_showTrackLegends)
|
||||
{
|
||||
updateTracks();
|
||||
if (m_viewer) m_viewer->updateChildrenLayout();
|
||||
}
|
||||
|
||||
RimWellRftPlot* rftPlot(nullptr);
|
||||
this->firstAncestorOrThisOfType(rftPlot);
|
||||
|
||||
@ -583,6 +583,7 @@ void RimWellLogPlot::uiOrderingForPlot(caf::PdmUiOrdering& uiOrdering)
|
||||
uiOrdering.add(&m_depthUnit);
|
||||
}
|
||||
|
||||
uiOrdering.add(&m_showTitleInPlot);
|
||||
uiOrdering.add(&m_showTrackLegends);
|
||||
}
|
||||
|
||||
@ -615,8 +616,8 @@ void RimWellLogPlot::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
||||
void RimWellLogPlot::onLoadDataAndUpdate()
|
||||
{
|
||||
updateMdiWindowVisibility();
|
||||
|
||||
updateTracks();
|
||||
updatePlotTitle();
|
||||
updateTracks();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -834,6 +835,14 @@ QString RimWellLogPlot::depthPlotTitle() const
|
||||
return depthTitle;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimWellLogPlot::isPlotTitleVisible() const
|
||||
{
|
||||
return m_showTitleInPlot();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -903,3 +912,14 @@ void RimWellLogPlot::updateDisabledDepthTypes()
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimWellLogPlot::updatePlotTitle()
|
||||
{
|
||||
if (m_viewer)
|
||||
{
|
||||
m_viewer->setPlotTitle(this->windowTitle());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -70,6 +70,7 @@ public:
|
||||
|
||||
|
||||
QString depthPlotTitle() const;
|
||||
bool isPlotTitleVisible() const;
|
||||
bool isTrackLegendsVisible() const;
|
||||
void setTrackLegendsVisible(bool doShow);
|
||||
|
||||
@ -131,7 +132,7 @@ private:
|
||||
void detachAllCurves();
|
||||
|
||||
void updateDisabledDepthTypes();
|
||||
|
||||
void updatePlotTitle();
|
||||
public: // Needed by RiuWellAllocation Plot
|
||||
// RimViewWindow overrides
|
||||
|
||||
@ -150,6 +151,7 @@ private:
|
||||
caf::PdmField<double> m_minVisibleDepth;
|
||||
caf::PdmField<double> m_maxVisibleDepth;
|
||||
caf::PdmField<bool> m_isAutoScaleDepthEnabled;
|
||||
caf::PdmField<bool> m_showTitleInPlot;
|
||||
caf::PdmField<bool> m_showTrackLegends;
|
||||
|
||||
double m_minAvailableDepth;
|
||||
|
@ -36,9 +36,9 @@
|
||||
#include <QFocusEvent>
|
||||
#include <QHBoxLayout>
|
||||
#include <QMdiSubWindow>
|
||||
#include <QMenu>
|
||||
#include <QScrollBar>
|
||||
#include <QTimer>
|
||||
#include <QMenu>
|
||||
|
||||
#include <math.h>
|
||||
|
||||
@ -57,6 +57,12 @@ RiuWellLogPlot::RiuWellLogPlot(RimWellLogPlot* plotDefinition, QWidget* parent)
|
||||
|
||||
setAutoFillBackground(true);
|
||||
|
||||
m_plotTitle = new QLabel("PLOT TITLE HERE", this);
|
||||
QFont font = m_plotTitle->font();
|
||||
font.setPointSize(12);
|
||||
font.setBold(true);
|
||||
m_plotTitle->setFont(font);
|
||||
m_plotTitle->hide();
|
||||
m_scrollBar = new QScrollBar(this);
|
||||
m_scrollBar->setOrientation(Qt::Vertical);
|
||||
m_scrollBar->setVisible(true);
|
||||
@ -201,6 +207,16 @@ void RiuWellLogPlot::setDepthZoomAndReplot(double minDepth, double maxDepth)
|
||||
updateScrollBar(minDepth, maxDepth);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuWellLogPlot::setPlotTitle(const QString& plotTitle)
|
||||
{
|
||||
m_plotTitle->setText(plotTitle);
|
||||
m_plotTitle->setGeometry(0, 0, m_plotTitle->sizeHint().width(), m_plotTitle->sizeHint().height());
|
||||
this->updateChildrenLayout();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -326,6 +342,12 @@ void RiuWellLogPlot::placeChildWidgets(int height, int width)
|
||||
}
|
||||
}
|
||||
|
||||
int titleHeight = 0;
|
||||
if (m_plotTitle && m_plotTitle->isVisible())
|
||||
{
|
||||
titleHeight = m_plotTitle->height() + 10;
|
||||
}
|
||||
|
||||
int trackHeight = height - maxLegendHeight;
|
||||
int trackX = 0;
|
||||
|
||||
@ -345,15 +367,18 @@ void RiuWellLogPlot::placeChildWidgets(int height, int width)
|
||||
--trackWidthExtra;
|
||||
}
|
||||
int realLegendWidth = std::max(realTrackWidth, m_legends[tIdx]->sizeHint().width());
|
||||
m_legends[tIdx]->setGeometry(trackX, 0, realLegendWidth, maxLegendHeight);
|
||||
m_trackPlots[tIdx]->setGeometry(trackX, maxLegendHeight, realTrackWidth, trackHeight);
|
||||
m_legends[tIdx]->setGeometry(trackX, titleHeight, realLegendWidth, maxLegendHeight);
|
||||
m_trackPlots[tIdx]->setGeometry(trackX, titleHeight + maxLegendHeight, realTrackWidth, trackHeight);
|
||||
|
||||
trackX += realTrackWidth;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_scrollBar->isVisible()) m_scrollBar->setGeometry(trackX, maxLegendHeight, scrollBarWidth, trackHeight);
|
||||
if (m_scrollBar->isVisible())
|
||||
{
|
||||
m_scrollBar->setGeometry(trackX, titleHeight + maxLegendHeight, m_scrollBar->sizeHint().width(), trackHeight);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -361,6 +386,17 @@ void RiuWellLogPlot::placeChildWidgets(int height, int width)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuWellLogPlot::updateChildrenLayout()
|
||||
{
|
||||
if (m_plotDefinition && m_plotDefinition->isPlotTitleVisible())
|
||||
{
|
||||
m_plotTitle->setGeometry(0, 0, m_plotTitle->sizeHint().width(), m_plotTitle->sizeHint().height());
|
||||
m_plotTitle->show();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_plotTitle->hide();
|
||||
}
|
||||
|
||||
|
||||
int trackCount = m_trackPlots.size();
|
||||
for (int tIdx = 0; tIdx < trackCount; ++tIdx)
|
||||
{
|
||||
|
@ -30,9 +30,9 @@
|
||||
class RimWellLogPlot;
|
||||
class RiuWellLogTrack;
|
||||
|
||||
class QHBoxLayout;
|
||||
class QScrollBar;
|
||||
class QFocusEvent;
|
||||
class QLabel;
|
||||
class QScrollBar;
|
||||
class QwtLegend;
|
||||
|
||||
//==================================================================================================
|
||||
@ -56,8 +56,9 @@ public:
|
||||
void removeTrackPlot(RiuWellLogTrack* trackPlot);
|
||||
|
||||
void setDepthZoomAndReplot(double minDepth, double maxDepth);
|
||||
void setPlotTitle(const QString& plotTitle);
|
||||
|
||||
public slots:
|
||||
public slots:
|
||||
void updateChildrenLayout();
|
||||
|
||||
protected:
|
||||
@ -77,7 +78,7 @@ private slots:
|
||||
void scheduleUpdateChildrenLayout();
|
||||
|
||||
private:
|
||||
QHBoxLayout* m_layout;
|
||||
QLabel* m_plotTitle;
|
||||
QScrollBar* m_scrollBar;
|
||||
QList<QPointer<QwtLegend> > m_legends;
|
||||
QList<QPointer<RiuWellLogTrack> > m_trackPlots;
|
||||
|
Loading…
Reference in New Issue
Block a user