2015-08-25 05:40:55 -05:00
/////////////////////////////////////////////////////////////////////////////////
//
// 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 <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
2015-10-13 03:24:11 -05:00
# include "RimViewController.h"
2015-08-25 05:40:55 -05:00
# include "RiaApplication.h"
2015-09-23 06:48:25 -05:00
# include "RigCaseData.h"
# include "RigCaseToCaseCellMapper.h"
# include "RigFemPartCollection.h"
# include "RigGeoMechCaseData.h"
2015-08-25 05:40:55 -05:00
# include "RimCase.h"
2015-08-27 06:44:27 -05:00
# include "RimCellRangeFilterCollection.h"
2015-09-23 06:48:25 -05:00
# include "RimEclipseCase.h"
# include "RimEclipseCellColors.h"
2015-08-27 08:45:22 -05:00
# include "RimEclipsePropertyFilterCollection.h"
# include "RimEclipseView.h"
2015-09-23 06:48:25 -05:00
# include "RimGeoMechCase.h"
# include "RimGeoMechCellColors.h"
2015-08-28 01:01:40 -05:00
# include "RimGeoMechPropertyFilterCollection.h"
# include "RimGeoMechView.h"
2015-08-25 05:40:55 -05:00
# include "RimProject.h"
# include "RimView.h"
2015-09-07 07:29:46 -05:00
# include "RimViewLinker.h"
2015-09-15 03:45:39 -05:00
# include "RimViewLinkerCollection.h"
2015-08-25 05:40:55 -05:00
2015-08-27 06:44:27 -05:00
# include "RiuViewer.h"
2015-08-25 05:40:55 -05:00
# include "cafPdmUiTreeOrdering.h"
2015-10-20 10:39:36 -05:00
# include "RigCaseToCaseRangeFilterMapper.h"
2015-08-25 05:40:55 -05:00
2015-10-21 05:45:35 -05:00
# include <QMessageBox>
2015-09-24 04:29:01 -05:00
CAF_PDM_SOURCE_INIT ( RimViewController , " ViewController " ) ;
2015-08-25 05:40:55 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
RimViewController : : RimViewController ( void )
2015-08-25 05:40:55 -05:00
{
2015-09-15 03:45:39 -05:00
CAF_PDM_InitObject ( " View Link " , " " , " " , " " ) ;
2015-09-15 02:47:59 -05:00
2015-09-25 04:26:37 -05:00
CAF_PDM_InitField ( & m_isActive , " Active " , true , " Active " , " " , " " , " " ) ;
m_isActive . uiCapability ( ) - > setUiHidden ( true ) ;
2015-08-25 05:40:55 -05:00
2015-09-11 07:16:13 -05:00
QString defaultName = " View Config: Empty view " ;
2015-09-25 02:39:42 -05:00
CAF_PDM_InitField ( & m_name , " Name " , defaultName , " Managed View Name " , " " , " " , " " ) ;
m_name . uiCapability ( ) - > setUiHidden ( true ) ;
2015-08-28 04:48:16 -05:00
2015-09-11 07:16:13 -05:00
CAF_PDM_InitFieldNoDefault ( & m_managedView , " ManagedView " , " Linked View " , " " , " " , " " ) ;
2015-09-02 06:44:56 -05:00
m_managedView . uiCapability ( ) - > setUiChildrenHidden ( true ) ;
2015-08-25 05:40:55 -05:00
2015-09-25 02:39:42 -05:00
CAF_PDM_InitField ( & m_syncCamera , " SyncCamera " , true , " Camera " , " " , " " , " " ) ;
CAF_PDM_InitField ( & m_syncTimeStep , " SyncTimeStep " , true , " Time Step " , " " , " " , " " ) ;
2015-11-02 04:34:03 -06:00
CAF_PDM_InitField ( & m_syncCellResult , " SyncCellResult " , false , " Cell Color Result " , " " , " " , " " ) ;
2015-09-11 08:20:42 -05:00
2015-09-21 11:53:08 -05:00
CAF_PDM_InitField ( & m_syncVisibleCells , " SyncVisibleCells " , false , " Visible Cells " , " " , " " , " " ) ;
2015-10-22 09:02:28 -05:00
/// We do not support this. Consider to remove sometime
m_syncVisibleCells . uiCapability ( ) - > setUiHidden ( true ) ;
m_syncVisibleCells . xmlCapability ( ) - > setIOWritable ( false ) ;
m_syncVisibleCells . xmlCapability ( ) - > setIOReadable ( false ) ;
2015-09-14 02:50:26 -05:00
2015-10-24 04:56:15 -05:00
CAF_PDM_InitField ( & m_syncRangeFilters , " SyncRangeFilters " , false , " Range Filters " , " " , " " , " " ) ;
CAF_PDM_InitField ( & m_syncPropertyFilters , " SyncPropertyFilters " , false , " Property Filters " , " " , " " , " " ) ;
2015-08-25 05:40:55 -05:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
RimViewController : : ~ RimViewController ( void )
2015-08-25 05:40:55 -05:00
{
2015-09-13 14:26:09 -05:00
this - > removeOverrides ( ) ;
2015-08-25 05:40:55 -05:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
QList < caf : : PdmOptionItemInfo > RimViewController : : calculateValueOptions ( const caf : : PdmFieldHandle * fieldNeedingOptions , bool * useOptionsOnly )
2015-08-25 05:40:55 -05:00
{
QList < caf : : PdmOptionItemInfo > optionList ;
2015-09-02 06:44:56 -05:00
if ( fieldNeedingOptions = = & m_managedView )
2015-08-25 05:40:55 -05:00
{
2015-08-30 06:30:46 -05:00
RimProject * proj = RiaApplication : : instance ( ) - > project ( ) ;
2015-08-25 05:40:55 -05:00
std : : vector < RimView * > views ;
2015-09-07 06:33:27 -05:00
proj - > allNotLinkedViews ( views ) ;
2015-08-30 06:30:46 -05:00
2015-09-07 06:33:27 -05:00
// Add currently linked view to list
if ( this - > managedView ( ) )
{
views . push_back ( this - > managedView ( ) ) ;
}
2015-09-07 07:29:46 -05:00
RimViewLinker * linkedViews = NULL ;
2015-09-07 06:33:27 -05:00
this - > firstAnchestorOrThisOfType ( linkedViews ) ;
2015-08-25 05:40:55 -05:00
for ( size_t i = 0 ; i < views . size ( ) ; i + + )
{
2015-09-24 04:29:01 -05:00
if ( views [ i ] ! = linkedViews - > masterView ( ) )
2015-08-30 06:30:46 -05:00
{
2015-09-07 06:33:27 -05:00
RimCase * rimCase = NULL ;
views [ i ] - > firstAnchestorOrThisOfType ( rimCase ) ;
QIcon icon ;
if ( rimCase )
{
icon = rimCase - > uiCapability ( ) - > uiIcon ( ) ;
}
2015-09-07 07:29:46 -05:00
optionList . push_back ( caf : : PdmOptionItemInfo ( RimViewLinker : : displayNameForView ( views [ i ] ) ,
2015-09-07 06:33:27 -05:00
QVariant : : fromValue ( caf : : PdmPointer < caf : : PdmObjectHandle > ( views [ i ] ) ) ,
false ,
icon ) ) ;
2015-08-30 06:30:46 -05:00
}
2015-08-25 05:40:55 -05:00
}
if ( optionList . size ( ) > 0 )
{
optionList . push_front ( caf : : PdmOptionItemInfo ( " None " , QVariant : : fromValue ( caf : : PdmPointer < caf : : PdmObjectHandle > ( NULL ) ) ) ) ;
}
}
return optionList ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
void RimViewController : : defineUiTreeOrdering ( caf : : PdmUiTreeOrdering & uiTreeOrdering , QString uiConfigName /*= ""*/ )
2015-08-25 05:40:55 -05:00
{
2015-10-29 05:21:08 -05:00
updateDisplayNameAndIcon ( ) ;
2015-08-25 05:40:55 -05:00
uiTreeOrdering . setForgetRemainingFields ( true ) ;
}
2015-08-27 06:44:27 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
void RimViewController : : fieldChangedByUi ( const caf : : PdmFieldHandle * changedField , const QVariant & oldValue , const QVariant & newValue )
2015-08-27 06:44:27 -05:00
{
2015-09-25 04:26:37 -05:00
if ( changedField = = & m_isActive )
2015-09-15 02:47:59 -05:00
{
2015-10-21 05:45:35 -05:00
if ( ! m_isActive )
{
applyRangeFilterCollectionByUserChoice ( ) ;
}
2015-09-24 10:40:45 -05:00
updateOverrides ( ) ;
2015-10-20 04:13:31 -05:00
updateResultColorsControl ( ) ;
updateCameraLink ( ) ;
2015-09-25 04:26:37 -05:00
updateDisplayNameAndIcon ( ) ;
2015-10-20 04:13:31 -05:00
updateTimeStepLink ( ) ;
2015-09-15 02:47:59 -05:00
}
2015-09-25 04:26:37 -05:00
else if ( changedField = = & m_syncCamera )
2015-08-27 06:44:27 -05:00
{
2015-09-25 04:26:37 -05:00
updateCameraLink ( ) ;
2015-08-27 06:44:27 -05:00
}
2015-09-25 04:26:37 -05:00
else if ( changedField = = & m_syncTimeStep )
2015-08-27 07:57:04 -05:00
{
2015-09-25 04:26:37 -05:00
updateTimeStepLink ( ) ;
2015-08-27 07:57:04 -05:00
}
2015-09-25 02:39:42 -05:00
else if ( changedField = = & m_syncCellResult )
2015-09-01 10:14:22 -05:00
{
2015-09-25 04:26:37 -05:00
updateResultColorsControl ( ) ;
if ( managedEclipseView ( ) )
2015-09-23 06:48:25 -05:00
{
2015-09-25 04:26:37 -05:00
managedEclipseView ( ) - > cellResult ( ) - > updateIconState ( ) ;
2015-09-23 06:48:25 -05:00
}
2015-09-25 04:26:37 -05:00
else if ( managedGeoView ( ) )
2015-09-23 06:48:25 -05:00
{
2015-09-25 04:26:37 -05:00
managedGeoView ( ) - > cellResult ( ) - > updateIconState ( ) ;
2015-09-23 06:48:25 -05:00
}
2015-09-01 10:14:22 -05:00
}
2015-09-25 02:39:42 -05:00
else if ( changedField = = & m_syncRangeFilters )
2015-08-27 06:44:27 -05:00
{
2015-10-21 05:45:35 -05:00
if ( ! m_syncRangeFilters )
{
applyRangeFilterCollectionByUserChoice ( ) ;
}
2015-10-20 04:13:31 -05:00
updateOverrides ( ) ;
2015-08-27 06:44:27 -05:00
}
2015-09-25 02:39:42 -05:00
else if ( changedField = = & m_syncPropertyFilters )
2015-08-27 08:45:22 -05:00
{
2015-09-24 10:40:45 -05:00
updateOverrides ( ) ;
2015-08-27 08:45:22 -05:00
}
2015-09-02 06:44:56 -05:00
else if ( changedField = = & m_managedView )
2015-08-27 06:44:27 -05:00
{
PdmObjectHandle * prevValue = oldValue . value < caf : : PdmPointer < PdmObjectHandle > > ( ) . rawPtr ( ) ;
2015-09-25 07:48:16 -05:00
RimView * previousManagedView = dynamic_cast < RimView * > ( prevValue ) ;
RimViewController : : removeOverrides ( previousManagedView ) ;
2015-08-28 04:48:16 -05:00
2015-09-25 07:48:16 -05:00
setManagedView ( m_managedView ( ) ) ;
2015-09-02 01:13:17 -05:00
2015-09-25 02:39:42 -05:00
m_name . uiCapability ( ) - > updateConnectedEditors ( ) ;
2015-08-27 06:44:27 -05:00
}
2015-09-21 11:53:08 -05:00
else if ( & m_syncVisibleCells = = changedField )
2015-09-11 08:20:42 -05:00
{
updateOptionSensitivity ( ) ;
2015-09-24 10:40:45 -05:00
updateOverrides ( ) ;
2015-09-11 08:20:42 -05:00
}
2015-08-27 06:44:27 -05:00
}
2015-08-28 01:01:40 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
RimEclipseView * RimViewController : : managedEclipseView ( )
2015-08-28 01:01:40 -05:00
{
2015-09-02 06:44:56 -05:00
RimView * rimView = m_managedView ;
2015-08-28 01:01:40 -05:00
return dynamic_cast < RimEclipseView * > ( rimView ) ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
RimGeoMechView * RimViewController : : managedGeoView ( )
2015-08-28 01:01:40 -05:00
{
2015-09-02 06:44:56 -05:00
RimView * rimView = m_managedView ;
2015-08-28 01:01:40 -05:00
return dynamic_cast < RimGeoMechView * > ( rimView ) ;
}
2015-08-28 01:06:35 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 10:40:45 -05:00
void RimViewController : : updateOverrides ( )
2015-08-27 06:44:27 -05:00
{
2015-09-24 10:40:45 -05:00
RimViewLinker * viewLinker = ownerViewLinker ( ) ;
2015-09-24 04:29:01 -05:00
RimView * masterView = viewLinker - > masterView ( ) ;
2015-09-24 10:40:45 -05:00
2015-09-02 10:18:02 -05:00
CVF_ASSERT ( masterView ) ;
2015-09-02 06:44:56 -05:00
if ( m_managedView )
2015-08-27 06:44:27 -05:00
{
2015-09-11 08:20:42 -05:00
RimEclipseView * manEclView = managedEclipseView ( ) ;
RimGeoMechView * manGeoView = managedGeoView ( ) ;
2015-09-25 02:39:42 -05:00
if ( isVisibleCellsOveridden ( ) )
2015-08-27 06:44:27 -05:00
{
2015-09-11 08:20:42 -05:00
if ( manEclView ) manEclView - > setOverridePropertyFilterCollection ( NULL ) ;
if ( manGeoView ) manGeoView - > setOverridePropertyFilterCollection ( NULL ) ;
2015-09-24 10:40:45 -05:00
m_managedView - > scheduleGeometryRegen ( OVERRIDDEN_CELL_VISIBILITY ) ;
2015-09-25 07:48:16 -05:00
m_managedView - > scheduleCreateDisplayModelAndRedraw ( ) ;
2015-08-27 06:44:27 -05:00
}
else
{
2015-09-11 08:20:42 -05:00
RimEclipseView * masterEclipseView = dynamic_cast < RimEclipseView * > ( masterView ) ;
if ( masterEclipseView )
2015-08-27 08:45:22 -05:00
{
2015-09-11 08:20:42 -05:00
if ( manEclView )
2015-08-27 08:45:22 -05:00
{
2015-09-25 07:48:16 -05:00
if ( isPropertyFilterOveridden ( ) )
2015-09-11 08:20:42 -05:00
{
manEclView - > setOverridePropertyFilterCollection ( masterEclipseView - > propertyFilterCollection ( ) ) ;
}
else
{
manEclView - > setOverridePropertyFilterCollection ( NULL ) ;
}
2015-08-27 08:45:22 -05:00
}
}
2015-08-27 15:54:37 -05:00
2015-09-11 08:20:42 -05:00
RimGeoMechView * masterGeoView = dynamic_cast < RimGeoMechView * > ( masterView ) ;
if ( masterGeoView )
2015-08-27 15:54:37 -05:00
{
2015-09-11 08:20:42 -05:00
if ( manGeoView )
2015-08-27 15:54:37 -05:00
{
2015-09-25 07:48:16 -05:00
if ( isPropertyFilterOveridden ( ) )
2015-09-11 08:20:42 -05:00
{
manGeoView - > setOverridePropertyFilterCollection ( masterGeoView - > propertyFilterCollection ( ) ) ;
}
else
{
manGeoView - > setOverridePropertyFilterCollection ( NULL ) ;
}
2015-08-27 15:54:37 -05:00
}
}
}
2015-10-20 04:13:31 -05:00
this - > updateRangeFilterOverrides ( NULL ) ;
2015-09-25 07:48:16 -05:00
if ( manGeoView )
{
manGeoView - > updateIconStateForFilterCollections ( ) ;
}
if ( manEclView )
{
manEclView - > updateIconStateForFilterCollections ( ) ;
}
2015-08-28 01:01:40 -05:00
}
2015-08-27 15:54:37 -05:00
}
2015-09-24 10:40:45 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewController : : removeOverrides ( )
{
2015-09-25 07:48:16 -05:00
removeOverrides ( m_managedView ) ;
2015-11-02 07:06:38 -06:00
RimEclipseView * manEclView = managedEclipseView ( ) ;
RimGeoMechView * manGeoView = managedGeoView ( ) ;
if ( manGeoView )
{
manGeoView - > updateIconStateForFilterCollections ( ) ;
}
if ( manEclView )
{
manEclView - > updateIconStateForFilterCollections ( ) ;
}
2015-09-25 07:48:16 -05:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewController : : removeOverrides ( RimView * view )
{
if ( view )
2015-09-24 10:40:45 -05:00
{
2015-09-25 07:48:16 -05:00
RimEclipseView * manEclView = dynamic_cast < RimEclipseView * > ( view ) ;
RimGeoMechView * manGeoView = dynamic_cast < RimGeoMechView * > ( view ) ;
2015-09-24 10:40:45 -05:00
if ( manEclView ) manEclView - > setOverridePropertyFilterCollection ( NULL ) ;
if ( manGeoView ) manGeoView - > setOverridePropertyFilterCollection ( NULL ) ;
2015-10-20 04:13:31 -05:00
view - > setOverrideRangeFilterCollection ( NULL ) ;
2015-09-24 10:40:45 -05:00
}
}
2015-08-28 04:48:16 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
void RimViewController : : updateOptionSensitivity ( )
2015-08-28 04:48:16 -05:00
{
2015-09-07 07:29:46 -05:00
RimViewLinker * linkedViews = NULL ;
2015-09-02 01:13:17 -05:00
firstAnchestorOrThisOfType ( linkedViews ) ;
CVF_ASSERT ( linkedViews ) ;
2015-08-28 04:48:16 -05:00
2015-09-24 04:29:01 -05:00
RimView * mainView = linkedViews - > masterView ( ) ;
2015-09-02 10:18:02 -05:00
CVF_ASSERT ( mainView ) ;
2015-09-02 01:13:17 -05:00
RimEclipseView * eclipseMasterView = dynamic_cast < RimEclipseView * > ( mainView ) ;
RimGeoMechView * geoMasterView = dynamic_cast < RimGeoMechView * > ( mainView ) ;
2015-08-28 04:48:16 -05:00
2015-09-21 11:53:08 -05:00
bool isMasterAndDependentViewDifferentType = false ;
2015-09-02 01:13:17 -05:00
if ( eclipseMasterView & & ! managedEclipseView ( ) )
{
2015-09-21 11:53:08 -05:00
isMasterAndDependentViewDifferentType = true ;
2015-09-02 01:13:17 -05:00
}
if ( geoMasterView & & ! managedGeoView ( ) )
{
2015-09-21 11:53:08 -05:00
isMasterAndDependentViewDifferentType = true ;
2015-09-02 01:13:17 -05:00
}
2015-08-28 04:48:16 -05:00
2015-09-21 11:53:08 -05:00
if ( isMasterAndDependentViewDifferentType )
2015-09-02 01:13:17 -05:00
{
2015-09-25 02:39:42 -05:00
this - > m_syncCellResult . uiCapability ( ) - > setUiReadOnly ( true ) ;
this - > m_syncCellResult = false ;
2015-09-02 01:13:17 -05:00
}
else
{
2015-09-25 02:39:42 -05:00
this - > m_syncCellResult . uiCapability ( ) - > setUiReadOnly ( false ) ;
2015-10-24 05:24:09 -05:00
}
if ( isPropertyFilterControlPossible ( ) )
{
2015-09-25 02:39:42 -05:00
this - > m_syncPropertyFilters . uiCapability ( ) - > setUiReadOnly ( false ) ;
2015-09-02 01:13:17 -05:00
}
2015-10-24 05:24:09 -05:00
else
{
this - > m_syncPropertyFilters . uiCapability ( ) - > setUiReadOnly ( true ) ;
this - > m_syncPropertyFilters = false ;
}
2015-09-21 11:53:08 -05:00
2015-10-19 05:10:18 -05:00
if ( isRangeFilterControlPossible ( ) )
{
this - > m_syncRangeFilters . uiCapability ( ) - > setUiReadOnly ( false ) ;
}
else
{
this - > m_syncRangeFilters . uiCapability ( ) - > setUiReadOnly ( true ) ;
this - > m_syncRangeFilters = false ;
}
2015-09-24 10:40:45 -05:00
m_syncVisibleCells . uiCapability ( ) - > setUiReadOnly ( ! this - > isMasterAndDepViewDifferentType ( ) ) ;
2015-08-28 04:48:16 -05:00
}
2015-09-02 06:44:56 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
RimView * RimViewController : : managedView ( )
2015-09-02 06:44:56 -05:00
{
return m_managedView ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
void RimViewController : : setManagedView ( RimView * view )
2015-09-02 06:44:56 -05:00
{
m_managedView = view ;
2015-10-20 04:13:31 -05:00
2015-09-25 07:48:16 -05:00
updateOptionSensitivity ( ) ;
2015-10-20 04:13:31 -05:00
updateOverrides ( ) ;
updateResultColorsControl ( ) ;
updateCameraLink ( ) ;
2015-09-25 07:48:16 -05:00
updateDisplayNameAndIcon ( ) ;
2015-10-20 04:13:31 -05:00
updateTimeStepLink ( ) ;
2015-09-02 06:44:56 -05:00
}
2015-09-07 06:50:10 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
void RimViewController : : defineUiOrdering ( QString uiConfigName , caf : : PdmUiOrdering & uiOrdering )
2015-09-07 06:50:10 -05:00
{
2015-09-21 11:53:08 -05:00
updateOptionSensitivity ( ) ;
2015-09-07 06:50:10 -05:00
uiOrdering . add ( & m_managedView ) ;
2015-09-11 07:16:13 -05:00
caf : : PdmUiGroup * scriptGroup = uiOrdering . addNewGroup ( " Link Options " ) ;
2015-09-07 06:50:10 -05:00
2015-09-25 02:39:42 -05:00
scriptGroup - > add ( & m_syncCamera ) ;
scriptGroup - > add ( & m_syncTimeStep ) ;
scriptGroup - > add ( & m_syncCellResult ) ;
2015-09-11 07:16:13 -05:00
caf : : PdmUiGroup * visibleCells = uiOrdering . addNewGroup ( " Link Cell Filters " ) ;
2015-09-21 11:53:08 -05:00
visibleCells - > add ( & m_syncVisibleCells ) ;
2015-09-25 02:39:42 -05:00
visibleCells - > add ( & m_syncRangeFilters ) ;
visibleCells - > add ( & m_syncPropertyFilters ) ;
2015-09-07 06:50:10 -05:00
}
2015-09-13 14:26:09 -05:00
2015-09-15 02:47:59 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
void RimViewController : : updateDisplayNameAndIcon ( )
2015-09-15 02:47:59 -05:00
{
2015-09-25 02:39:42 -05:00
RimViewLinker : : findNameAndIconFromView ( & m_name . v ( ) , & m_originalIcon , managedView ( ) ) ;
2015-09-25 04:26:37 -05:00
RimViewLinker : : applyIconEnabledState ( this , m_originalIcon , ! m_isActive ( ) ) ;
2015-09-15 02:47:59 -05:00
}
2015-09-15 03:45:39 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-25 04:26:37 -05:00
void RimViewController : : updateCameraLink ( )
2015-09-15 03:45:39 -05:00
{
2015-09-25 04:26:37 -05:00
if ( ! this - > isCameraLinked ( ) ) return ;
2015-09-25 07:48:16 -05:00
if ( m_managedView )
{
RimViewLinker * viewLinker = this - > ownerViewLinker ( ) ;
viewLinker - > updateScaleZ ( viewLinker - > masterView ( ) , viewLinker - > masterView ( ) - > scaleZ ( ) ) ;
viewLinker - > updateCamera ( viewLinker - > masterView ( ) ) ;
}
2015-09-15 03:45:39 -05:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-25 04:26:37 -05:00
void RimViewController : : updateTimeStepLink ( )
2015-09-15 03:45:39 -05:00
{
2015-09-25 04:26:37 -05:00
if ( ! this - > isTimeStepLinked ( ) ) return ;
2015-09-15 03:45:39 -05:00
if ( m_managedView )
{
2015-09-25 07:48:16 -05:00
RimViewLinker * viewLinker = this - > ownerViewLinker ( ) ;
viewLinker - > updateTimeStep ( viewLinker - > masterView ( ) , viewLinker - > masterView ( ) - > currentTimeStep ( ) ) ;
2015-09-15 03:45:39 -05:00
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-25 04:26:37 -05:00
void RimViewController : : updateResultColorsControl ( )
2015-09-15 03:45:39 -05:00
{
2015-09-25 04:26:37 -05:00
if ( ! this - > isResultColorControlled ( ) ) return ;
2015-09-23 05:50:06 -05:00
RimViewLinker * viewLinker = ownerViewLinker ( ) ;
viewLinker - > updateCellResult ( ) ;
2015-09-15 03:45:39 -05:00
}
2015-09-14 09:14:44 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
RimViewLinker * RimViewController : : ownerViewLinker ( )
2015-09-14 09:14:44 -05:00
{
RimViewLinker * viewLinker = NULL ;
this - > firstAnchestorOrThisOfType ( viewLinker ) ;
return viewLinker ;
}
2015-09-15 02:15:15 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
const RigCaseToCaseCellMapper * RimViewController : : cellMapper ( )
2015-09-15 02:15:15 -05:00
{
RimEclipseView * masterEclipseView = dynamic_cast < RimEclipseView * > ( masterView ( ) ) ;
RimEclipseView * dependEclipseView = managedEclipseView ( ) ;
RimGeoMechView * masterGeomechView = dynamic_cast < RimGeoMechView * > ( masterView ( ) ) ;
RimGeoMechView * dependGeomechView = managedGeoView ( ) ;
RigMainGrid * masterEclGrid = NULL ;
RigMainGrid * dependEclGrid = NULL ;
RigFemPart * masterFemPart = NULL ;
RigFemPart * dependFemPart = NULL ;
if ( masterEclipseView & & masterEclipseView - > eclipseCase ( ) - > reservoirData ( ) )
{
masterEclGrid = masterEclipseView - > eclipseCase ( ) - > reservoirData ( ) - > mainGrid ( ) ;
}
if ( dependEclipseView & & dependEclipseView - > eclipseCase ( ) - > reservoirData ( ) )
{
dependEclGrid = dependEclipseView - > eclipseCase ( ) - > reservoirData ( ) - > mainGrid ( ) ;
}
if ( masterGeomechView & & masterGeomechView - > geoMechCase ( ) - > geoMechData ( )
& & masterGeomechView - > geoMechCase ( ) - > geoMechData ( ) - > femParts ( ) - > partCount ( ) )
{
masterFemPart = masterGeomechView - > geoMechCase ( ) - > geoMechData ( ) - > femParts ( ) - > part ( 0 ) ;
}
if ( dependGeomechView & & dependGeomechView - > geoMechCase ( ) - > geoMechData ( )
& & dependGeomechView - > geoMechCase ( ) - > geoMechData ( ) - > femParts ( ) - > partCount ( ) )
{
dependFemPart = dependGeomechView - > geoMechCase ( ) - > geoMechData ( ) - > femParts ( ) - > part ( 0 ) ;
}
// If we have the correct mapping already, return it.
if ( m_caseToCaseCellMapper . notNull ( ) )
{
if ( masterEclGrid = = m_caseToCaseCellMapper - > masterGrid ( )
& & dependEclGrid = = m_caseToCaseCellMapper - > dependentGrid ( )
& & masterFemPart = = m_caseToCaseCellMapper - > masterFemPart ( )
& & dependFemPart = = m_caseToCaseCellMapper - > dependentFemPart ( ) )
{
return m_caseToCaseCellMapper . p ( ) ;
}
else
{
m_caseToCaseCellMapper = NULL ;
}
}
// Create the mapping if needed
if ( m_caseToCaseCellMapper . isNull ( ) )
{
if ( masterEclGrid & & dependFemPart )
{
m_caseToCaseCellMapper = new RigCaseToCaseCellMapper ( masterEclGrid , dependFemPart ) ;
}
else if ( masterEclGrid & & dependEclGrid )
{
m_caseToCaseCellMapper = new RigCaseToCaseCellMapper ( masterEclGrid , dependEclGrid ) ;
}
else if ( masterFemPart & & dependFemPart )
{
m_caseToCaseCellMapper = new RigCaseToCaseCellMapper ( masterFemPart , dependFemPart ) ;
}
else if ( masterFemPart & & dependEclGrid )
{
m_caseToCaseCellMapper = new RigCaseToCaseCellMapper ( masterFemPart , dependEclGrid ) ;
}
}
return m_caseToCaseCellMapper . p ( ) ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 04:29:01 -05:00
RimView * RimViewController : : masterView ( )
2015-09-15 02:15:15 -05:00
{
2015-09-24 04:29:01 -05:00
return ownerViewLinker ( ) - > masterView ( ) ;
2015-09-15 02:15:15 -05:00
}
2015-09-21 11:53:08 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-24 10:40:45 -05:00
bool RimViewController : : isMasterAndDepViewDifferentType ( )
2015-09-21 11:53:08 -05:00
{
RimEclipseView * eclipseMasterView = dynamic_cast < RimEclipseView * > ( masterView ( ) ) ;
RimGeoMechView * geoMasterView = dynamic_cast < RimGeoMechView * > ( masterView ( ) ) ;
bool isMasterAndDependentViewDifferentType = false ;
if ( eclipseMasterView & & ! managedEclipseView ( ) )
{
isMasterAndDependentViewDifferentType = true ;
}
if ( geoMasterView & & ! managedGeoView ( ) )
{
isMasterAndDependentViewDifferentType = true ;
}
return isMasterAndDependentViewDifferentType ;
}
2015-09-25 07:48:16 -05:00
2015-09-25 02:39:42 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewController : : scheduleCreateDisplayModelAndRedrawForDependentView ( )
{
2015-09-25 04:26:37 -05:00
if ( ! this - > isActive ( ) ) return ;
2015-09-25 02:39:42 -05:00
if ( this - > isVisibleCellsOveridden ( )
2015-10-19 05:10:18 -05:00
| | this - > isRangeFiltersControlled ( )
2015-09-25 04:26:37 -05:00
| | this - > isPropertyFilterOveridden ( )
| | this - > isResultColorControlled ( )
2015-09-25 02:39:42 -05:00
)
{
if ( this - > managedView ( ) )
{
this - > managedView ( ) - > scheduleCreateDisplayModelAndRedraw ( ) ;
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewController : : scheduleGeometryRegenForDepViews ( RivCellSetEnum geometryType )
{
2015-09-25 04:26:37 -05:00
if ( ! this - > isActive ( ) ) return ;
2015-09-25 02:39:42 -05:00
2015-09-25 04:26:37 -05:00
if ( this - > isVisibleCellsOveridden ( )
2015-10-19 05:10:18 -05:00
| | this - > isRangeFiltersControlled ( )
2015-09-25 04:26:37 -05:00
| | this - > isPropertyFilterOveridden ( )
| | this - > isResultColorControlled ( )
2015-09-25 02:39:42 -05:00
)
{
if ( this - > managedView ( ) )
{
2015-09-25 04:26:37 -05:00
if ( this - > isVisibleCellsOveridden ( ) )
{
2015-09-25 02:39:42 -05:00
this - > managedView ( ) - > scheduleGeometryRegen ( OVERRIDDEN_CELL_VISIBILITY ) ;
}
2015-09-25 04:26:37 -05:00
this - > managedView ( ) - > scheduleGeometryRegen ( geometryType ) ;
2015-09-25 02:39:42 -05:00
}
}
}
2015-09-25 04:26:37 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimViewController : : isActive ( )
{
return ownerViewLinker ( ) - > isActive ( ) & & this - > m_isActive ( ) ;
}
2015-09-25 02:39:42 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimViewController : : isCameraLinked ( )
{
2015-09-25 04:26:37 -05:00
if ( ownerViewLinker ( ) - > isActive ( ) & & this - > m_isActive ( ) )
2015-09-25 02:39:42 -05:00
{
return m_syncCamera ;
}
else
{
return false ;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimViewController : : isTimeStepLinked ( )
{
2015-09-25 04:26:37 -05:00
if ( ownerViewLinker ( ) - > isActive ( ) & & this - > m_isActive ( ) )
2015-09-25 02:39:42 -05:00
{
return m_syncTimeStep ;
}
else
{
return false ;
}
}
2015-09-21 11:53:08 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-25 02:39:42 -05:00
bool RimViewController : : isResultColorControlled ( )
{
2015-09-25 04:26:37 -05:00
if ( ownerViewLinker ( ) - > isActive ( ) & & this - > m_isActive ( ) )
2015-09-25 02:39:42 -05:00
{
return m_syncCellResult ;
}
else
{
return false ;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimViewController : : isVisibleCellsOveridden ( )
2015-09-21 11:53:08 -05:00
{
2015-09-24 10:40:45 -05:00
if ( isMasterAndDepViewDifferentType ( ) )
2015-09-21 11:53:08 -05:00
{
2015-09-25 04:26:37 -05:00
if ( ownerViewLinker ( ) - > isActive ( ) & & this - > m_isActive ( ) )
2015-09-24 10:40:45 -05:00
{
return m_syncVisibleCells ( ) ;
}
else
{
return false ;
}
2015-09-21 11:53:08 -05:00
}
else
{
return false ;
}
}
2015-10-19 05:10:18 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimViewController : : isRangeFilterControlPossible ( )
{
2015-10-29 05:21:08 -05:00
return true ;
#if 0
2015-10-24 04:56:15 -05:00
if ( ! isMasterAndDepViewDifferentType ( ) ) return true ;
// Make sure the cases are in the same domain
RimEclipseView * eclipseView = dynamic_cast < RimEclipseView * > ( masterView ( ) ) ;
RimGeoMechView * geomView = dynamic_cast < RimGeoMechView * > ( masterView ( ) ) ;
if ( ! geomView ) geomView = managedGeoView ( ) ;
if ( ! eclipseView ) eclipseView = managedEclipseView ( ) ;
if ( eclipseView & & geomView )
{
if ( eclipseView - > eclipseCase ( ) - > reservoirData ( ) & & geomView - > geoMechCase ( ) - > geoMechData ( ) )
{
RigMainGrid * eclGrid = eclipseView - > eclipseCase ( ) - > reservoirData ( ) - > mainGrid ( ) ;
RigFemPart * femPart = geomView - > geoMechCase ( ) - > geoMechData ( ) - > femParts ( ) - > part ( 0 ) ;
if ( eclGrid & & femPart )
{
cvf : : BoundingBox fembb = femPart - > boundingBox ( ) ;
cvf : : BoundingBox eclbb = eclGrid - > boundingBox ( ) ;
return fembb . contains ( eclbb . min ( ) ) & & fembb . contains ( eclbb . max ( ) ) ;
}
}
}
return false ;
2015-10-29 05:21:08 -05:00
# endif
2015-10-19 05:10:18 -05:00
}
2015-09-25 02:39:42 -05:00
2015-10-29 05:21:08 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimViewController : : isRangeFilterMappingApliccable ( )
{
if ( ! isMasterAndDepViewDifferentType ( ) ) return false ;
// Make sure the cases are in the same domain
RimEclipseView * eclipseView = dynamic_cast < RimEclipseView * > ( masterView ( ) ) ;
RimGeoMechView * geomView = dynamic_cast < RimGeoMechView * > ( masterView ( ) ) ;
if ( ! geomView ) geomView = managedGeoView ( ) ;
if ( ! eclipseView ) eclipseView = managedEclipseView ( ) ;
if ( eclipseView & & geomView )
{
if ( eclipseView - > eclipseCase ( ) - > reservoirData ( ) & & geomView - > geoMechCase ( ) - > geoMechData ( ) )
{
RigMainGrid * eclGrid = eclipseView - > eclipseCase ( ) - > reservoirData ( ) - > mainGrid ( ) ;
RigFemPart * femPart = geomView - > geoMechCase ( ) - > geoMechData ( ) - > femParts ( ) - > part ( 0 ) ;
if ( eclGrid & & femPart )
{
cvf : : BoundingBox fembb = femPart - > boundingBox ( ) ;
cvf : : BoundingBox eclbb = eclGrid - > boundingBox ( ) ;
return fembb . contains ( eclbb . min ( ) ) & & fembb . contains ( eclbb . max ( ) ) ;
}
}
}
return false ;
}
2015-09-24 10:40:45 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-10-19 05:10:18 -05:00
bool RimViewController : : isRangeFiltersControlled ( )
2015-09-24 10:40:45 -05:00
{
2015-10-19 05:10:18 -05:00
if ( ! isRangeFilterControlPossible ( ) ) return false ;
2015-09-25 04:26:37 -05:00
if ( ownerViewLinker ( ) - > isActive ( ) & & this - > m_isActive ( ) )
2015-09-24 10:40:45 -05:00
{
2015-09-25 02:39:42 -05:00
return m_syncRangeFilters ;
}
else
{
return false ;
2015-09-24 10:40:45 -05:00
}
}
2015-10-24 05:24:09 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimViewController : : isPropertyFilterControlPossible ( )
{
// The cases need to be the same
RimGeoMechView * geomView = dynamic_cast < RimGeoMechView * > ( masterView ( ) ) ;
if ( geomView )
{
RimGeoMechView * depGeomView = managedGeoView ( ) ;
if ( depGeomView & & geomView - > geoMechCase ( ) = = depGeomView - > geoMechCase ( ) )
{
return true ;
}
}
RimEclipseView * eclipseView = dynamic_cast < RimEclipseView * > ( masterView ( ) ) ;
if ( eclipseView )
{
RimEclipseView * depEclipseView = managedEclipseView ( ) ;
if ( depEclipseView & & eclipseView - > eclipseCase ( ) = = depEclipseView - > eclipseCase ( ) )
{
return true ;
}
}
return false ;
}
2015-09-24 10:40:45 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-09-25 02:39:42 -05:00
bool RimViewController : : isPropertyFilterOveridden ( )
2015-09-24 10:40:45 -05:00
{
2015-10-24 05:24:09 -05:00
if ( ! isPropertyFilterControlPossible ( ) ) return false ;
2015-09-25 04:26:37 -05:00
if ( ownerViewLinker ( ) - > isActive ( ) & & this - > m_isActive ( ) )
2015-09-24 10:40:45 -05:00
{
2015-09-25 02:39:42 -05:00
return m_syncPropertyFilters ;
}
else
{
return false ;
2015-09-24 10:40:45 -05:00
}
}
2015-10-19 05:10:18 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-10-20 04:13:31 -05:00
void RimViewController : : updateRangeFilterOverrides ( RimCellRangeFilter * changedRangeFilter )
2015-10-19 05:10:18 -05:00
{
2015-10-20 04:13:31 -05:00
if ( ! isRangeFiltersControlled ( ) )
2015-10-19 05:10:18 -05:00
{
2015-10-20 04:13:31 -05:00
managedView ( ) - > setOverrideRangeFilterCollection ( NULL ) ;
2015-10-19 05:10:18 -05:00
return ;
}
2015-10-29 05:21:08 -05:00
// Todo: Optimize by only mapping the changed range filter, if needed.
2015-10-20 10:39:36 -05:00
{
// Copy the rangeFilterCollection
2015-10-19 05:10:18 -05:00
2015-10-20 10:39:36 -05:00
RimCellRangeFilterCollection * sourceFilterCollection = masterView ( ) - > rangeFilterCollection ( ) ;
QString xmlRangeFilterCollCopy = sourceFilterCollection - > writeObjectToXmlString ( ) ;
PdmObjectHandle * objectCopy = PdmXmlObjectHandle : : readUnknownObjectFromXmlString ( xmlRangeFilterCollCopy , caf : : PdmDefaultObjectFactory : : instance ( ) ) ;
RimCellRangeFilterCollection * overrideRangeFilterColl = dynamic_cast < RimCellRangeFilterCollection * > ( objectCopy ) ;
2015-10-19 05:10:18 -05:00
2015-10-29 05:21:08 -05:00
// Convert the range filter to fit in the managed view if needed
if ( isRangeFilterMappingApliccable ( ) )
2015-10-20 10:39:36 -05:00
{
2015-10-29 05:21:08 -05:00
RimEclipseView * eclipseMasterView = dynamic_cast < RimEclipseView * > ( masterView ( ) ) ;
RimGeoMechView * geoMasterView = dynamic_cast < RimGeoMechView * > ( masterView ( ) ) ;
RimEclipseView * depEclView = managedEclipseView ( ) ;
RimGeoMechView * depGeomView = managedGeoView ( ) ;
if ( eclipseMasterView & & depGeomView )
2015-10-20 10:39:36 -05:00
{
2015-10-29 05:21:08 -05:00
if ( eclipseMasterView - > eclipseCase ( ) - > reservoirData ( ) )
2015-10-21 15:23:43 -05:00
{
2015-10-29 05:21:08 -05:00
RigMainGrid * srcEclGrid = eclipseMasterView - > eclipseCase ( ) - > reservoirData ( ) - > mainGrid ( ) ;
RigFemPart * dstFemPart = depGeomView - > geoMechCase ( ) - > geoMechData ( ) - > femParts ( ) - > part ( 0 ) ;
for ( size_t rfIdx = 0 ; rfIdx < sourceFilterCollection - > rangeFilters ( ) . size ( ) ; + + rfIdx )
{
RimCellRangeFilter * srcRFilter = sourceFilterCollection - > rangeFilters [ rfIdx ] ;
RimCellRangeFilter * dstRFilter = overrideRangeFilterColl - > rangeFilters [ rfIdx ] ;
RigCaseToCaseRangeFilterMapper : : convertRangeFilterEclToFem ( srcRFilter , srcEclGrid ,
dstRFilter , dstFemPart ) ;
}
2015-10-21 15:23:43 -05:00
}
2015-10-20 10:39:36 -05:00
}
2015-10-29 05:21:08 -05:00
else if ( geoMasterView & & depEclView )
2015-10-20 10:39:36 -05:00
{
2015-10-29 05:21:08 -05:00
if ( depEclView - > eclipseCase ( ) - > reservoirData ( ) )
2015-10-21 15:23:43 -05:00
{
2015-10-29 05:21:08 -05:00
RigFemPart * srcFemPart = geoMasterView - > geoMechCase ( ) - > geoMechData ( ) - > femParts ( ) - > part ( 0 ) ;
RigMainGrid * dstEclGrid = depEclView - > eclipseCase ( ) - > reservoirData ( ) - > mainGrid ( ) ;
for ( size_t rfIdx = 0 ; rfIdx < sourceFilterCollection - > rangeFilters ( ) . size ( ) ; + + rfIdx )
{
RimCellRangeFilter * srcRFilter = sourceFilterCollection - > rangeFilters [ rfIdx ] ;
RimCellRangeFilter * dstRFilter = overrideRangeFilterColl - > rangeFilters [ rfIdx ] ;
RigCaseToCaseRangeFilterMapper : : convertRangeFilterFemToEcl ( srcRFilter , srcFemPart ,
dstRFilter , dstEclGrid ) ;
}
2015-10-21 15:23:43 -05:00
}
2015-10-20 10:39:36 -05:00
}
}
2015-10-19 05:10:18 -05:00
2015-10-20 10:39:36 -05:00
managedView ( ) - > setOverrideRangeFilterCollection ( overrideRangeFilterColl ) ;
}
2015-10-29 05:21:08 -05:00
2015-10-20 10:39:36 -05:00
2015-10-19 05:10:18 -05:00
}
2015-10-21 05:45:35 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewController : : applyRangeFilterCollectionByUserChoice ( )
{
if ( ! m_managedView - > overrideRangeFilterCollection ( ) )
{
return ;
}
bool restoreOriginal = askUserToRestoreOriginalRangeFilterCollection ( m_managedView - > name ) ;
if ( restoreOriginal )
{
m_managedView - > setOverrideRangeFilterCollection ( NULL ) ;
}
else
{
m_managedView - > replaceRangeFilterCollectionWithOverride ( ) ;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimViewController : : askUserToRestoreOriginalRangeFilterCollection ( const QString & viewName )
{
RimView * activeView = RiaApplication : : instance ( ) - > activeReservoirView ( ) ;
QMessageBox msgBox ( activeView - > viewer ( ) - > layoutWidget ( ) ) ;
msgBox . setIcon ( QMessageBox : : Question ) ;
QString questionText ;
questionText = QString ( " The linked view named \" %1 \" is about to be unlinked. The range filters can either restore the original or keep the current range filters based on the master view. " ) . arg ( viewName ) ;
msgBox . setText ( questionText ) ;
msgBox . setInformativeText ( " Do you want to restore the original range filters? " ) ;
msgBox . setStandardButtons ( QMessageBox : : Yes | QMessageBox : : No ) ;
int ret = msgBox . exec ( ) ;
if ( ret = = QMessageBox : : Yes )
{
return true ;
}
else
{
return false ;
}
}