From e8ee077501ba5e127593fa7c6e348291e1797dde Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 2 Feb 2017 12:32:01 +0100 Subject: [PATCH] #1164 Added feature "Add Stored Well Allocation Plot" --- .../FlowCommands/CMakeLists_files.cmake | 2 + .../RicAddStoredWellAllocationPlotFeature.cpp | 88 +++++++++++++++++++ .../RicAddStoredWellAllocationPlotFeature.h | 38 ++++++++ .../RimContextCommandBuilder.cpp | 11 ++- 4 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 ApplicationCode/Commands/FlowCommands/RicAddStoredWellAllocationPlotFeature.cpp create mode 100644 ApplicationCode/Commands/FlowCommands/RicAddStoredWellAllocationPlotFeature.h diff --git a/ApplicationCode/Commands/FlowCommands/CMakeLists_files.cmake b/ApplicationCode/Commands/FlowCommands/CMakeLists_files.cmake index bc9893057e..5b0f6da3fe 100644 --- a/ApplicationCode/Commands/FlowCommands/CMakeLists_files.cmake +++ b/ApplicationCode/Commands/FlowCommands/CMakeLists_files.cmake @@ -6,10 +6,12 @@ endif() set (SOURCE_GROUP_HEADER_FILES ${CEE_CURRENT_LIST_DIR}RicShowWellAllocationPlotFeature.h +${CEE_CURRENT_LIST_DIR}RicAddStoredWellAllocationPlotFeature ) set (SOURCE_GROUP_SOURCE_FILES ${CEE_CURRENT_LIST_DIR}RicShowWellAllocationPlotFeature.cpp +${CEE_CURRENT_LIST_DIR}RicAddStoredWellAllocationPlotFeature.cpp ) list(APPEND CODE_HEADER_FILES diff --git a/ApplicationCode/Commands/FlowCommands/RicAddStoredWellAllocationPlotFeature.cpp b/ApplicationCode/Commands/FlowCommands/RicAddStoredWellAllocationPlotFeature.cpp new file mode 100644 index 0000000000..719164cecd --- /dev/null +++ b/ApplicationCode/Commands/FlowCommands/RicAddStoredWellAllocationPlotFeature.cpp @@ -0,0 +1,88 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// 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 "RicAddStoredWellAllocationPlotFeature.h" + +#include "RiaApplication.h" + +#include "RimFlowPlotCollection.h" +#include "RimMainPlotCollection.h" +#include "RimProject.h" +#include "RimWellAllocationPlot.h" + +#include "cafSelectionManager.h" + +#include "cvfAssert.h" + +#include + +CAF_CMD_SOURCE_INIT(RicAddStoredWellAllocationPlotFeature, "RicAddStoredWellAllocationPlotFeature"); + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RicAddStoredWellAllocationPlotFeature::isCommandEnabled() +{ + if (RiaApplication::instance()->project()) + { + RimFlowPlotCollection* flowPlotColl = RiaApplication::instance()->project()->mainPlotCollection->flowPlotCollection(); + if (flowPlotColl) + { + RimWellAllocationPlot* wellAllocationPlot = dynamic_cast(caf::SelectionManager::instance()->selectedItem()); + + if (flowPlotColl->defaultPlot() == wellAllocationPlot) + { + return true; + } + } + } + + return false; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicAddStoredWellAllocationPlotFeature::onActionTriggered(bool isChecked) +{ + if (RiaApplication::instance()->project()) + { + RimFlowPlotCollection* flowPlotColl = RiaApplication::instance()->project()->mainPlotCollection->flowPlotCollection(); + if (flowPlotColl) + { + RimWellAllocationPlot* sourceObject = dynamic_cast(caf::SelectionManager::instance()->selectedItem()); + + RimWellAllocationPlot* newObject = dynamic_cast(sourceObject->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance())); + CVF_ASSERT(newObject); + + flowPlotColl->flowPlots.push_back(newObject); + newObject->resolveReferencesRecursively(); + + flowPlotColl->updateConnectedEditors(); + } + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicAddStoredWellAllocationPlotFeature::setupActionLook(QAction* actionToSetup) +{ + //actionToSetup->setIcon(QIcon(":/new_icon16x16.png")); + actionToSetup->setText("Add Stored Well Allocation Plot"); +} diff --git a/ApplicationCode/Commands/FlowCommands/RicAddStoredWellAllocationPlotFeature.h b/ApplicationCode/Commands/FlowCommands/RicAddStoredWellAllocationPlotFeature.h new file mode 100644 index 0000000000..651e2eaa17 --- /dev/null +++ b/ApplicationCode/Commands/FlowCommands/RicAddStoredWellAllocationPlotFeature.h @@ -0,0 +1,38 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// 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" + + +//================================================================================================== +/// +//================================================================================================== +class RicAddStoredWellAllocationPlotFeature : public caf::CmdFeature +{ + CAF_CMD_HEADER_INIT; + +protected: + // Overrides + virtual bool isCommandEnabled() override; + virtual void onActionTriggered( bool isChecked ) override; + virtual void setupActionLook( QAction* actionToSetup ) override; +}; + + diff --git a/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp b/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp index 6092ebdeda..dbe76547ef 100644 --- a/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp +++ b/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp @@ -23,8 +23,6 @@ #include "RimCaseCollection.h" #include "RimCellRangeFilter.h" #include "RimCellRangeFilterCollection.h" -#include "RimIntersection.h" -#include "RimIntersectionCollection.h" #include "RimEclipseCase.h" #include "RimEclipseCaseCollection.h" #include "RimEclipseCellColors.h" @@ -35,6 +33,7 @@ #include "RimEclipseStatisticsCase.h" #include "RimEclipseView.h" #include "RimEclipseWell.h" +#include "RimFault.h" #include "RimFormationNames.h" #include "RimFormationNamesCollection.h" #include "RimGeoMechCase.h" @@ -42,7 +41,9 @@ #include "RimGeoMechPropertyFilterCollection.h" #include "RimGeoMechView.h" #include "RimIdenticalGridCaseGroup.h" +#include "RimIntersection.h" #include "RimIntersectionBox.h" +#include "RimIntersectionCollection.h" #include "RimScriptCollection.h" #include "RimSummaryCase.h" #include "RimSummaryCurve.h" @@ -51,6 +52,7 @@ #include "RimSummaryPlotCollection.h" #include "RimViewController.h" #include "RimViewLinker.h" +#include "RimWellAllocationPlot.h" #include "RimWellLogCurve.h" #include "RimWellLogFileChannel.h" #include "RimWellLogPlot.h" @@ -71,7 +73,6 @@ #include #include -#include "RimFault.h" //-------------------------------------------------------------------------------------------------- /// @@ -351,6 +352,10 @@ QStringList RimContextCommandBuilder::commandsFromSelection() { commandIds << "RicExportFaultsFeature"; } + else if (dynamic_cast(uiItem)) + { + commandIds << "RicAddStoredWellAllocationPlotFeature"; + } if (dynamic_cast(uiItem))