From 4e83cff8a226ce5f7c271987473d0e20e9306496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A5l=20Hagen?= Date: Fri, 28 Aug 2015 14:25:14 +0200 Subject: [PATCH] Well log plots now contain one plot per trace --- ApplicationCode/CMakeLists.txt | 3 ++ .../ProjectDataModel/RimWellLogPlot.cpp | 2 + .../ProjectDataModel/RimWellLogPlot.h | 6 +-- .../UserInterface/RiuWellLogPlot.cpp | 40 ++++++++++++++++++- .../UserInterface/RiuWellLogPlot.h | 15 ++++++- .../UserInterface/RiuWellLogTracePlot.cpp | 35 ++++++++++++++++ .../UserInterface/RiuWellLogTracePlot.h | 38 ++++++++++++++++++ 7 files changed, 133 insertions(+), 6 deletions(-) create mode 100644 ApplicationCode/UserInterface/RiuWellLogTracePlot.cpp create mode 100644 ApplicationCode/UserInterface/RiuWellLogTracePlot.h diff --git a/ApplicationCode/CMakeLists.txt b/ApplicationCode/CMakeLists.txt index 6da4a2d275..2e8b9152fd 100644 --- a/ApplicationCode/CMakeLists.txt +++ b/ApplicationCode/CMakeLists.txt @@ -81,6 +81,8 @@ set( USER_INTERFACE_FILES UserInterface/RiuTreeViewEventFilter.h UserInterface/RiuWellLogPlot.cpp UserInterface/RiuWellLogPlot.h + UserInterface/RiuWellLogTracePlot.cpp + UserInterface/RiuWellLogTracePlot.h ) set( SOCKET_INTERFACE_FILES @@ -163,6 +165,7 @@ set ( QT_MOC_HEADERS UserInterface/RiuViewerCommands.h UserInterface/RiuTreeViewEventFilter.h UserInterface/RiuWellLogPlot.h + UserInterface/RiuWellLogTracePlot.h ) qt4_wrap_cpp( MOC_FILES_CPP ${QT_MOC_HEADERS} ) diff --git a/ApplicationCode/ProjectDataModel/RimWellLogPlot.cpp b/ApplicationCode/ProjectDataModel/RimWellLogPlot.cpp index 67a213d1d7..346b804415 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogPlot.cpp +++ b/ApplicationCode/ProjectDataModel/RimWellLogPlot.cpp @@ -106,4 +106,6 @@ void RimWellLogPlot::addTrace() RiuMainWindow::instance()->projectTreeView()->setExpanded(this, true); updateConnectedEditors(); + + m_viewer->update(*this); } diff --git a/ApplicationCode/ProjectDataModel/RimWellLogPlot.h b/ApplicationCode/ProjectDataModel/RimWellLogPlot.h index aecc1bebda..7424273e43 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogPlot.h +++ b/ApplicationCode/ProjectDataModel/RimWellLogPlot.h @@ -40,10 +40,11 @@ public: RimWellLogPlot(); virtual ~RimWellLogPlot(); - void addTrace(); - + caf::PdmChildArrayField traces; caf::PdmField showWindow; + void addTrace(); + protected: // Overridden PDM methods @@ -56,5 +57,4 @@ private: private: QPointer m_viewer; - caf::PdmChildArrayField traces; }; diff --git a/ApplicationCode/UserInterface/RiuWellLogPlot.cpp b/ApplicationCode/UserInterface/RiuWellLogPlot.cpp index 8264051b6b..472a79ba1e 100644 --- a/ApplicationCode/UserInterface/RiuWellLogPlot.cpp +++ b/ApplicationCode/UserInterface/RiuWellLogPlot.cpp @@ -19,12 +19,21 @@ #include "RiuWellLogPlot.h" +#include "RiuWellLogTracePlot.h" + +#include "RimWellLogPlot.h" +#include "RimWellLogPlotTrace.h" + +#include + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RiuWellLogPlot::RiuWellLogPlot(QWidget* parent) - : QwtPlot(parent) + : QWidget(parent) { + m_layout = new QHBoxLayout(this); + setLayout(m_layout); } //-------------------------------------------------------------------------------------------------- @@ -33,3 +42,32 @@ RiuWellLogPlot::RiuWellLogPlot(QWidget* parent) RiuWellLogPlot::~RiuWellLogPlot() { } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RiuWellLogPlot::update(const RimWellLogPlot& plot) +{ + clear(); + + for (size_t traceIdx = 0; traceIdx < plot.traces.size(); traceIdx++) + { + RiuWellLogTracePlot* tracePlot = new RiuWellLogTracePlot(this); + m_layout->addWidget(tracePlot); + m_children.append(tracePlot); + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RiuWellLogPlot::clear() +{ + for (int childIdx = 0; childIdx < m_children.size(); childIdx++) + { + m_layout->removeWidget(m_children[childIdx]); + delete m_children[childIdx]; + } + + m_children.clear(); +} diff --git a/ApplicationCode/UserInterface/RiuWellLogPlot.h b/ApplicationCode/UserInterface/RiuWellLogPlot.h index fa03916bc3..d6fddc2b7b 100644 --- a/ApplicationCode/UserInterface/RiuWellLogPlot.h +++ b/ApplicationCode/UserInterface/RiuWellLogPlot.h @@ -19,14 +19,19 @@ #pragma once -#include "qwt_plot.h" +#include +#include + +class RimWellLogPlot; +class RiuWellLogTracePlot; +class QHBoxLayout; //================================================================================================== // // RiuWellLogPlot // //================================================================================================== -class RiuWellLogPlot : public QwtPlot +class RiuWellLogPlot : public QWidget { Q_OBJECT @@ -34,5 +39,11 @@ public: RiuWellLogPlot(QWidget* parent = NULL); virtual ~RiuWellLogPlot(); + void update(const RimWellLogPlot& plot); + void clear(); + +private: + QHBoxLayout* m_layout; + QList m_children; }; diff --git a/ApplicationCode/UserInterface/RiuWellLogTracePlot.cpp b/ApplicationCode/UserInterface/RiuWellLogTracePlot.cpp new file mode 100644 index 0000000000..acf474a6ec --- /dev/null +++ b/ApplicationCode/UserInterface/RiuWellLogTracePlot.cpp @@ -0,0 +1,35 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2015- Statoil ASA +// Copyright (C) 2015- Ceetron Solutions AS +// +// ResInsight is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#include "RiuWellLogTracePlot.h" + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RiuWellLogTracePlot::RiuWellLogTracePlot(QWidget* parent) + : QwtPlot(parent) +{ +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RiuWellLogTracePlot::~RiuWellLogTracePlot() +{ +} diff --git a/ApplicationCode/UserInterface/RiuWellLogTracePlot.h b/ApplicationCode/UserInterface/RiuWellLogTracePlot.h new file mode 100644 index 0000000000..dabdf8eefc --- /dev/null +++ b/ApplicationCode/UserInterface/RiuWellLogTracePlot.h @@ -0,0 +1,38 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2015- Statoil ASA +// Copyright (C) 2015- Ceetron Solutions AS +// +// ResInsight is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "qwt_plot.h" + +//================================================================================================== +// +// RiuWellLogTracePlot +// +//================================================================================================== +class RiuWellLogTracePlot : public QwtPlot +{ + Q_OBJECT + +public: + RiuWellLogTracePlot(QWidget* parent = NULL); + virtual ~RiuWellLogTracePlot(); + +}; +