From b72ce60379820724baeb45186f94af300a03af5f Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Tue, 14 Nov 2017 11:11:36 +0100 Subject: [PATCH] #2089 Cross Plot : Add new cross plot curve feature --- .../CMakeLists_files.cmake | 2 + .../RicNewSummaryCrossPlotCurveFeature.cpp | 110 ++++++++++++++++++ .../RicNewSummaryCrossPlotCurveFeature.h | 40 +++++++ .../RimContextCommandBuilder.cpp | 2 + 4 files changed, 154 insertions(+) create mode 100644 ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryCrossPlotCurveFeature.cpp create mode 100644 ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryCrossPlotCurveFeature.h diff --git a/ApplicationCode/Commands/SummaryPlotCommands/CMakeLists_files.cmake b/ApplicationCode/Commands/SummaryPlotCommands/CMakeLists_files.cmake index 54ffa552e6..201c2172e3 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/CMakeLists_files.cmake +++ b/ApplicationCode/Commands/SummaryPlotCommands/CMakeLists_files.cmake @@ -32,6 +32,7 @@ ${CEE_CURRENT_LIST_DIR}RicEditSummaryCurveCalculationFeature.h ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCalculatorDialog.h ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCalculatorEditor.h ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCalculator.h +${CEE_CURRENT_LIST_DIR}RicNewSummaryCrossPlotCurveFeature.h ) set (SOURCE_GROUP_SOURCE_FILES @@ -61,6 +62,7 @@ ${CEE_CURRENT_LIST_DIR}RicEditSummaryCurveCalculationFeature.cpp ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCalculatorDialog.cpp ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCalculatorEditor.cpp ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCalculator.cpp +${CEE_CURRENT_LIST_DIR}RicNewSummaryCrossPlotCurveFeature.cpp ) list(APPEND CODE_HEADER_FILES diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryCrossPlotCurveFeature.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryCrossPlotCurveFeature.cpp new file mode 100644 index 0000000000..9e806f53ac --- /dev/null +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryCrossPlotCurveFeature.cpp @@ -0,0 +1,110 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// 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 "RicNewSummaryCrossPlotCurveFeature.h" + +#include "RiaApplication.h" + +#include "RimMainPlotCollection.h" +#include "RimOilField.h" +#include "RimProject.h" +#include "RimSummaryCaseMainCollection.h" +#include "RimSummaryCrossPlotCollection.h" +#include "RimSummaryCurve.h" +#include "RimSummaryPlot.h" +#include "RimSummaryPlotCollection.h" + +#include "RiuMainPlotWindow.h" + +#include "WellLogCommands/RicWellLogPlotCurveFeatureImpl.h" + +#include "cafSelectionManager.h" + +#include + + +CAF_CMD_SOURCE_INIT(RicNewSummaryCrossPlotCurveFeature, "RicNewSummaryCrossPlotCurveFeature"); + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RicNewSummaryCrossPlotCurveFeature::isCommandEnabled() +{ + return (selectedSummaryPlot()); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicNewSummaryCrossPlotCurveFeature::onActionTriggered(bool isChecked) +{ + RimProject* project = RiaApplication::instance()->project(); + + RimSummaryPlot* plot = selectedSummaryPlot(); + if (plot) + { + RimSummaryCurve* newCurve = new RimSummaryCurve(); + cvf::Color3f curveColor = RicWellLogPlotCurveFeatureImpl::curveColorFromTable(plot->curveCount()); + newCurve->setColor(curveColor); + newCurve->setAsCrossPlotCurve(); + + plot->addCurveAndUpdate(newCurve); + + RimSummaryCase* defaultCase = nullptr; + if (project->activeOilField()->summaryCaseMainCollection()->summaryCaseCount() > 0) + { + defaultCase = project->activeOilField()->summaryCaseMainCollection()->summaryCase(0); + newCurve->setSummaryCase(defaultCase); + + newCurve->loadDataAndUpdate(true); + } + + plot->updateConnectedEditors(); + + RiaApplication::instance()->getOrCreateAndShowMainPlotWindow()->selectAsCurrentItem(newCurve); + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicNewSummaryCrossPlotCurveFeature::setupActionLook(QAction* actionToSetup) +{ + actionToSetup->setText("New Summary Cross Plot Curve"); + actionToSetup->setIcon(QIcon(":/SummaryCurve16x16.png")); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimSummaryPlot* RicNewSummaryCrossPlotCurveFeature::selectedSummaryPlot() const +{ + RimSummaryPlot* sumPlot = nullptr; + + caf::PdmObject* selObj = dynamic_cast(caf::SelectionManager::instance()->selectedItem()); + if (selObj) + { + selObj->firstAncestorOrThisOfType(sumPlot); + } + + RimSummaryCrossPlotCollection* crossPlotColl = nullptr; + sumPlot->firstAncestorOrThisOfType(crossPlotColl); + if (!crossPlotColl) return nullptr; + + return sumPlot; +} diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryCrossPlotCurveFeature.h b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryCrossPlotCurveFeature.h new file mode 100644 index 0000000000..6a204d40ed --- /dev/null +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryCrossPlotCurveFeature.h @@ -0,0 +1,40 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// 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 + +#include "cafCmdFeature.h" + +#include + +class RimSummaryPlot; + +//================================================================================================== +/// +//================================================================================================== +class RicNewSummaryCrossPlotCurveFeature : public caf::CmdFeature +{ + CAF_CMD_HEADER_INIT; +protected: + virtual bool isCommandEnabled() override; + virtual void onActionTriggered( bool isChecked ) override; + virtual void setupActionLook( QAction* actionToSetup ) override; + +private: + RimSummaryPlot* selectedSummaryPlot() const; +}; diff --git a/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp b/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp index 4ab5faf5a6..5f8269c0ea 100644 --- a/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp +++ b/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp @@ -336,6 +336,7 @@ QStringList RimContextCommandBuilder::commandsFromSelection() commandIds << "RicEditSummaryPlotFeature"; commandIds << "RicNewSummaryPlotFeature"; commandIds << "RicNewSummaryCurveFeature"; + commandIds << "RicNewSummaryCrossPlotCurveFeature"; commandIds << "Separator"; commandIds << "RicShowSummaryCurveCalculatorFeature"; commandIds << "Separator"; @@ -350,6 +351,7 @@ QStringList RimContextCommandBuilder::commandsFromSelection() commandIds << "RicPasteSummaryCurveFeature"; commandIds << "Separator"; commandIds << "RicNewSummaryCurveFeature"; + commandIds << "RicNewSummaryCrossPlotCurveFeature"; commandIds << "Separator"; commandIds << "RicCopyReferencesToClipboardFeature"; commandIds << "Separator";