diff --git a/ApplicationCode/Commands/ViewLink/CMakeLists_files.cmake b/ApplicationCode/Commands/ViewLink/CMakeLists_files.cmake index cd4a2aed24..1fb797c393 100644 --- a/ApplicationCode/Commands/ViewLink/CMakeLists_files.cmake +++ b/ApplicationCode/Commands/ViewLink/CMakeLists_files.cmake @@ -9,6 +9,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RicShowLinkOptionsFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicDeleteAllLinkedViewsFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicSetMasterViewFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicRemoveComparison3dViewFeature.h +${CMAKE_CURRENT_LIST_DIR}/RicCompareTo3dViewFeature.h ) set (SOURCE_GROUP_SOURCE_FILES @@ -21,6 +22,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RicShowLinkOptionsFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicDeleteAllLinkedViewsFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicSetMasterViewFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicRemoveComparison3dViewFeature.cpp +${CMAKE_CURRENT_LIST_DIR}/RicCompareTo3dViewFeature.cpp ) list(APPEND CODE_HEADER_FILES diff --git a/ApplicationCode/Commands/ViewLink/RicCompareTo3dViewFeature.cpp b/ApplicationCode/Commands/ViewLink/RicCompareTo3dViewFeature.cpp new file mode 100644 index 0000000000..e0717395e6 --- /dev/null +++ b/ApplicationCode/Commands/ViewLink/RicCompareTo3dViewFeature.cpp @@ -0,0 +1,74 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2019- 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 "RicCompareTo3dViewFeature.h" + +#include "RiaApplication.h" + +#include "RimGridView.h" + +#include "RiuViewer.h" +#include "RiuViewerCommands.h" + +#include + +CAF_CMD_SOURCE_INIT( RicCompareTo3dViewFeature, "RicCompareTo3dViewFeature" ); + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RicCompareTo3dViewFeature::isCommandEnabled() +{ + return true; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicCompareTo3dViewFeature::onActionTriggered( bool isChecked ) +{ + RimGridView* activeView = RiaApplication::instance()->activeGridView(); + + QVariant userData = this->userData(); + auto view = static_cast(userData.value()); + + if (view && activeView) + { + activeView->setComparisonView( view ); + activeView->scheduleCreateDisplayModelAndRedraw(); + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicCompareTo3dViewFeature::setupActionLook( QAction* actionToSetup ) +{ + QVariant userData = actionToSetup->data(); + + auto view = static_cast(userData.value()); + if ( view ) + { + actionToSetup->setIcon(view->uiIconProvider().icon() ); + } + else + { + actionToSetup->setIcon(QIcon(":/ComparisonView16x16.png")); + } +} + + diff --git a/ApplicationCode/Commands/ViewLink/RicCompareTo3dViewFeature.h b/ApplicationCode/Commands/ViewLink/RicCompareTo3dViewFeature.h new file mode 100644 index 0000000000..5a0c33d1b7 --- /dev/null +++ b/ApplicationCode/Commands/ViewLink/RicCompareTo3dViewFeature.h @@ -0,0 +1,37 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2019- 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 RicCompareTo3dViewFeature : public caf::CmdFeature +{ + CAF_CMD_HEADER_INIT; + +protected: + // Overrides + bool isCommandEnabled() override; + void onActionTriggered( bool isChecked ) override; + void setupActionLook( QAction* actionToSetup ) override; +}; + + diff --git a/ApplicationCode/Resources/ComparisonView16x16.png b/ApplicationCode/Resources/ComparisonView16x16.png new file mode 100644 index 0000000000..c2509b936f Binary files /dev/null and b/ApplicationCode/Resources/ComparisonView16x16.png differ diff --git a/ApplicationCode/Resources/ResInsight.qrc b/ApplicationCode/Resources/ResInsight.qrc index 39428092e3..2e02daeca8 100644 --- a/ApplicationCode/Resources/ResInsight.qrc +++ b/ApplicationCode/Resources/ResInsight.qrc @@ -60,6 +60,7 @@ chain.png UnLinkView16x16.png LinkView16x16.png + ComparisonView16x16.png RemoveComparisonView16x16.png MasterView16x16.png ControlledView16x16.png diff --git a/ApplicationCode/UserInterface/RiuViewerCommands.cpp b/ApplicationCode/UserInterface/RiuViewerCommands.cpp index 9785b73469..00a5556e57 100644 --- a/ApplicationCode/UserInterface/RiuViewerCommands.cpp +++ b/ApplicationCode/UserInterface/RiuViewerCommands.cpp @@ -40,11 +40,13 @@ #include "RigMainGrid.h" #include "RigVirtualPerforationTransmissibilities.h" +#include "RiaOptionItemFactory.h" #include "Rim2dIntersectionView.h" #include "RimCellEdgeColors.h" #include "RimContextCommandBuilder.h" #include "RimEclipseCase.h" #include "RimEclipseCellColors.h" +#include "RimEclipseContourMapView.h" #include "RimEclipseFaultColors.h" #include "RimEclipseView.h" #include "RimEllipseFractureTemplate.h" @@ -53,11 +55,13 @@ #include "RimFracture.h" #include "RimGeoMechCase.h" #include "RimGeoMechCellColors.h" +#include "RimGeoMechContourMapView.h" #include "RimGeoMechView.h" #include "RimIntersection.h" #include "RimIntersectionBox.h" #include "RimLegendConfig.h" #include "RimPerforationInterval.h" +#include "RimProject.h" #include "RimSimWellInView.h" #include "RimStimPlanFractureTemplate.h" #include "RimTextAnnotation.h" @@ -148,6 +152,41 @@ void RiuViewerCommands::setOwnerView( Rim3dView* owner ) m_reservoirView = owner; } +void RiuViewerCommands::addCompareToViewMenu( caf::CmdFeatureMenuBuilder* menuBuilder ) +{ + RimGridView* mainGridView = dynamic_cast( m_reservoirView.p() ); + if ( mainGridView && !mainGridView->activeComparisonView() ) + { + std::vector validComparisonViews; + + std::vector views; + RiaApplication::instance()->project()->allViews( views ); + for ( auto view : views ) + { + if ( !dynamic_cast( view ) ) continue; + if ( dynamic_cast( view ) ) continue; + if ( dynamic_cast( view ) ) continue; + + if ( view != mainGridView ) + { + validComparisonViews.push_back( view ); + } + } + + if ( validComparisonViews.size() ) + { + menuBuilder->subMenuStart( "Compare To ...", QIcon( ":/ComparisonView16x16.png" ) ); + for ( auto view : validComparisonViews ) + { + menuBuilder->addCmdFeatureWithUserData( "RicCompareTo3dViewFeature", + view->autoName(), + QVariant::fromValue( static_cast( view ) ) ); + } + menuBuilder->subMenuEnd(); + } + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -518,6 +557,7 @@ void RiuViewerCommands::displayContextMenu( QMouseEvent* event ) menuBuilder << "RicLinkViewFeature"; menuBuilder << "RicShowLinkOptionsFeature"; menuBuilder << "RicSetMasterViewFeature"; + addCompareToViewMenu( &menuBuilder ); menuBuilder.addSeparator(); menuBuilder << "RicUnLinkViewFeature"; menuBuilder << "RicRemoveComparison3dViewFeature"; diff --git a/ApplicationCode/UserInterface/RiuViewerCommands.h b/ApplicationCode/UserInterface/RiuViewerCommands.h index 0b60eb61ae..f7fda0722f 100644 --- a/ApplicationCode/UserInterface/RiuViewerCommands.h +++ b/ApplicationCode/UserInterface/RiuViewerCommands.h @@ -41,7 +41,8 @@ class QMouseEvent; namespace caf { class PdmObject; -} +class CmdFeatureMenuBuilder; +} // namespace caf namespace cvf { @@ -89,6 +90,8 @@ private: bool handleOverlayItemPicking( int winPosX, int winPosY ); + void addCompareToViewMenu( caf::CmdFeatureMenuBuilder* menuBuilder ); + static void addDefaultPickEventHandler( RicDefaultPickEventHandler* pickEventHandler ); static void removeDefaultPickEventHandler( RicDefaultPickEventHandler* pickEventHandler );