From 84440c0ca5a045a89db58de9d27e7dad2e03a424 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Fri, 20 Oct 2017 10:00:16 +0200 Subject: [PATCH] #1977 Curve Calculator : Add RiaSummaryTools --- .../Application/Tools/CMakeLists_files.cmake | 2 + .../Application/Tools/RiaSummaryTools.cpp | 63 +++++++++++++++++++ .../Application/Tools/RiaSummaryTools.h | 33 ++++++++++ 3 files changed, 98 insertions(+) create mode 100644 ApplicationCode/Application/Tools/RiaSummaryTools.cpp create mode 100644 ApplicationCode/Application/Tools/RiaSummaryTools.h diff --git a/ApplicationCode/Application/Tools/CMakeLists_files.cmake b/ApplicationCode/Application/Tools/CMakeLists_files.cmake index 92241b4998..9644ba75da 100644 --- a/ApplicationCode/Application/Tools/CMakeLists_files.cmake +++ b/ApplicationCode/Application/Tools/CMakeLists_files.cmake @@ -17,6 +17,7 @@ ${CEE_CURRENT_LIST_DIR}RiaProjectModifier.h ${CEE_CURRENT_LIST_DIR}RiaRegressionTest.h ${CEE_CURRENT_LIST_DIR}RiaImportEclipseCaseTools.h ${CEE_CURRENT_LIST_DIR}RiaQDateTimeTools.h +${CEE_CURRENT_LIST_DIR}RiaSummaryTools.h ) set (SOURCE_GROUP_SOURCE_FILES @@ -31,6 +32,7 @@ ${CEE_CURRENT_LIST_DIR}RiaProjectModifier.cpp ${CEE_CURRENT_LIST_DIR}RiaRegressionTest.cpp ${CEE_CURRENT_LIST_DIR}RiaImportEclipseCaseTools.cpp ${CEE_CURRENT_LIST_DIR}RiaQDateTimeTools.cpp +${CEE_CURRENT_LIST_DIR}RiaSummaryTools.cpp ) list(APPEND CODE_HEADER_FILES diff --git a/ApplicationCode/Application/Tools/RiaSummaryTools.cpp b/ApplicationCode/Application/Tools/RiaSummaryTools.cpp new file mode 100644 index 0000000000..67818afafb --- /dev/null +++ b/ApplicationCode/Application/Tools/RiaSummaryTools.cpp @@ -0,0 +1,63 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2017 Statoil ASA +// +// 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 "RiaSummaryTools.h" + +#include "RiaApplication.h" + +#include "RifEclipseSummaryAddress.h" + +#include "RimMainPlotCollection.h" +#include "RimProject.h" +#include "RimSummaryCurve.h" +#include "RimSummaryPlot.h" +#include "RimSummaryPlotCollection.h" + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimSummaryPlotCollection* RiaSummaryTools::summaryPlotCollection() +{ + RimProject* project = RiaApplication::instance()->project(); + + return project->mainPlotCollection()->summaryPlotCollection(); +} + +//-------------------------------------------------------------------------------------------------- +/// Update the summary curves referencing this curve, as the curve is identified by the name +//-------------------------------------------------------------------------------------------------- +void RiaSummaryTools::notifyCalculatedCurveNameHasChanged(const QString& previousCurveName, const QString& currentCurveName) +{ + RimSummaryPlotCollection* summaryPlotColl = RiaSummaryTools::summaryPlotCollection(); + + for (RimSummaryPlot* plot : summaryPlotColl->summaryPlots()) + { + for (RimSummaryCurve* curve : plot->summaryCurves()) + { + RifEclipseSummaryAddress adr = curve->summaryAddress(); + if (adr.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED) + { + if (adr.quantityName() == previousCurveName.toStdString()) + { + RifEclipseSummaryAddress updatedAdr = RifEclipseSummaryAddress::calculatedCurveAddress(currentCurveName.toStdString()); + curve->setSummaryAddress(updatedAdr); + } + } + } + } +} diff --git a/ApplicationCode/Application/Tools/RiaSummaryTools.h b/ApplicationCode/Application/Tools/RiaSummaryTools.h new file mode 100644 index 0000000000..44348e20d6 --- /dev/null +++ b/ApplicationCode/Application/Tools/RiaSummaryTools.h @@ -0,0 +1,33 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2017 Statoil ASA +// +// 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 + +class RimSummaryPlotCollection; + +class QString; + +//================================================================================================== +// +//================================================================================================== +class RiaSummaryTools +{ +public: + static RimSummaryPlotCollection* summaryPlotCollection(); + static void notifyCalculatedCurveNameHasChanged(const QString& previousCurveName, const QString& currentCurveName); +};