mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Support linking of 2D intersection views
* Major refactor from RimGridView to Rim3dView * Move view linker/controller functions to Rim3dView * Add bitmask to define the content of a 3D view * Link views based on matching content * Enable bit mask operators at global scope * Make it possible to use 2d intersection views as comparison views * Fix crash when a view used as comparison view is deleted * Move unlinking to Rim3dView * Add options to snapshot only 3D views/plots as part of regression testing * WBS plot: Improve default name, hide axis for some tracks
This commit is contained in:
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "enum_bitmask.hpp"
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -213,18 +215,20 @@ enum class MultiPlotPageUpdateType : uint32_t
|
|||||||
ALL = 0b00000111
|
ALL = 0b00000111
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr enum MultiPlotPageUpdateType operator|( const enum MultiPlotPageUpdateType selfValue,
|
|
||||||
const enum MultiPlotPageUpdateType inValue )
|
|
||||||
{
|
|
||||||
return ( enum MultiPlotPageUpdateType )( uint32_t( selfValue ) | uint32_t( inValue ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
constexpr enum MultiPlotPageUpdateType operator&( const enum MultiPlotPageUpdateType selfValue,
|
|
||||||
const enum MultiPlotPageUpdateType inValue )
|
|
||||||
{
|
|
||||||
return ( enum MultiPlotPageUpdateType )( uint32_t( selfValue ) & uint32_t( inValue ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<double> viewScaleOptions();
|
std::vector<double> viewScaleOptions();
|
||||||
|
|
||||||
|
enum class View3dContent
|
||||||
|
{
|
||||||
|
NONE = 0b00000000,
|
||||||
|
ECLIPSE_DATA = 0b00000001,
|
||||||
|
GEOMECH_DATA = 0b00000010,
|
||||||
|
FLAT_INTERSECTION = 0b00000100,
|
||||||
|
CONTOUR = 0b00001000,
|
||||||
|
ALL = 0b00001111
|
||||||
|
};
|
||||||
|
|
||||||
}; // namespace RiaDefines
|
}; // namespace RiaDefines
|
||||||
|
|
||||||
|
// Activate bit mask operators at global scope
|
||||||
|
ENABLE_BITMASK_OPERATORS( RiaDefines::MultiPlotPageUpdateType )
|
||||||
|
ENABLE_BITMASK_OPERATORS( RiaDefines::View3dContent )
|
||||||
|
@@ -83,6 +83,9 @@ RiaRegressionTest::RiaRegressionTest()
|
|||||||
|
|
||||||
CAF_PDM_InitField( &invalidateExternalFilePaths, "invalidateExternalFilePaths", false, "Invalidate External File Paths" );
|
CAF_PDM_InitField( &invalidateExternalFilePaths, "invalidateExternalFilePaths", false, "Invalidate External File Paths" );
|
||||||
CAF_PDM_InitFieldNoDefault( &overridePlotEngine, "forcePlotEngine", "Force Plot Engine" );
|
CAF_PDM_InitFieldNoDefault( &overridePlotEngine, "forcePlotEngine", "Force Plot Engine" );
|
||||||
|
|
||||||
|
CAF_PDM_InitField( &exportSnapshots3dViews, "exportSnapshots3dViews", true, "Export Snapshots 3D Views" );
|
||||||
|
CAF_PDM_InitField( &exportSnapshotsPlots, "exportSnapshotsPlots", true, "Export Snapshots Plots" );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@@ -53,6 +53,9 @@ public:
|
|||||||
caf::PdmField<bool> appendTestsAfterTestFilter;
|
caf::PdmField<bool> appendTestsAfterTestFilter;
|
||||||
caf::PdmField<bool> invalidateExternalFilePaths;
|
caf::PdmField<bool> invalidateExternalFilePaths;
|
||||||
|
|
||||||
|
caf::PdmField<bool> exportSnapshots3dViews;
|
||||||
|
caf::PdmField<bool> exportSnapshotsPlots;
|
||||||
|
|
||||||
caf::PdmField<caf::AppEnum<PlotEngine>> overridePlotEngine;
|
caf::PdmField<caf::AppEnum<PlotEngine>> overridePlotEngine;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@@ -238,15 +238,22 @@ void RiaRegressionTestRunner::runRegressionTest()
|
|||||||
// Wait until all command objects have completed
|
// Wait until all command objects have completed
|
||||||
app->waitUntilCommandObjectsHasBeenProcessed();
|
app->waitUntilCommandObjectsHasBeenProcessed();
|
||||||
|
|
||||||
setDefaultSnapshotSizeFor3dViews();
|
|
||||||
|
|
||||||
QString fullPathGeneratedFolder = testCaseFolder.absoluteFilePath( generatedFolderName );
|
QString fullPathGeneratedFolder = testCaseFolder.absoluteFilePath( generatedFolderName );
|
||||||
RicSnapshotAllViewsToFileFeature::exportSnapshotOfViewsIntoFolder( fullPathGeneratedFolder );
|
if ( regressionTestConfig.exportSnapshots3dViews )
|
||||||
|
{
|
||||||
|
setDefaultSnapshotSizeFor3dViews();
|
||||||
|
|
||||||
QApplication::processEvents();
|
RicSnapshotAllViewsToFileFeature::exportSnapshotOfViewsIntoFolder( fullPathGeneratedFolder );
|
||||||
setDefaultSnapshotSizeForPlotWindows();
|
|
||||||
|
|
||||||
RicSnapshotAllPlotsToFileFeature::exportSnapshotOfPlotsIntoFolder( fullPathGeneratedFolder );
|
QApplication::processEvents();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( regressionTestConfig.exportSnapshotsPlots )
|
||||||
|
{
|
||||||
|
setDefaultSnapshotSizeForPlotWindows();
|
||||||
|
|
||||||
|
RicSnapshotAllPlotsToFileFeature::exportSnapshotOfPlotsIntoFolder( fullPathGeneratedFolder );
|
||||||
|
}
|
||||||
|
|
||||||
uint64_t usedMemoryBeforeClose = caf::MemoryInspector::getApplicationPhysicalMemoryUsageMiB();
|
uint64_t usedMemoryBeforeClose = caf::MemoryInspector::getApplicationPhysicalMemoryUsageMiB();
|
||||||
|
|
||||||
|
188
ApplicationLibCode/Application/Tools/enum_bitmask.hpp
Normal file
188
ApplicationLibCode/Application/Tools/enum_bitmask.hpp
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
//////////////////////////////////////////////////
|
||||||
|
// Taken from
|
||||||
|
// https://gist.github.com/StrikerX3/46b9058d6c61387b3f361ef9d7e00cd4
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/*
|
||||||
|
Type-safe enum class bitmasks.
|
||||||
|
Based on work by Andre Haupt from his blog at
|
||||||
|
http://blog.bitwigglers.org/using-enum-classes-as-type-safe-bitmasks/
|
||||||
|
To enable enum classes to be used as bitmasks, use the ENABLE_BITMASK_OPERATORS
|
||||||
|
macro:
|
||||||
|
enum class MyBitmask {
|
||||||
|
None = 0b0000,
|
||||||
|
One = 0b0001,
|
||||||
|
Two = 0b0010,
|
||||||
|
Three = 0b0100,
|
||||||
|
};
|
||||||
|
ENABLE_BITMASK_OPERATORS(MyBitmask)
|
||||||
|
From now on, MyBitmask's values can be used with bitwise operators.
|
||||||
|
You may find it cumbersome to check for the presence or absence of specific
|
||||||
|
values in enum class bitmasks. For example:
|
||||||
|
MyBitmask bm = ...;
|
||||||
|
MyBitmask oneAndThree = (MyBitmask::One | MyBitmask::Three);
|
||||||
|
// Check if either bit one or three is set
|
||||||
|
if (bm & oneAndThree != MyBitmask::None) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
// Check if both bits one and three are set
|
||||||
|
if (bm & oneAndThree == oneAndThree) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
To help with that, you can wrap the bitmask into the BitmaskEnum type, which
|
||||||
|
provides a set of bitmask checks and useful conversions:
|
||||||
|
MyBitmask bm = ...;
|
||||||
|
MyBitmask oneAndThree = (MyBitmask::One | MyBitmask::Three);
|
||||||
|
auto wbm = BitmaskEnum(bm);
|
||||||
|
// Check if either bit one or three is set
|
||||||
|
if (bm.AnyOf(oneAndThree)) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
// Check if both bits one and three are set
|
||||||
|
if (bm.AllOf(oneAndThree)) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
// Check if any bit is set
|
||||||
|
if (bm) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
// Convert back to the enum class
|
||||||
|
MyBitmask backToEnum = wbm;
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
MIT License
|
||||||
|
Copyright (c) 2019 Ivan Roberto de Oliveira
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
|
#define ENABLE_BITMASK_OPERATORS( x ) \
|
||||||
|
template <> \
|
||||||
|
struct is_bitmask_enum<x> \
|
||||||
|
{ \
|
||||||
|
static const bool enable = true; \
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename Enum>
|
||||||
|
struct is_bitmask_enum
|
||||||
|
{
|
||||||
|
static const bool enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class Enum>
|
||||||
|
inline constexpr bool is_bitmask_enum_v = is_bitmask_enum<Enum>::enable;
|
||||||
|
|
||||||
|
// ----- Bitwise operators ----------------------------------------------------
|
||||||
|
|
||||||
|
template <typename Enum>
|
||||||
|
typename std::enable_if_t<is_bitmask_enum_v<Enum>, Enum> operator|( Enum lhs, Enum rhs )
|
||||||
|
{
|
||||||
|
using underlying = typename std::underlying_type_t<Enum>;
|
||||||
|
return static_cast<Enum>( static_cast<underlying>( lhs ) | static_cast<underlying>( rhs ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Enum>
|
||||||
|
typename std::enable_if_t<is_bitmask_enum_v<Enum>, Enum> operator&( Enum lhs, Enum rhs )
|
||||||
|
{
|
||||||
|
using underlying = typename std::underlying_type_t<Enum>;
|
||||||
|
return static_cast<Enum>( static_cast<underlying>( lhs ) & static_cast<underlying>( rhs ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Enum>
|
||||||
|
typename std::enable_if_t<is_bitmask_enum_v<Enum>, Enum> operator^( Enum lhs, Enum rhs )
|
||||||
|
{
|
||||||
|
using underlying = typename std::underlying_type_t<Enum>;
|
||||||
|
return static_cast<Enum>( static_cast<underlying>( lhs ) ^ static_cast<underlying>( rhs ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Enum>
|
||||||
|
typename std::enable_if_t<is_bitmask_enum_v<Enum>, Enum> operator~( Enum rhs )
|
||||||
|
{
|
||||||
|
using underlying = typename std::underlying_type_t<Enum>;
|
||||||
|
return static_cast<Enum>( ~static_cast<underlying>( rhs ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----- Bitwise assignment operators -----------------------------------------
|
||||||
|
|
||||||
|
template <typename Enum>
|
||||||
|
typename std::enable_if_t<is_bitmask_enum_v<Enum>, Enum> operator|=( Enum& lhs, Enum rhs )
|
||||||
|
{
|
||||||
|
using underlying = typename std::underlying_type_t<Enum>;
|
||||||
|
lhs = static_cast<Enum>( static_cast<underlying>( lhs ) | static_cast<underlying>( rhs ) );
|
||||||
|
return lhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Enum>
|
||||||
|
typename std::enable_if_t<is_bitmask_enum_v<Enum>, Enum> operator&=( Enum& lhs, Enum rhs )
|
||||||
|
{
|
||||||
|
using underlying = typename std::underlying_type_t<Enum>;
|
||||||
|
lhs = static_cast<Enum>( static_cast<underlying>( lhs ) & static_cast<underlying>( rhs ) );
|
||||||
|
return lhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Enum>
|
||||||
|
typename std::enable_if_t<is_bitmask_enum_v<Enum>, Enum> operator^=( Enum& lhs, Enum rhs )
|
||||||
|
{
|
||||||
|
using underlying = typename std::underlying_type_t<Enum>;
|
||||||
|
lhs = static_cast<Enum>( static_cast<underlying>( lhs ) ^ static_cast<underlying>( rhs ) );
|
||||||
|
return lhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----- Bitwise mask checks --------------------------------------------------
|
||||||
|
|
||||||
|
template <typename Enum>
|
||||||
|
struct BitmaskEnum
|
||||||
|
{
|
||||||
|
const Enum value;
|
||||||
|
static const Enum none = static_cast<Enum>( 0 );
|
||||||
|
|
||||||
|
using underlying = typename std::underlying_type_t<Enum>;
|
||||||
|
|
||||||
|
BitmaskEnum( Enum value )
|
||||||
|
: value( value )
|
||||||
|
{
|
||||||
|
static_assert( is_bitmask_enum_v<Enum> );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert back to enum if required
|
||||||
|
inline operator Enum() const { return value; }
|
||||||
|
|
||||||
|
// Convert to true if there is any bit set in the bitmask
|
||||||
|
inline operator bool() const { return Any(); }
|
||||||
|
|
||||||
|
// Returns true if any bit is set
|
||||||
|
inline bool Any() const { return value != none; }
|
||||||
|
|
||||||
|
// Returns true if all bits are clear
|
||||||
|
inline bool None() const { return value == none; }
|
||||||
|
|
||||||
|
// Returns true if any bit in the given mask is set
|
||||||
|
inline bool AnyOf( const Enum& mask ) const { return ( value & mask ) != none; }
|
||||||
|
|
||||||
|
// Returns true if all bits in the given mask are set
|
||||||
|
inline bool AllOf( const Enum& mask ) const { return ( value & mask ) == mask; }
|
||||||
|
|
||||||
|
// Returns true if none of the bits in the given mask are set
|
||||||
|
inline bool NoneOf( const Enum& mask ) const { return ( value & mask ) == none; }
|
||||||
|
|
||||||
|
// Returns true if any bits excluding the mask are set
|
||||||
|
inline bool AnyExcept( const Enum& mask ) const { return ( value & ~mask ) != none; }
|
||||||
|
|
||||||
|
// Returns true if no bits excluding the mask are set
|
||||||
|
inline bool NoneExcept( const Enum& mask ) const { return ( value & ~mask ) == none; }
|
||||||
|
};
|
@@ -97,7 +97,7 @@ void RicShowContributingWellsFeature::onActionTriggered( bool isChecked )
|
|||||||
{
|
{
|
||||||
modifiedView->createDisplayModelAndRedraw();
|
modifiedView->createDisplayModelAndRedraw();
|
||||||
|
|
||||||
std::vector<RimGridView*> viewsToUpdate;
|
std::vector<Rim3dView*> viewsToUpdate;
|
||||||
viewsToUpdate.push_back( modifiedView );
|
viewsToUpdate.push_back( modifiedView );
|
||||||
|
|
||||||
RimViewManipulator::applySourceViewCameraOnDestinationViews( eclipseView, viewsToUpdate );
|
RimViewManipulator::applySourceViewCameraOnDestinationViews( eclipseView, viewsToUpdate );
|
||||||
|
@@ -49,7 +49,7 @@ RimGridView* gridViewFrom2dIntersectionView( const Rim2dIntersectionView* int2dV
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicSelectColorResult::setupActionLook( QAction* actionToSetup )
|
void RicSelectColorResult::setupActionLook( QAction* actionToSetup )
|
||||||
{
|
{
|
||||||
actionToSetup->setText( "Select Color Result" );
|
actionToSetup->setText( "Activate Result in Project Tree" );
|
||||||
actionToSetup->setIcon( QIcon( ":/CellResult.png" ) );
|
actionToSetup->setIcon( QIcon( ":/CellResult.png" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,8 +68,7 @@ bool RicSelectColorResult::isCommandEnabled()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicSelectColorResult::onActionTriggered( bool isChecked )
|
void RicSelectColorResult::onActionTriggered( bool isChecked )
|
||||||
{
|
{
|
||||||
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
|
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
|
||||||
bool isComparisonView = ( activeView != RiaApplication::instance()->activeGridView() );
|
|
||||||
|
|
||||||
Rim2dIntersectionView* int2dView = dynamic_cast<Rim2dIntersectionView*>( activeView );
|
Rim2dIntersectionView* int2dView = dynamic_cast<Rim2dIntersectionView*>( activeView );
|
||||||
RimGridView* gridView = nullptr;
|
RimGridView* gridView = nullptr;
|
||||||
@@ -82,13 +81,13 @@ void RicSelectColorResult::onActionTriggered( bool isChecked )
|
|||||||
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>( gridView );
|
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>( gridView );
|
||||||
if ( eclView )
|
if ( eclView )
|
||||||
{
|
{
|
||||||
Riu3DMainWindowTools::selectAsCurrentItem( eclView->cellResult(), int2dView == nullptr && !isComparisonView );
|
Riu3DMainWindowTools::selectAsCurrentItem( eclView->cellResult(), int2dView == nullptr );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RimGeoMechView* geoMechView = dynamic_cast<RimGeoMechView*>( gridView );
|
RimGeoMechView* geoMechView = dynamic_cast<RimGeoMechView*>( gridView );
|
||||||
if ( geoMechView )
|
if ( geoMechView )
|
||||||
{
|
{
|
||||||
Riu3DMainWindowTools::selectAsCurrentItem( geoMechView->cellResult(), int2dView == nullptr && !isComparisonView );
|
Riu3DMainWindowTools::selectAsCurrentItem( geoMechView->cellResult(), int2dView == nullptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -42,7 +42,7 @@ bool RicCompareTo3dViewFeature::isCommandEnabled()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicCompareTo3dViewFeature::onActionTriggered( bool isChecked )
|
void RicCompareTo3dViewFeature::onActionTriggered( bool isChecked )
|
||||||
{
|
{
|
||||||
RimGridView* activeView = RiaApplication::instance()->activeGridView();
|
auto* activeView = RiaApplication::instance()->activeReservoirView();
|
||||||
|
|
||||||
QVariant userData = this->userData();
|
QVariant userData = this->userData();
|
||||||
auto view = static_cast<Rim3dView*>( userData.value<void*>() );
|
auto view = static_cast<Rim3dView*>( userData.value<void*>() );
|
||||||
@@ -51,7 +51,9 @@ void RicCompareTo3dViewFeature::onActionTriggered( bool isChecked )
|
|||||||
{
|
{
|
||||||
activeView->setComparisonView( view );
|
activeView->setComparisonView( view );
|
||||||
activeView->scheduleCreateDisplayModelAndRedraw();
|
activeView->scheduleCreateDisplayModelAndRedraw();
|
||||||
activeView->overlayInfoConfig()->updateConnectedEditors();
|
|
||||||
|
auto gridView = dynamic_cast<RimGridView*>( activeView );
|
||||||
|
if ( gridView ) gridView->overlayInfoConfig()->updateConnectedEditors();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -53,7 +53,7 @@ public:
|
|||||||
if ( contextViewer )
|
if ( contextViewer )
|
||||||
{
|
{
|
||||||
// Link only the active view to an existing view link collection.
|
// Link only the active view to an existing view link collection.
|
||||||
RimGridView* activeView = RiaApplication::instance()->activeGridView();
|
auto* activeView = RiaApplication::instance()->activeReservoirView();
|
||||||
if ( !activeView ) return false;
|
if ( !activeView ) return false;
|
||||||
|
|
||||||
if ( activeView->assosiatedViewLinker() ) return false;
|
if ( activeView->assosiatedViewLinker() ) return false;
|
||||||
@@ -62,7 +62,7 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<RimGridView*> selectedGridViews;
|
std::vector<Rim3dView*> selectedGridViews;
|
||||||
|
|
||||||
caf::SelectionManager::instance()->objectsByTypeStrict( &selectedGridViews );
|
caf::SelectionManager::instance()->objectsByTypeStrict( &selectedGridViews );
|
||||||
for ( auto gridView : selectedGridViews )
|
for ( auto gridView : selectedGridViews )
|
||||||
@@ -85,10 +85,10 @@ public:
|
|||||||
|
|
||||||
void execute() { RicLinkVisibleViewsFeature::linkViews( m_viewsToLink ); }
|
void execute() { RicLinkVisibleViewsFeature::linkViews( m_viewsToLink ); }
|
||||||
|
|
||||||
const std::vector<RimGridView*>& viewsToLink() { return m_viewsToLink; }
|
const std::vector<Rim3dView*>& viewsToLink() { return m_viewsToLink; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<RimGridView*> m_viewsToLink;
|
std::vector<Rim3dView*> m_viewsToLink;
|
||||||
};
|
};
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@@ -44,29 +44,18 @@ bool RicLinkVisibleViewsFeature::isCommandEnabled()
|
|||||||
RimProject* proj = RimProject::current();
|
RimProject* proj = RimProject::current();
|
||||||
if ( !proj ) return false;
|
if ( !proj ) return false;
|
||||||
|
|
||||||
std::vector<Rim3dView*> visibleViews;
|
std::vector<Rim3dView*> visibleViews;
|
||||||
std::vector<RimGridView*> linkedviews;
|
|
||||||
std::vector<RimGridView*> visibleGridViews;
|
|
||||||
|
|
||||||
proj->allVisibleViews( visibleViews );
|
proj->allVisibleViews( visibleViews );
|
||||||
for ( Rim3dView* view : visibleViews )
|
|
||||||
{
|
|
||||||
RimGridView* gridView = dynamic_cast<RimGridView*>( view );
|
|
||||||
if ( gridView ) visibleGridViews.push_back( gridView );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
std::vector<Rim3dView*> linkedviews;
|
||||||
if ( proj->viewLinkerCollection() && proj->viewLinkerCollection()->viewLinker() )
|
if ( proj->viewLinkerCollection() && proj->viewLinkerCollection()->viewLinker() )
|
||||||
{
|
{
|
||||||
linkedviews = proj->viewLinkerCollection()->viewLinker()->allViews();
|
linkedviews = proj->viewLinkerCollection()->viewLinker()->allViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( visibleGridViews.size() >= 2 && ( linkedviews.size() < visibleGridViews.size() ) )
|
if ( visibleViews.size() >= 2 && ( linkedviews.size() < visibleViews.size() ) )
|
||||||
{
|
{
|
||||||
std::vector<RimGridView*> views;
|
return !findLinkableVisibleViews().empty();
|
||||||
findLinkableVisibleViews( views );
|
|
||||||
RicLinkVisibleViewsFeatureUi testUi;
|
|
||||||
testUi.setViews( views );
|
|
||||||
return !testUi.masterViewCandidates().empty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -77,10 +66,8 @@ bool RicLinkVisibleViewsFeature::isCommandEnabled()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicLinkVisibleViewsFeature::onActionTriggered( bool isChecked )
|
void RicLinkVisibleViewsFeature::onActionTriggered( bool isChecked )
|
||||||
{
|
{
|
||||||
std::vector<RimGridView*> linkableViews;
|
auto linkableViews = findLinkableVisibleViews();
|
||||||
findLinkableVisibleViews( linkableViews );
|
RicLinkVisibleViewsFeature::linkViews( linkableViews );
|
||||||
|
|
||||||
linkViews( linkableViews );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -95,53 +82,50 @@ void RicLinkVisibleViewsFeature::setupActionLook( QAction* actionToSetup )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicLinkVisibleViewsFeature::findLinkableVisibleViews( std::vector<RimGridView*>& views )
|
std::vector<Rim3dView*> RicLinkVisibleViewsFeature::findLinkableVisibleViews()
|
||||||
{
|
{
|
||||||
RimProject* proj = RimProject::current();
|
RimProject* proj = RimProject::current();
|
||||||
|
|
||||||
std::vector<RimGridView*> visibleGridViews;
|
std::vector<Rim3dView*> views;
|
||||||
proj->allVisibleGridViews( visibleGridViews );
|
|
||||||
|
|
||||||
for ( auto gridView : visibleGridViews )
|
std::vector<Rim3dView*> candidates;
|
||||||
|
proj->allVisibleViews( candidates );
|
||||||
|
|
||||||
|
for ( auto gridView : candidates )
|
||||||
{
|
{
|
||||||
if ( !gridView ) continue;
|
if ( gridView && !gridView->assosiatedViewLinker() ) views.push_back( gridView );
|
||||||
if ( gridView->assosiatedViewLinker() ) continue;
|
|
||||||
|
|
||||||
views.push_back( gridView );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return views;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicLinkVisibleViewsFeature::linkViews( std::vector<RimGridView*>& linkableViews )
|
void RicLinkVisibleViewsFeature::linkViews( std::vector<Rim3dView*>& linkableViews )
|
||||||
{
|
{
|
||||||
|
if ( linkableViews.empty() ) return;
|
||||||
|
|
||||||
RimProject* proj = RimProject::current();
|
RimProject* proj = RimProject::current();
|
||||||
RimViewLinker* viewLinker = proj->viewLinkerCollection->viewLinker();
|
RimViewLinker* viewLinker = proj->viewLinkerCollection->viewLinker();
|
||||||
|
|
||||||
std::vector<RimGridView*> masterCandidates = linkableViews;
|
|
||||||
|
|
||||||
if ( !viewLinker )
|
if ( !viewLinker )
|
||||||
{
|
{
|
||||||
// Create a new view linker
|
|
||||||
|
|
||||||
RimGridView* masterView = masterCandidates.front();
|
|
||||||
|
|
||||||
viewLinker = new RimViewLinker;
|
viewLinker = new RimViewLinker;
|
||||||
|
|
||||||
proj->viewLinkerCollection()->viewLinker = viewLinker;
|
proj->viewLinkerCollection()->viewLinker = viewLinker;
|
||||||
viewLinker->setMasterView( masterView );
|
viewLinker->setMasterView( linkableViews.front() );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( RimGridView* rimView : linkableViews )
|
Rim3dView* primaryView = viewLinker->masterView();
|
||||||
{
|
|
||||||
if ( rimView == viewLinker->masterView() ) continue;
|
|
||||||
|
|
||||||
viewLinker->addDependentView( rimView );
|
auto matchingViews = RicLinkVisibleViewsFeature::matchingViews( primaryView, linkableViews );
|
||||||
|
for ( auto v : matchingViews )
|
||||||
|
{
|
||||||
|
viewLinker->addDependentView( v );
|
||||||
}
|
}
|
||||||
|
|
||||||
viewLinker->updateDependentViews();
|
viewLinker->updateDependentViews();
|
||||||
|
|
||||||
viewLinker->updateUiNameAndIcon();
|
viewLinker->updateUiNameAndIcon();
|
||||||
|
|
||||||
proj->viewLinkerCollection.uiCapability()->updateConnectedEditors();
|
proj->viewLinkerCollection.uiCapability()->updateConnectedEditors();
|
||||||
@@ -149,3 +133,35 @@ void RicLinkVisibleViewsFeature::linkViews( std::vector<RimGridView*>& linkableV
|
|||||||
|
|
||||||
Riu3DMainWindowTools::setExpanded( proj->viewLinkerCollection() );
|
Riu3DMainWindowTools::setExpanded( proj->viewLinkerCollection() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::vector<Rim3dView*> RicLinkVisibleViewsFeature::matchingViews( Rim3dView* primaryView,
|
||||||
|
std::vector<Rim3dView*>& candidates )
|
||||||
|
{
|
||||||
|
if ( !primaryView ) return {};
|
||||||
|
|
||||||
|
std::vector<Rim3dView*> matchingViews;
|
||||||
|
|
||||||
|
RiaDefines::View3dContent primaryContent = primaryView->viewContent();
|
||||||
|
if ( primaryContent == RiaDefines::View3dContent::FLAT_INTERSECTION )
|
||||||
|
{
|
||||||
|
for ( auto v : candidates )
|
||||||
|
{
|
||||||
|
if ( v != primaryView && v->viewContent() == RiaDefines::View3dContent::FLAT_INTERSECTION )
|
||||||
|
matchingViews.emplace_back( v );
|
||||||
|
}
|
||||||
|
|
||||||
|
return matchingViews;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We have a 3D view or contour map as primary view, include all views except flat intersection views
|
||||||
|
for ( auto v : candidates )
|
||||||
|
{
|
||||||
|
if ( v != primaryView && v->viewContent() != RiaDefines::View3dContent::FLAT_INTERSECTION )
|
||||||
|
matchingViews.emplace_back( v );
|
||||||
|
}
|
||||||
|
|
||||||
|
return matchingViews;
|
||||||
|
}
|
||||||
|
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class RimGridView;
|
class Rim3dView;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
@@ -33,7 +33,9 @@ class RicLinkVisibleViewsFeature : public caf::CmdFeature
|
|||||||
CAF_CMD_HEADER_INIT;
|
CAF_CMD_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void linkViews( std::vector<RimGridView*>& views );
|
static void linkViews( std::vector<Rim3dView*>& views );
|
||||||
|
|
||||||
|
static std::vector<Rim3dView*> matchingViews( Rim3dView* primaryView, std::vector<Rim3dView*>& candidates );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool isCommandEnabled() override;
|
bool isCommandEnabled() override;
|
||||||
@@ -42,5 +44,5 @@ protected:
|
|||||||
void setupActionLook( QAction* actionToSetup ) override;
|
void setupActionLook( QAction* actionToSetup ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void findLinkableVisibleViews( std::vector<RimGridView*>& views );
|
static std::vector<Rim3dView*> findLinkableVisibleViews();
|
||||||
};
|
};
|
||||||
|
@@ -22,8 +22,8 @@
|
|||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
#include "RiaOptionItemFactory.h"
|
#include "RiaOptionItemFactory.h"
|
||||||
|
|
||||||
|
#include "Rim3dView.h"
|
||||||
#include "RimCase.h"
|
#include "RimCase.h"
|
||||||
#include "RimGridView.h"
|
|
||||||
#include "RimViewLinker.h"
|
#include "RimViewLinker.h"
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT( RicLinkVisibleViewsFeatureUi, "RicLinkVisibleViewsFeatureUi" );
|
CAF_PDM_SOURCE_INIT( RicLinkVisibleViewsFeatureUi, "RicLinkVisibleViewsFeatureUi" );
|
||||||
@@ -31,7 +31,7 @@ CAF_PDM_SOURCE_INIT( RicLinkVisibleViewsFeatureUi, "RicLinkVisibleViewsFeatureUi
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RicLinkVisibleViewsFeatureUi::RicLinkVisibleViewsFeatureUi( void )
|
RicLinkVisibleViewsFeatureUi::RicLinkVisibleViewsFeatureUi()
|
||||||
{
|
{
|
||||||
CAF_PDM_InitObject( "Link Visible Views Feature UI", ":/LinkView.svg" );
|
CAF_PDM_InitObject( "Link Visible Views Feature UI", ":/LinkView.svg" );
|
||||||
|
|
||||||
@@ -41,46 +41,35 @@ RicLinkVisibleViewsFeatureUi::RicLinkVisibleViewsFeatureUi( void )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicLinkVisibleViewsFeatureUi::setViews( const std::vector<RimGridView*>& allViews )
|
void RicLinkVisibleViewsFeatureUi::setViews( const std::vector<Rim3dView*>& allViews )
|
||||||
{
|
{
|
||||||
m_allViews = allViews;
|
m_allViews = allViews;
|
||||||
|
|
||||||
RimGridView* activeView = RiaApplication::instance()->activeGridView();
|
auto activeView = RiaApplication::instance()->activeReservoirView();
|
||||||
|
|
||||||
std::vector<RimGridView*> masterCandidates = masterViewCandidates();
|
for ( size_t i = 0; i < m_allViews.size(); i++ )
|
||||||
|
|
||||||
// Set Active view as master view if the active view isn't a contour map.
|
|
||||||
for ( size_t i = 0; i < masterCandidates.size(); i++ )
|
|
||||||
{
|
{
|
||||||
if ( activeView == masterCandidates[i] )
|
if ( activeView == m_allViews[i] )
|
||||||
{
|
{
|
||||||
m_masterView = allViews[i];
|
m_masterView = allViews[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fallback to use first view if no active view is present
|
// Fallback to use first view if no active view is present
|
||||||
if ( !m_masterView && masterCandidates.size() > 0 )
|
if ( !m_masterView && !m_allViews.empty() )
|
||||||
{
|
{
|
||||||
m_masterView = masterCandidates[0];
|
m_masterView = m_allViews[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimGridView* RicLinkVisibleViewsFeatureUi::masterView()
|
Rim3dView* RicLinkVisibleViewsFeatureUi::masterView()
|
||||||
{
|
{
|
||||||
return m_masterView;
|
return m_masterView;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
std::vector<RimGridView*> RicLinkVisibleViewsFeatureUi::masterViewCandidates() const
|
|
||||||
{
|
|
||||||
return m_allViews;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -91,7 +80,7 @@ QList<caf::PdmOptionItemInfo>
|
|||||||
|
|
||||||
if ( fieldNeedingOptions == &m_masterView )
|
if ( fieldNeedingOptions == &m_masterView )
|
||||||
{
|
{
|
||||||
for ( RimGridView* v : masterViewCandidates() )
|
for ( auto v : m_allViews )
|
||||||
{
|
{
|
||||||
RiaOptionItemFactory::appendOptionItemFromViewNameAndCaseName( v, &options );
|
RiaOptionItemFactory::appendOptionItemFromViewNameAndCaseName( v, &options );
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class RimGridView;
|
class Rim3dView;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
@@ -37,15 +37,14 @@ class RicLinkVisibleViewsFeatureUi : public caf::PdmObject
|
|||||||
public:
|
public:
|
||||||
RicLinkVisibleViewsFeatureUi( void );
|
RicLinkVisibleViewsFeatureUi( void );
|
||||||
|
|
||||||
void setViews( const std::vector<RimGridView*>& allViews );
|
void setViews( const std::vector<Rim3dView*>& allViews );
|
||||||
RimGridView* masterView();
|
Rim3dView* masterView();
|
||||||
std::vector<RimGridView*> masterViewCandidates() const;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmPtrField<RimGridView*> m_masterView;
|
caf::PdmPtrField<Rim3dView*> m_masterView;
|
||||||
|
|
||||||
std::vector<RimGridView*> m_allViews;
|
std::vector<Rim3dView*> m_allViews;
|
||||||
};
|
};
|
||||||
|
@@ -67,7 +67,7 @@ void RicSetMasterViewFeature::onActionTriggered( bool isChecked )
|
|||||||
|
|
||||||
viewLinker->applyCellFilterCollectionByUserChoice();
|
viewLinker->applyCellFilterCollectionByUserChoice();
|
||||||
|
|
||||||
RimGridView* previousMasterView = viewLinker->masterView();
|
auto previousMasterView = viewLinker->masterView();
|
||||||
|
|
||||||
viewLinker->setMasterView( activeView );
|
viewLinker->setMasterView( activeView );
|
||||||
viewLinker->updateDependentViews();
|
viewLinker->updateDependentViews();
|
||||||
|
@@ -41,8 +41,7 @@ CAF_CMD_SOURCE_INIT( RicUnLinkViewFeature, "RicUnLinkViewFeature" );
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RicUnLinkViewFeature::isCommandEnabled()
|
bool RicUnLinkViewFeature::isCommandEnabled()
|
||||||
{
|
{
|
||||||
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
|
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
|
||||||
;
|
|
||||||
if ( !activeView ) return false;
|
if ( !activeView ) return false;
|
||||||
|
|
||||||
if ( activeView->assosiatedViewLinker() )
|
if ( activeView->assosiatedViewLinker() )
|
||||||
@@ -58,8 +57,7 @@ bool RicUnLinkViewFeature::isCommandEnabled()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicUnLinkViewFeature::onActionTriggered( bool isChecked )
|
void RicUnLinkViewFeature::onActionTriggered( bool isChecked )
|
||||||
{
|
{
|
||||||
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
|
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
|
||||||
;
|
|
||||||
if ( !activeView ) return;
|
if ( !activeView ) return;
|
||||||
|
|
||||||
RimViewController* viewController = activeView->viewController();
|
RimViewController* viewController = activeView->viewController();
|
||||||
@@ -77,7 +75,7 @@ void RicUnLinkViewFeature::onActionTriggered( bool isChecked )
|
|||||||
{
|
{
|
||||||
viewLinker->applyCellFilterCollectionByUserChoice();
|
viewLinker->applyCellFilterCollectionByUserChoice();
|
||||||
|
|
||||||
RimGridView* firstControlledView = viewLinker->firstControlledView();
|
Rim3dView* firstControlledView = viewLinker->firstControlledView();
|
||||||
|
|
||||||
if ( firstControlledView )
|
if ( firstControlledView )
|
||||||
{
|
{
|
||||||
|
@@ -110,7 +110,7 @@ RimWellBoreStabilityPlot*
|
|||||||
{
|
{
|
||||||
auto task = progInfo.task( "Updating all tracks", 5 );
|
auto task = progInfo.task( "Updating all tracks", 5 );
|
||||||
|
|
||||||
QString templateText = QString( "%1, %2, %3, %4, %5" )
|
QString templateText = QString( "Well Bore Stability: %1, %2, %3, %4, %5" )
|
||||||
.arg( RiaDefines::namingVariableCase() )
|
.arg( RiaDefines::namingVariableCase() )
|
||||||
.arg( RiaDefines::namingVariableWell() )
|
.arg( RiaDefines::namingVariableWell() )
|
||||||
.arg( RiaDefines::namingVariableTime() )
|
.arg( RiaDefines::namingVariableTime() )
|
||||||
@@ -228,6 +228,7 @@ void RicNewWellBoreStabilityPlotFeature::createFormationTrack( RimWellBoreStabil
|
|||||||
formationTrack->setFormationCase( geoMechCase );
|
formationTrack->setFormationCase( geoMechCase );
|
||||||
formationTrack->setAnnotationType( RiaDefines::RegionAnnotationType::FORMATION_ANNOTATIONS );
|
formationTrack->setAnnotationType( RiaDefines::RegionAnnotationType::FORMATION_ANNOTATIONS );
|
||||||
formationTrack->setVisiblePropertyValueRange( 0.0, 0.0 );
|
formationTrack->setVisiblePropertyValueRange( 0.0, 0.0 );
|
||||||
|
formationTrack->enablePropertyAxis( false );
|
||||||
formationTrack->setColSpan( RimPlot::ONE );
|
formationTrack->setColSpan( RimPlot::ONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,6 +251,7 @@ void RicNewWellBoreStabilityPlotFeature::createCasingShoeTrack( RimWellBoreStabi
|
|||||||
casingShoeTrack->setAnnotationTransparency( 90 );
|
casingShoeTrack->setAnnotationTransparency( 90 );
|
||||||
casingShoeTrack->setWellPathAttributesSource( wellPath );
|
casingShoeTrack->setWellPathAttributesSource( wellPath );
|
||||||
casingShoeTrack->setVisiblePropertyValueRange( 0.0, 0.0 );
|
casingShoeTrack->setVisiblePropertyValueRange( 0.0, 0.0 );
|
||||||
|
casingShoeTrack->enablePropertyAxis( false );
|
||||||
casingShoeTrack->setAutoScalePropertyValuesEnabled( true );
|
casingShoeTrack->setAutoScalePropertyValuesEnabled( true );
|
||||||
casingShoeTrack->loadDataAndUpdate();
|
casingShoeTrack->loadDataAndUpdate();
|
||||||
}
|
}
|
||||||
|
@@ -257,7 +257,9 @@ void RivFemElmVisibilityCalculator::computeOverriddenCellVisibility( cvf::UByteA
|
|||||||
CVF_ASSERT( elmVisibilities != nullptr );
|
CVF_ASSERT( elmVisibilities != nullptr );
|
||||||
CVF_ASSERT( femPart != nullptr );
|
CVF_ASSERT( femPart != nullptr );
|
||||||
|
|
||||||
RimGridView* masterView = masterViewLink->ownerViewLinker()->masterView();
|
RimGridView* masterView = dynamic_cast<RimGridView*>( masterViewLink->ownerViewLinker()->masterView() );
|
||||||
|
if ( !masterView ) return;
|
||||||
|
|
||||||
cvf::ref<cvf::UByteArray> totCellVisibility = masterView->currentTotalCellVisibility();
|
cvf::ref<cvf::UByteArray> totCellVisibility = masterView->currentTotalCellVisibility();
|
||||||
|
|
||||||
int elmCount = femPart->elementCount();
|
int elmCount = femPart->elementCount();
|
||||||
|
@@ -663,7 +663,8 @@ void RivReservoirViewPartMgr::computeOverriddenCellVisibility( cvf::UByteArray*
|
|||||||
|
|
||||||
CVF_ASSERT( masterViewLink );
|
CVF_ASSERT( masterViewLink );
|
||||||
|
|
||||||
RimGridView* masterView = masterViewLink->ownerViewLinker()->masterView();
|
RimGridView* masterView = dynamic_cast<RimGridView*>( masterViewLink->ownerViewLinker()->masterView() );
|
||||||
|
if ( !masterView ) return;
|
||||||
|
|
||||||
// get cell visibility
|
// get cell visibility
|
||||||
#if 1
|
#if 1
|
||||||
|
@@ -83,6 +83,14 @@ RimGeoMechContourMapProjection* RimGeoMechContourMapView::contourMapProjection()
|
|||||||
return m_contourMapProjection().p();
|
return m_contourMapProjection().p();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RiaDefines::View3dContent RimGeoMechContourMapView::viewContent() const
|
||||||
|
{
|
||||||
|
return ( RiaDefines::View3dContent::GEOMECH_DATA & RiaDefines::View3dContent::CONTOUR );
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@@ -36,6 +36,8 @@ public:
|
|||||||
RimGeoMechContourMapView();
|
RimGeoMechContourMapView();
|
||||||
RimGeoMechContourMapProjection* contourMapProjection() const;
|
RimGeoMechContourMapProjection* contourMapProjection() const;
|
||||||
|
|
||||||
|
RiaDefines::View3dContent viewContent() const override;
|
||||||
|
|
||||||
QString createAutoName() const override;
|
QString createAutoName() const override;
|
||||||
void setDefaultCustomName();
|
void setDefaultCustomName();
|
||||||
void updatePickPointAndRedraw();
|
void updatePickPointAndRedraw();
|
||||||
|
@@ -130,6 +130,14 @@ RimGeoMechView::~RimGeoMechView( void )
|
|||||||
delete m_propertyFilterCollection;
|
delete m_propertyFilterCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RiaDefines::View3dContent RimGeoMechView::viewContent() const
|
||||||
|
{
|
||||||
|
return RiaDefines::View3dContent::GEOMECH_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@@ -66,6 +66,8 @@ public:
|
|||||||
RimGeoMechView( void );
|
RimGeoMechView( void );
|
||||||
~RimGeoMechView( void ) override;
|
~RimGeoMechView( void ) override;
|
||||||
|
|
||||||
|
RiaDefines::View3dContent viewContent() const override;
|
||||||
|
|
||||||
void setGeoMechCase( RimGeoMechCase* gmCase );
|
void setGeoMechCase( RimGeoMechCase* gmCase );
|
||||||
RimGeoMechCase* geoMechCase() const;
|
RimGeoMechCase* geoMechCase() const;
|
||||||
RimCase* ownerCase() const override;
|
RimCase* ownerCase() const override;
|
||||||
|
@@ -31,6 +31,8 @@
|
|||||||
#include "RimRegularLegendConfig.h"
|
#include "RimRegularLegendConfig.h"
|
||||||
#include "RimSimWellInView.h"
|
#include "RimSimWellInView.h"
|
||||||
#include "RimTernaryLegendConfig.h"
|
#include "RimTernaryLegendConfig.h"
|
||||||
|
#include "RimViewController.h"
|
||||||
|
#include "RimViewLinker.h"
|
||||||
#include "RimViewNameConfig.h"
|
#include "RimViewNameConfig.h"
|
||||||
#include "RimWellPath.h"
|
#include "RimWellPath.h"
|
||||||
|
|
||||||
@@ -101,8 +103,6 @@ Rim2dIntersectionView::Rim2dIntersectionView( void )
|
|||||||
nameConfig()->hideAggregationTypeField( true );
|
nameConfig()->hideAggregationTypeField( true );
|
||||||
nameConfig()->hidePropertyField( true );
|
nameConfig()->hidePropertyField( true );
|
||||||
nameConfig()->hideSampleSpacingField( true );
|
nameConfig()->hideSampleSpacingField( true );
|
||||||
|
|
||||||
hideComparisonViewField();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -112,6 +112,14 @@ Rim2dIntersectionView::~Rim2dIntersectionView( void )
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RiaDefines::View3dContent Rim2dIntersectionView::viewContent() const
|
||||||
|
{
|
||||||
|
return RiaDefines::View3dContent::FLAT_INTERSECTION;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -427,16 +435,6 @@ bool Rim2dIntersectionView::handleOverlayItemPicked( const cvf::OverlayItem* pic
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
QList<caf::PdmOptionItemInfo> Rim2dIntersectionView::calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions )
|
|
||||||
{
|
|
||||||
QList<caf::PdmOptionItemInfo> options;
|
|
||||||
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -592,11 +590,13 @@ void Rim2dIntersectionView::onCreateDisplayModel()
|
|||||||
|
|
||||||
m_intersectionVizModel->updateBoundingBoxesRecursive();
|
m_intersectionVizModel->updateBoundingBoxesRecursive();
|
||||||
|
|
||||||
if ( viewer() ) viewer()->setCurrentFrame( m_currentTimeStep );
|
if ( viewer() )
|
||||||
|
|
||||||
if ( this->viewer()->mainCamera()->viewMatrix() == sm_defaultViewMatrix )
|
|
||||||
{
|
{
|
||||||
this->zoomAll();
|
viewer()->setCurrentFrame( m_currentTimeStep );
|
||||||
|
if ( viewer()->mainCamera() && viewer()->mainCamera()->viewMatrix() == sm_defaultViewMatrix )
|
||||||
|
{
|
||||||
|
this->zoomAll();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -664,7 +664,7 @@ void Rim2dIntersectionView::onUpdateDisplayModelForCurrentTimeStep()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( this->hasResults() )
|
if ( m_flatIntersectionPartMgr.notNull() && this->hasResults() )
|
||||||
{
|
{
|
||||||
m_flatIntersectionPartMgr->updateCellResultColor( m_currentTimeStep,
|
m_flatIntersectionPartMgr->updateCellResultColor( m_currentTimeStep,
|
||||||
m_legendConfig->scalarMapper(),
|
m_legendConfig->scalarMapper(),
|
||||||
|
@@ -48,6 +48,8 @@ public:
|
|||||||
Rim2dIntersectionView( void );
|
Rim2dIntersectionView( void );
|
||||||
~Rim2dIntersectionView( void ) override;
|
~Rim2dIntersectionView( void ) override;
|
||||||
|
|
||||||
|
RiaDefines::View3dContent viewContent() const override;
|
||||||
|
|
||||||
void setVisible( bool isVisible );
|
void setVisible( bool isVisible );
|
||||||
void setIntersection( RimExtrudedCurveIntersection* intersection );
|
void setIntersection( RimExtrudedCurveIntersection* intersection );
|
||||||
RimExtrudedCurveIntersection* intersection() const;
|
RimExtrudedCurveIntersection* intersection() const;
|
||||||
@@ -57,9 +59,6 @@ public:
|
|||||||
RimCase* ownerCase() const override;
|
RimCase* ownerCase() const override;
|
||||||
void selectOverlayInfoConfig() override {}
|
void selectOverlayInfoConfig() override {}
|
||||||
|
|
||||||
RimViewLinker* assosiatedViewLinker() const override { return nullptr; }
|
|
||||||
RimViewController* viewController() const override { return nullptr; }
|
|
||||||
|
|
||||||
bool isTimeStepDependentDataVisible() const override;
|
bool isTimeStepDependentDataVisible() const override;
|
||||||
|
|
||||||
void update3dInfo();
|
void update3dInfo();
|
||||||
@@ -94,7 +93,6 @@ protected:
|
|||||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||||
void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override;
|
void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override;
|
||||||
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
|
||||||
|
|
||||||
bool hasResults();
|
bool hasResults();
|
||||||
|
|
||||||
|
@@ -40,6 +40,7 @@
|
|||||||
#include "RimTools.h"
|
#include "RimTools.h"
|
||||||
#include "RimViewController.h"
|
#include "RimViewController.h"
|
||||||
#include "RimViewLinker.h"
|
#include "RimViewLinker.h"
|
||||||
|
#include "RimViewLinkerCollection.h"
|
||||||
#include "RimViewManipulator.h"
|
#include "RimViewManipulator.h"
|
||||||
#include "RimViewNameConfig.h"
|
#include "RimViewNameConfig.h"
|
||||||
#include "RimWellPathCollection.h"
|
#include "RimWellPathCollection.h"
|
||||||
@@ -184,6 +185,46 @@ Rim3dView::Rim3dView()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
Rim3dView::~Rim3dView()
|
Rim3dView::~Rim3dView()
|
||||||
{
|
{
|
||||||
|
// When a 3d view is destructed, make sure that all other views using this as a comparison view is reset and
|
||||||
|
// redrawn. A crash was seen for test case
|
||||||
|
// "\ResInsight-regression-test\ProjectFiles\ProjectFilesSmallTests\TestCase_CoViz-Simple" when a view used as
|
||||||
|
// comparison view was deleted.
|
||||||
|
|
||||||
|
RimProject* proj = RimProject::current();
|
||||||
|
|
||||||
|
std::vector<Rim3dView*> allViews;
|
||||||
|
proj->allViews( allViews );
|
||||||
|
|
||||||
|
for ( auto v : allViews )
|
||||||
|
{
|
||||||
|
if ( v->activeComparisonView() == this )
|
||||||
|
{
|
||||||
|
v->setComparisonView( nullptr );
|
||||||
|
v->scheduleCreateDisplayModelAndRedraw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( proj && this->isMasterView() )
|
||||||
|
{
|
||||||
|
RimViewLinker* viewLinker = this->assosiatedViewLinker();
|
||||||
|
viewLinker->setMasterView( nullptr );
|
||||||
|
|
||||||
|
delete proj->viewLinkerCollection->viewLinker();
|
||||||
|
proj->viewLinkerCollection->viewLinker = nullptr;
|
||||||
|
|
||||||
|
proj->uiCapability()->updateConnectedEditors();
|
||||||
|
}
|
||||||
|
|
||||||
|
RimViewController* vController = this->viewController();
|
||||||
|
if ( proj && vController )
|
||||||
|
{
|
||||||
|
vController->setManagedView( nullptr );
|
||||||
|
vController->ownerViewLinker()->removeViewController( vController );
|
||||||
|
delete vController;
|
||||||
|
|
||||||
|
proj->uiCapability()->updateConnectedEditors();
|
||||||
|
}
|
||||||
|
|
||||||
if ( RiaApplication::instance()->activeReservoirView() == this )
|
if ( RiaApplication::instance()->activeReservoirView() == this )
|
||||||
{
|
{
|
||||||
RiaApplication::instance()->setActiveReservoirView( nullptr );
|
RiaApplication::instance()->setActiveReservoirView( nullptr );
|
||||||
@@ -396,6 +437,43 @@ void Rim3dView::updateMdiWindowTitle()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimViewLinker* Rim3dView::assosiatedViewLinker() const
|
||||||
|
{
|
||||||
|
RimViewLinker* viewLinker = this->viewLinkerIfMasterView();
|
||||||
|
if ( !viewLinker )
|
||||||
|
{
|
||||||
|
RimViewController* viewController = this->viewController();
|
||||||
|
if ( viewController )
|
||||||
|
{
|
||||||
|
viewLinker = viewController->ownerViewLinker();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return viewLinker;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimViewController* Rim3dView::viewController() const
|
||||||
|
{
|
||||||
|
std::vector<RimViewController*> objects;
|
||||||
|
this->objectsWithReferringPtrFieldsOfType( objects );
|
||||||
|
|
||||||
|
for ( auto v : objects )
|
||||||
|
{
|
||||||
|
if ( v )
|
||||||
|
{
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -863,6 +941,13 @@ void Rim3dView::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const
|
|||||||
updateScaling();
|
updateScaling();
|
||||||
|
|
||||||
RiuMainWindow::instance()->updateScaleValue();
|
RiuMainWindow::instance()->updateScaleValue();
|
||||||
|
|
||||||
|
RimViewLinker* viewLinker = this->assosiatedViewLinker();
|
||||||
|
if ( viewLinker )
|
||||||
|
{
|
||||||
|
viewLinker->updateScaleZ( this, scaleZ() );
|
||||||
|
viewLinker->updateCamera( this );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if ( changedField == &surfaceMode )
|
else if ( changedField == &surfaceMode )
|
||||||
{
|
{
|
||||||
@@ -1421,16 +1506,13 @@ QList<caf::PdmOptionItemInfo> Rim3dView::calculateValueOptions( const caf::PdmFi
|
|||||||
proj->allViews( views );
|
proj->allViews( views );
|
||||||
for ( auto view : views )
|
for ( auto view : views )
|
||||||
{
|
{
|
||||||
if ( view != this && dynamic_cast<RimGridView*>( view ) )
|
if ( view != this )
|
||||||
{
|
{
|
||||||
RiaOptionItemFactory::appendOptionItemFromViewNameAndCaseName( view, &options );
|
RiaOptionItemFactory::appendOptionItemFromViewNameAndCaseName( view, &options );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !options.empty() )
|
options.push_front( caf::PdmOptionItemInfo( "None", nullptr ) );
|
||||||
{
|
|
||||||
options.push_front( caf::PdmOptionItemInfo( "None", nullptr ) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( fieldNeedingOptions == &m_fontSize )
|
else if ( fieldNeedingOptions == &m_fontSize )
|
||||||
@@ -1664,3 +1746,22 @@ void Rim3dView::restoreComparisonView()
|
|||||||
depView->setOverrideViewer( nullptr );
|
depView->setOverrideViewer( nullptr );
|
||||||
viewer()->setCurrentComparisonFrame( depView->currentTimeStep() );
|
viewer()->setCurrentComparisonFrame( depView->currentTimeStep() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimViewLinker* Rim3dView::viewLinkerIfMasterView() const
|
||||||
|
{
|
||||||
|
std::vector<RimViewLinker*> objects;
|
||||||
|
this->objectsWithReferringPtrFieldsOfType( objects );
|
||||||
|
|
||||||
|
for ( auto viewLinker : objects )
|
||||||
|
{
|
||||||
|
if ( viewLinker )
|
||||||
|
{
|
||||||
|
return viewLinker;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
@@ -115,6 +115,8 @@ public:
|
|||||||
QString name() const;
|
QString name() const;
|
||||||
QString autoName() const;
|
QString autoName() const;
|
||||||
|
|
||||||
|
virtual RiaDefines::View3dContent viewContent() const = 0;
|
||||||
|
|
||||||
void setMeshOnlyDrawstyle();
|
void setMeshOnlyDrawstyle();
|
||||||
void setMeshSurfDrawstyle();
|
void setMeshSurfDrawstyle();
|
||||||
void setSurfOnlyDrawstyle();
|
void setSurfOnlyDrawstyle();
|
||||||
@@ -180,6 +182,9 @@ public:
|
|||||||
std::set<Rim3dView*> viewsUsingThisAsComparisonView();
|
std::set<Rim3dView*> viewsUsingThisAsComparisonView();
|
||||||
void updateMdiWindowTitle() override;
|
void updateMdiWindowTitle() override;
|
||||||
|
|
||||||
|
RimViewLinker* assosiatedViewLinker() const override;
|
||||||
|
RimViewController* viewController() const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void removeModelByName( cvf::Scene* scene, const cvf::String& modelName );
|
static void removeModelByName( cvf::Scene* scene, const cvf::String& modelName );
|
||||||
|
|
||||||
@@ -292,6 +297,8 @@ private:
|
|||||||
Rim3dView* prepareComparisonView();
|
Rim3dView* prepareComparisonView();
|
||||||
void restoreComparisonView();
|
void restoreComparisonView();
|
||||||
|
|
||||||
|
RimViewLinker* viewLinkerIfMasterView() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer<RiuViewer> m_viewer;
|
QPointer<RiuViewer> m_viewer;
|
||||||
QPointer<RiuViewer> m_overrideViewer;
|
QPointer<RiuViewer> m_overrideViewer;
|
||||||
|
@@ -87,6 +87,14 @@ RimEclipseContourMapProjection* RimEclipseContourMapView::contourMapProjection()
|
|||||||
return m_contourMapProjection().p();
|
return m_contourMapProjection().p();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RiaDefines::View3dContent RimEclipseContourMapView::viewContent() const
|
||||||
|
{
|
||||||
|
return ( RiaDefines::View3dContent::ECLIPSE_DATA & RiaDefines::View3dContent::CONTOUR );
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@@ -36,6 +36,8 @@ public:
|
|||||||
RimEclipseContourMapView();
|
RimEclipseContourMapView();
|
||||||
RimEclipseContourMapProjection* contourMapProjection() const;
|
RimEclipseContourMapProjection* contourMapProjection() const;
|
||||||
|
|
||||||
|
RiaDefines::View3dContent viewContent() const override;
|
||||||
|
|
||||||
QString createAutoName() const override;
|
QString createAutoName() const override;
|
||||||
void setDefaultCustomName();
|
void setDefaultCustomName();
|
||||||
void updatePickPointAndRedraw();
|
void updatePickPointAndRedraw();
|
||||||
|
@@ -245,6 +245,14 @@ RimEclipseView::~RimEclipseView()
|
|||||||
m_eclipseCase = nullptr;
|
m_eclipseCase = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RiaDefines::View3dContent RimEclipseView::viewContent() const
|
||||||
|
{
|
||||||
|
return RiaDefines::View3dContent::ECLIPSE_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@@ -89,6 +89,8 @@ public:
|
|||||||
RimEclipseView();
|
RimEclipseView();
|
||||||
~RimEclipseView() override;
|
~RimEclipseView() override;
|
||||||
|
|
||||||
|
RiaDefines::View3dContent viewContent() const override;
|
||||||
|
|
||||||
RimEclipseCellColors* cellResult() const;
|
RimEclipseCellColors* cellResult() const;
|
||||||
RimCellEdgeColors* cellEdgeResult() const;
|
RimCellEdgeColors* cellEdgeResult() const;
|
||||||
RimElementVectorResult* elementVectorResult() const;
|
RimElementVectorResult* elementVectorResult() const;
|
||||||
|
@@ -37,8 +37,6 @@
|
|||||||
#include "RimTextAnnotation.h"
|
#include "RimTextAnnotation.h"
|
||||||
#include "RimTools.h"
|
#include "RimTools.h"
|
||||||
#include "RimViewController.h"
|
#include "RimViewController.h"
|
||||||
#include "RimViewLinker.h"
|
|
||||||
#include "RimViewLinkerCollection.h"
|
|
||||||
#include "RimViewNameConfig.h"
|
#include "RimViewNameConfig.h"
|
||||||
#include "RimWellMeasurementCollection.h"
|
#include "RimWellMeasurementCollection.h"
|
||||||
#include "RimWellMeasurementInViewCollection.h"
|
#include "RimWellMeasurementInViewCollection.h"
|
||||||
@@ -110,35 +108,6 @@ RimGridView::RimGridView()
|
|||||||
m_surfaceVizModel->setName( "SurfaceModel" );
|
m_surfaceVizModel->setName( "SurfaceModel" );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
RimGridView::~RimGridView( void )
|
|
||||||
{
|
|
||||||
RimProject* proj = RimProject::current();
|
|
||||||
|
|
||||||
if ( proj && this->isMasterView() )
|
|
||||||
{
|
|
||||||
RimViewLinker* viewLinker = this->assosiatedViewLinker();
|
|
||||||
viewLinker->setMasterView( nullptr );
|
|
||||||
|
|
||||||
delete proj->viewLinkerCollection->viewLinker();
|
|
||||||
proj->viewLinkerCollection->viewLinker = nullptr;
|
|
||||||
|
|
||||||
proj->uiCapability()->updateConnectedEditors();
|
|
||||||
}
|
|
||||||
|
|
||||||
RimViewController* vController = this->viewController();
|
|
||||||
if ( proj && vController )
|
|
||||||
{
|
|
||||||
vController->setManagedView( nullptr );
|
|
||||||
vController->ownerViewLinker()->removeViewController( vController );
|
|
||||||
delete vController;
|
|
||||||
|
|
||||||
proj->uiCapability()->updateConnectedEditors();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -306,43 +275,6 @@ void RimGridView::replaceCellFilterCollectionWithOverride()
|
|||||||
this->uiCapability()->updateConnectedEditors();
|
this->uiCapability()->updateConnectedEditors();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
RimViewController* RimGridView::viewController() const
|
|
||||||
{
|
|
||||||
std::vector<RimViewController*> objects;
|
|
||||||
this->objectsWithReferringPtrFieldsOfType( objects );
|
|
||||||
|
|
||||||
for ( auto v : objects )
|
|
||||||
{
|
|
||||||
if ( v )
|
|
||||||
{
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
RimViewLinker* RimGridView::assosiatedViewLinker() const
|
|
||||||
{
|
|
||||||
RimViewLinker* viewLinker = this->viewLinkerIfMasterView();
|
|
||||||
if ( !viewLinker )
|
|
||||||
{
|
|
||||||
RimViewController* viewController = this->viewController();
|
|
||||||
if ( viewController )
|
|
||||||
{
|
|
||||||
viewLinker = viewController->ownerViewLinker();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return viewLinker;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -472,16 +404,6 @@ void RimGridView::fieldChangedByUi( const caf::PdmFieldHandle* changedField, con
|
|||||||
}
|
}
|
||||||
|
|
||||||
Rim3dView::fieldChangedByUi( changedField, oldValue, newValue );
|
Rim3dView::fieldChangedByUi( changedField, oldValue, newValue );
|
||||||
|
|
||||||
if ( changedField == &m_scaleZ )
|
|
||||||
{
|
|
||||||
RimViewLinker* viewLinker = this->assosiatedViewLinker();
|
|
||||||
if ( viewLinker )
|
|
||||||
{
|
|
||||||
viewLinker->updateScaleZ( this, scaleZ() );
|
|
||||||
viewLinker->updateCamera( this );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -524,25 +446,6 @@ void RimGridView::selectOverlayInfoConfig()
|
|||||||
Riu3DMainWindowTools::selectAsCurrentItem( m_overlayInfoConfig );
|
Riu3DMainWindowTools::selectAsCurrentItem( m_overlayInfoConfig );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
RimViewLinker* RimGridView::viewLinkerIfMasterView() const
|
|
||||||
{
|
|
||||||
std::vector<RimViewLinker*> objects;
|
|
||||||
this->objectsWithReferringPtrFieldsOfType( objects );
|
|
||||||
|
|
||||||
for ( auto viewLinker : objects )
|
|
||||||
{
|
|
||||||
if ( viewLinker )
|
|
||||||
{
|
|
||||||
return viewLinker;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@@ -39,7 +39,6 @@ class RimGridView : public Rim3dView
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
RimGridView();
|
RimGridView();
|
||||||
~RimGridView( void ) override;
|
|
||||||
|
|
||||||
void showGridCells( bool enableGridCells );
|
void showGridCells( bool enableGridCells );
|
||||||
|
|
||||||
@@ -64,9 +63,6 @@ public:
|
|||||||
void setOverrideCellFilterCollection( RimCellFilterCollection* rfc );
|
void setOverrideCellFilterCollection( RimCellFilterCollection* rfc );
|
||||||
void replaceCellFilterCollectionWithOverride();
|
void replaceCellFilterCollectionWithOverride();
|
||||||
|
|
||||||
RimViewController* viewController() const override;
|
|
||||||
RimViewLinker* assosiatedViewLinker() const override;
|
|
||||||
|
|
||||||
bool isGridVisualizationMode() const override;
|
bool isGridVisualizationMode() const override;
|
||||||
|
|
||||||
void updateWellMeasurements();
|
void updateWellMeasurements();
|
||||||
@@ -105,6 +101,5 @@ private:
|
|||||||
void onCreatePartCollectionFromSelection( cvf::Collection<cvf::Part>* parts ) override;
|
void onCreatePartCollectionFromSelection( cvf::Collection<cvf::Part>* parts ) override;
|
||||||
|
|
||||||
cvf::ref<cvf::UByteArray> m_currentReservoirCellVisibility;
|
cvf::ref<cvf::UByteArray> m_currentReservoirCellVisibility;
|
||||||
RimViewLinker* viewLinkerIfMasterView() const;
|
|
||||||
bool m_previousGridModeMeshLinesWasFaults;
|
bool m_previousGridModeMeshLinesWasFaults;
|
||||||
};
|
};
|
||||||
|
@@ -747,12 +747,12 @@ RimSummaryCaseMainCollection* RimProject::firstSummaryCaseMainCollection() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimProject::allNotLinkedViews( std::vector<RimGridView*>& views )
|
void RimProject::allNotLinkedViews( std::vector<Rim3dView*>& views )
|
||||||
{
|
{
|
||||||
std::vector<RimCase*> cases;
|
std::vector<RimCase*> cases;
|
||||||
allCases( cases );
|
allCases( cases );
|
||||||
|
|
||||||
std::vector<RimGridView*> alreadyLinkedViews;
|
std::vector<Rim3dView*> alreadyLinkedViews;
|
||||||
if ( viewLinkerCollection->viewLinker() )
|
if ( viewLinkerCollection->viewLinker() )
|
||||||
{
|
{
|
||||||
alreadyLinkedViews = viewLinkerCollection->viewLinker()->allViews();
|
alreadyLinkedViews = viewLinkerCollection->viewLinker()->allViews();
|
||||||
|
@@ -141,7 +141,7 @@ public:
|
|||||||
void allViews( std::vector<Rim3dView*>& views ) const;
|
void allViews( std::vector<Rim3dView*>& views ) const;
|
||||||
void allVisibleViews( std::vector<Rim3dView*>& views ) const;
|
void allVisibleViews( std::vector<Rim3dView*>& views ) const;
|
||||||
void allVisibleGridViews( std::vector<RimGridView*>& views ) const;
|
void allVisibleGridViews( std::vector<RimGridView*>& views ) const;
|
||||||
void allNotLinkedViews( std::vector<RimGridView*>& views );
|
void allNotLinkedViews( std::vector<Rim3dView*>& views );
|
||||||
|
|
||||||
void scheduleCreateDisplayModelAndRedrawAllViews();
|
void scheduleCreateDisplayModelAndRedrawAllViews();
|
||||||
|
|
||||||
|
@@ -95,8 +95,8 @@ RimViewController::RimViewController()
|
|||||||
RimViewController::~RimViewController()
|
RimViewController::~RimViewController()
|
||||||
{
|
{
|
||||||
this->removeOverrides();
|
this->removeOverrides();
|
||||||
RimGridView* managedView = m_managedView;
|
auto managedView = m_managedView();
|
||||||
m_managedView = nullptr;
|
m_managedView = nullptr;
|
||||||
|
|
||||||
if ( managedView ) managedView->updateAutoName();
|
if ( managedView ) managedView->updateAutoName();
|
||||||
}
|
}
|
||||||
@@ -110,8 +110,8 @@ QList<caf::PdmOptionItemInfo> RimViewController::calculateValueOptions( const ca
|
|||||||
|
|
||||||
if ( fieldNeedingOptions == &m_managedView )
|
if ( fieldNeedingOptions == &m_managedView )
|
||||||
{
|
{
|
||||||
RimProject* proj = RimProject::current();
|
RimProject* proj = RimProject::current();
|
||||||
std::vector<RimGridView*> views;
|
std::vector<Rim3dView*> views;
|
||||||
proj->allNotLinkedViews( views );
|
proj->allNotLinkedViews( views );
|
||||||
|
|
||||||
// Add currently linked view to list
|
// Add currently linked view to list
|
||||||
@@ -124,7 +124,7 @@ QList<caf::PdmOptionItemInfo> RimViewController::calculateValueOptions( const ca
|
|||||||
this->firstAncestorOrThisOfType( viewLinker );
|
this->firstAncestorOrThisOfType( viewLinker );
|
||||||
CVF_ASSERT( viewLinker );
|
CVF_ASSERT( viewLinker );
|
||||||
|
|
||||||
for ( RimGridView* view : views )
|
for ( auto view : views )
|
||||||
{
|
{
|
||||||
if ( view != viewLinker->masterView() )
|
if ( view != viewLinker->masterView() )
|
||||||
{
|
{
|
||||||
@@ -221,8 +221,6 @@ void RimViewController::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
|
|||||||
auto* previousManagedView = dynamic_cast<RimGridView*>( prevValue );
|
auto* previousManagedView = dynamic_cast<RimGridView*>( prevValue );
|
||||||
RimViewController::removeOverrides( previousManagedView );
|
RimViewController::removeOverrides( previousManagedView );
|
||||||
|
|
||||||
ownerViewLinker()->notifyManagedViewChange( previousManagedView, m_managedView() );
|
|
||||||
|
|
||||||
setManagedView( m_managedView() );
|
setManagedView( m_managedView() );
|
||||||
|
|
||||||
m_name.uiCapability()->updateConnectedEditors();
|
m_name.uiCapability()->updateConnectedEditors();
|
||||||
@@ -239,9 +237,7 @@ void RimViewController::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimEclipseView* RimViewController::managedEclipseView() const
|
RimEclipseView* RimViewController::managedEclipseView() const
|
||||||
{
|
{
|
||||||
RimGridView* rimView = m_managedView;
|
return dynamic_cast<RimEclipseView*>( m_managedView() );
|
||||||
|
|
||||||
return dynamic_cast<RimEclipseView*>( rimView );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -249,9 +245,7 @@ RimEclipseView* RimViewController::managedEclipseView() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimGeoMechView* RimViewController::managedGeoView() const
|
RimGeoMechView* RimViewController::managedGeoView() const
|
||||||
{
|
{
|
||||||
RimGridView* rimView = m_managedView;
|
return dynamic_cast<RimGeoMechView*>( m_managedView() );
|
||||||
|
|
||||||
return dynamic_cast<RimGeoMechView*>( rimView );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -261,7 +255,7 @@ void RimViewController::updateOverrides()
|
|||||||
{
|
{
|
||||||
RimViewLinker* viewLinker = ownerViewLinker();
|
RimViewLinker* viewLinker = ownerViewLinker();
|
||||||
|
|
||||||
RimGridView* masterView = viewLinker->masterView();
|
auto masterView = viewLinker->masterView();
|
||||||
|
|
||||||
CVF_ASSERT( masterView );
|
CVF_ASSERT( masterView );
|
||||||
|
|
||||||
@@ -332,7 +326,7 @@ void RimViewController::updateOverrides()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewController::removeOverrides()
|
void RimViewController::removeOverrides()
|
||||||
{
|
{
|
||||||
removeOverrides( m_managedView );
|
removeOverrides( dynamic_cast<RimGridView*>( m_managedView() ) );
|
||||||
|
|
||||||
RimEclipseView* manEclView = managedEclipseView();
|
RimEclipseView* manEclView = managedEclipseView();
|
||||||
RimGeoMechView* manGeoView = managedGeoView();
|
RimGeoMechView* manGeoView = managedGeoView();
|
||||||
@@ -369,7 +363,7 @@ void RimViewController::removeOverrides( RimGridView* view )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewController::updateOptionSensitivity()
|
void RimViewController::updateOptionSensitivity()
|
||||||
{
|
{
|
||||||
RimGridView* mainView = nullptr;
|
Rim3dView* mainView = nullptr;
|
||||||
|
|
||||||
{
|
{
|
||||||
RimViewLinker* linkedViews = nullptr;
|
RimViewLinker* linkedViews = nullptr;
|
||||||
@@ -445,7 +439,7 @@ void RimViewController::updateOptionSensitivity()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimGridView* RimViewController::managedView() const
|
Rim3dView* RimViewController::managedView() const
|
||||||
{
|
{
|
||||||
return m_managedView;
|
return m_managedView;
|
||||||
}
|
}
|
||||||
@@ -453,13 +447,8 @@ RimGridView* RimViewController::managedView() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewController::setManagedView( RimGridView* view )
|
void RimViewController::setManagedView( Rim3dView* view )
|
||||||
{
|
{
|
||||||
if ( m_managedView != view )
|
|
||||||
{
|
|
||||||
ownerViewLinker()->notifyManagedViewChange( m_managedView(), view );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_managedView = view;
|
m_managedView = view;
|
||||||
|
|
||||||
updateOptionSensitivity();
|
updateOptionSensitivity();
|
||||||
@@ -648,7 +637,7 @@ const RigCaseToCaseCellMapper* RimViewController::cellMapper()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimGridView* RimViewController::masterView() const
|
Rim3dView* RimViewController::masterView() const
|
||||||
{
|
{
|
||||||
return ownerViewLinker()->masterView();
|
return ownerViewLinker()->masterView();
|
||||||
}
|
}
|
||||||
@@ -692,7 +681,8 @@ void RimViewController::scheduleCreateDisplayModelAndRedrawForDependentView() co
|
|||||||
|
|
||||||
if ( this->isResultColorControlled() && this->managedView() )
|
if ( this->isResultColorControlled() && this->managedView() )
|
||||||
{
|
{
|
||||||
this->managedView()->intersectionCollection()->scheduleCreateDisplayModelAndRedraw2dIntersectionViews();
|
auto gridView = dynamic_cast<RimGridView*>( this->managedView() );
|
||||||
|
if ( gridView ) gridView->intersectionCollection()->scheduleCreateDisplayModelAndRedraw2dIntersectionViews();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -930,16 +920,19 @@ bool RimViewController::isPropertyFilterOveridden() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewController::updateCellFilterOverrides( const RimCellFilter* changedFilter )
|
void RimViewController::updateCellFilterOverrides( const RimCellFilter* changedFilter )
|
||||||
{
|
{
|
||||||
if ( !m_managedView ) return;
|
auto controlledGridView = dynamic_cast<RimGridView*>( m_managedView() );
|
||||||
|
if ( !controlledGridView ) return;
|
||||||
|
|
||||||
if ( !isCellFiltersControlled() )
|
if ( !isCellFiltersControlled() )
|
||||||
{
|
{
|
||||||
m_managedView->setOverrideCellFilterCollection( nullptr );
|
controlledGridView->setOverrideCellFilterCollection( nullptr );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Copy the rangeFilterCollection
|
// Copy the rangeFilterCollection
|
||||||
|
auto masterGridView = dynamic_cast<RimGridView*>( masterView() );
|
||||||
|
if ( !masterGridView ) return;
|
||||||
|
|
||||||
RimCellFilterCollection* sourceFilterCollection = masterView()->cellFilterCollection();
|
RimCellFilterCollection* sourceFilterCollection = masterGridView->cellFilterCollection();
|
||||||
QString xmlFilterCollCopy = sourceFilterCollection->writeObjectToXmlString();
|
QString xmlFilterCollCopy = sourceFilterCollection->writeObjectToXmlString();
|
||||||
PdmObjectHandle* objectCopy =
|
PdmObjectHandle* objectCopy =
|
||||||
PdmXmlObjectHandle::readUnknownObjectFromXmlString( xmlFilterCollCopy,
|
PdmXmlObjectHandle::readUnknownObjectFromXmlString( xmlFilterCollCopy,
|
||||||
@@ -1041,7 +1034,7 @@ void RimViewController::updateCellFilterOverrides( const RimCellFilter* changedF
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_managedView->setOverrideCellFilterCollection( overrideFilterColl );
|
controlledGridView->setOverrideCellFilterCollection( overrideFilterColl );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -1057,33 +1050,33 @@ void RimViewController::updatePropertyFilterOverrides( RimPropertyFilter* change
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewController::applyCellFilterCollectionByUserChoice()
|
void RimViewController::applyCellFilterCollectionByUserChoice()
|
||||||
{
|
{
|
||||||
if ( !m_managedView ) return;
|
auto managedGridView = dynamic_cast<RimGridView*>( m_managedView() );
|
||||||
|
|
||||||
if ( !m_managedView->hasOverriddenCellFilterCollection() )
|
if ( !managedGridView ) return;
|
||||||
|
|
||||||
|
if ( !managedGridView->hasOverriddenCellFilterCollection() )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RimViewLinker* viewLinker = ownerViewLinker();
|
RimViewLinker* viewLinker = ownerViewLinker();
|
||||||
RimGridView* masterView = viewLinker->masterView();
|
auto* masterView = dynamic_cast<RimGridView*>( viewLinker->masterView() );
|
||||||
|
|
||||||
bool restoreOriginal = true;
|
bool anyActiveFilter = false;
|
||||||
|
|
||||||
bool anyActiveFilter = !masterView->cellFilterCollection()->filters().empty() ||
|
if ( masterView )
|
||||||
masterView->propertyFilterCollection()->hasActiveFilters();
|
|
||||||
|
|
||||||
if ( anyActiveFilter )
|
|
||||||
{
|
{
|
||||||
restoreOriginal = askUserToRestoreOriginalCellFilterCollection( m_managedView->name() );
|
anyActiveFilter = !masterView->cellFilterCollection()->filters().empty() ||
|
||||||
|
masterView->propertyFilterCollection()->hasActiveFilters();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( restoreOriginal )
|
if ( anyActiveFilter && askUserToRestoreOriginalCellFilterCollection( m_managedView->name() ) )
|
||||||
{
|
{
|
||||||
m_managedView->setOverrideCellFilterCollection( nullptr );
|
managedGridView->setOverrideCellFilterCollection( nullptr );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_managedView->replaceCellFilterCollectionWithOverride();
|
managedGridView->replaceCellFilterCollectionWithOverride();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
#include "RivCellSetEnum.h"
|
#include "RivCellSetEnum.h"
|
||||||
|
|
||||||
class RimGridView;
|
class RimGridView;
|
||||||
|
class Rim3dView;
|
||||||
class RimEclipseView;
|
class RimEclipseView;
|
||||||
class RimGeoMechView;
|
class RimGeoMechView;
|
||||||
class RimViewLinker;
|
class RimViewLinker;
|
||||||
@@ -50,10 +51,10 @@ public:
|
|||||||
|
|
||||||
bool isActive() const;
|
bool isActive() const;
|
||||||
|
|
||||||
RimGridView* managedView() const;
|
Rim3dView* managedView() const;
|
||||||
void setManagedView( RimGridView* view );
|
void setManagedView( Rim3dView* view );
|
||||||
|
|
||||||
RimGridView* masterView() const;
|
Rim3dView* masterView() const;
|
||||||
RimViewLinker* ownerViewLinker() const;
|
RimViewLinker* ownerViewLinker() const;
|
||||||
|
|
||||||
const RigCaseToCaseCellMapper* cellMapper();
|
const RigCaseToCaseCellMapper* cellMapper();
|
||||||
@@ -109,8 +110,8 @@ private:
|
|||||||
static bool askUserToRestoreOriginalCellFilterCollection( const QString& viewName );
|
static bool askUserToRestoreOriginalCellFilterCollection( const QString& viewName );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<QString> m_name;
|
caf::PdmField<QString> m_name;
|
||||||
caf::PdmPtrField<RimGridView*> m_managedView;
|
caf::PdmPtrField<Rim3dView*> m_managedView;
|
||||||
|
|
||||||
caf::PdmField<bool> m_isActive;
|
caf::PdmField<bool> m_isActive;
|
||||||
caf::PdmField<bool> m_syncCamera;
|
caf::PdmField<bool> m_syncCamera;
|
||||||
|
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
#include "RimViewLinker.h"
|
#include "RimViewLinker.h"
|
||||||
|
|
||||||
|
#include "RiaOptionItemFactory.h"
|
||||||
|
|
||||||
#include "RigFemResultAddress.h"
|
#include "RigFemResultAddress.h"
|
||||||
#include "RigMainGrid.h"
|
#include "RigMainGrid.h"
|
||||||
|
|
||||||
@@ -43,7 +45,6 @@
|
|||||||
|
|
||||||
#include "RiuViewer.h"
|
#include "RiuViewer.h"
|
||||||
|
|
||||||
#include "RiaOptionItemFactory.h"
|
|
||||||
#include "cafIconProvider.h"
|
#include "cafIconProvider.h"
|
||||||
#include "cafPdmUiTreeOrdering.h"
|
#include "cafPdmUiTreeOrdering.h"
|
||||||
#include "cvfCamera.h"
|
#include "cvfCamera.h"
|
||||||
@@ -70,9 +71,6 @@ RimViewLinker::RimViewLinker()
|
|||||||
m_viewControllers.uiCapability()->setUiTreeHidden( true );
|
m_viewControllers.uiCapability()->setUiTreeHidden( true );
|
||||||
m_viewControllers.uiCapability()->setUiTreeChildrenHidden( true );
|
m_viewControllers.uiCapability()->setUiTreeChildrenHidden( true );
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_comparisonView, "LinkedComparisonView", "Comparison View" );
|
|
||||||
m_comparisonView.xmlCapability()->disableIO();
|
|
||||||
|
|
||||||
setDeletable( true );
|
setDeletable( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,15 +82,15 @@ RimViewLinker::~RimViewLinker()
|
|||||||
removeOverrides();
|
removeOverrides();
|
||||||
|
|
||||||
m_viewControllers.deleteChildren();
|
m_viewControllers.deleteChildren();
|
||||||
RimGridView* masterView = m_masterView;
|
auto masterView = m_masterView();
|
||||||
m_masterView = nullptr;
|
m_masterView = nullptr;
|
||||||
if ( masterView ) masterView->updateAutoName();
|
if ( masterView ) masterView->updateAutoName();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewLinker::updateTimeStep( RimGridView* sourceView, int timeStep )
|
void RimViewLinker::updateTimeStep( Rim3dView* sourceView, int timeStep )
|
||||||
{
|
{
|
||||||
CVF_ASSERT( sourceView );
|
CVF_ASSERT( sourceView );
|
||||||
|
|
||||||
@@ -285,7 +283,7 @@ void RimViewLinker::updateScaleWidgetVisibility()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewLinker::allViewsForCameraSync( const RimGridView* source, std::vector<RimGridView*>& views ) const
|
void RimViewLinker::allViewsForCameraSync( const Rim3dView* source, std::vector<Rim3dView*>& views ) const
|
||||||
{
|
{
|
||||||
if ( !isActive() ) return;
|
if ( !isActive() ) return;
|
||||||
|
|
||||||
@@ -323,7 +321,7 @@ void RimViewLinker::updateDependentViews()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
QString RimViewLinker::displayNameForView( RimGridView* view )
|
QString RimViewLinker::displayNameForView( Rim3dView* view )
|
||||||
{
|
{
|
||||||
QString displayName = "None";
|
QString displayName = "None";
|
||||||
|
|
||||||
@@ -338,7 +336,7 @@ QString RimViewLinker::displayNameForView( RimGridView* view )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewLinker::setMasterView( RimGridView* view )
|
void RimViewLinker::setMasterView( Rim3dView* view )
|
||||||
{
|
{
|
||||||
RimViewController* previousViewController = nullptr;
|
RimViewController* previousViewController = nullptr;
|
||||||
if ( view ) previousViewController = view->viewController();
|
if ( view ) previousViewController = view->viewController();
|
||||||
@@ -360,7 +358,7 @@ void RimViewLinker::setMasterView( RimGridView* view )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimGridView* RimViewLinker::masterView() const
|
Rim3dView* RimViewLinker::masterView() const
|
||||||
{
|
{
|
||||||
return m_masterView;
|
return m_masterView;
|
||||||
}
|
}
|
||||||
@@ -368,9 +366,9 @@ RimGridView* RimViewLinker::masterView() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::vector<RimGridView*> RimViewLinker::allViews() const
|
std::vector<Rim3dView*> RimViewLinker::allViews() const
|
||||||
{
|
{
|
||||||
std::vector<RimGridView*> views;
|
std::vector<Rim3dView*> views;
|
||||||
|
|
||||||
views.push_back( m_masterView() );
|
views.push_back( m_masterView() );
|
||||||
|
|
||||||
@@ -391,16 +389,12 @@ std::vector<RimGridView*> RimViewLinker::allViews() const
|
|||||||
void RimViewLinker::initAfterRead()
|
void RimViewLinker::initAfterRead()
|
||||||
{
|
{
|
||||||
updateUiNameAndIcon();
|
updateUiNameAndIcon();
|
||||||
if ( m_masterView() )
|
|
||||||
{
|
|
||||||
m_comparisonView = dynamic_cast<RimGridView*>( m_masterView->activeComparisonView() );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewLinker::updateScaleZ( RimGridView* sourceView, double scaleZ )
|
void RimViewLinker::updateScaleZ( Rim3dView* sourceView, double scaleZ )
|
||||||
{
|
{
|
||||||
if ( !isActive() ) return;
|
if ( !isActive() ) return;
|
||||||
|
|
||||||
@@ -415,7 +409,7 @@ void RimViewLinker::updateScaleZ( RimGridView* sourceView, double scaleZ )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<RimGridView*> views;
|
std::vector<Rim3dView*> views;
|
||||||
allViewsForCameraSync( sourceView, views );
|
allViewsForCameraSync( sourceView, views );
|
||||||
|
|
||||||
// Make sure scale factors are identical
|
// Make sure scale factors are identical
|
||||||
@@ -450,7 +444,11 @@ bool RimViewLinker::isActive() const
|
|||||||
void RimViewLinker::updateUiNameAndIcon()
|
void RimViewLinker::updateUiNameAndIcon()
|
||||||
{
|
{
|
||||||
caf::IconProvider iconProvider;
|
caf::IconProvider iconProvider;
|
||||||
RimViewLinker::findNameAndIconFromView( &m_name.v(), &iconProvider, m_masterView );
|
|
||||||
|
QString name;
|
||||||
|
RimViewLinker::findNameAndIconFromView( &name, &iconProvider, m_masterView );
|
||||||
|
name += " (Primary)";
|
||||||
|
m_name.v() = name;
|
||||||
|
|
||||||
if ( m_masterView ) m_masterView->updateAutoName();
|
if ( m_masterView ) m_masterView->updateAutoName();
|
||||||
|
|
||||||
@@ -482,7 +480,7 @@ void RimViewLinker::scheduleCreateDisplayModelAndRedrawForDependentViews()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewLinker::findNameAndIconFromView( QString* name, caf::IconProvider* icon, RimGridView* view )
|
void RimViewLinker::findNameAndIconFromView( QString* name, caf::IconProvider* icon, Rim3dView* view )
|
||||||
{
|
{
|
||||||
CVF_ASSERT( name && icon );
|
CVF_ASSERT( name && icon );
|
||||||
|
|
||||||
@@ -500,7 +498,7 @@ void RimViewLinker::findNameAndIconFromView( QString* name, caf::IconProvider* i
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewLinker::updateCursorPosition( const RimGridView* sourceView, const cvf::Vec3d& domainCoord )
|
void RimViewLinker::updateCursorPosition( const Rim3dView* sourceView, const cvf::Vec3d& domainCoord )
|
||||||
{
|
{
|
||||||
RimViewController* sourceViewLink = sourceView->viewController();
|
RimViewController* sourceViewLink = sourceView->viewController();
|
||||||
if ( sourceViewLink && !sourceViewLink->showCursor() )
|
if ( sourceViewLink && !sourceViewLink->showCursor() )
|
||||||
@@ -508,7 +506,7 @@ void RimViewLinker::updateCursorPosition( const RimGridView* sourceView, const c
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<RimGridView*> viewsToUpdate;
|
std::vector<Rim3dView*> viewsToUpdate;
|
||||||
allViewsForCameraSync( sourceView, viewsToUpdate );
|
allViewsForCameraSync( sourceView, viewsToUpdate );
|
||||||
|
|
||||||
for ( Rim3dView* destinationView : viewsToUpdate )
|
for ( Rim3dView* destinationView : viewsToUpdate )
|
||||||
@@ -531,24 +529,6 @@ void RimViewLinker::updateCursorPosition( const RimGridView* sourceView, const c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimViewLinker::notifyManagedViewChange( RimGridView* oldManagedView, RimGridView* newManagedView )
|
|
||||||
{
|
|
||||||
if ( oldManagedView && ( oldManagedView == m_comparisonView ) )
|
|
||||||
{
|
|
||||||
m_comparisonView = newManagedView;
|
|
||||||
m_comparisonView.uiCapability()->updateConnectedEditors();
|
|
||||||
|
|
||||||
if ( masterView() )
|
|
||||||
{
|
|
||||||
masterView()->setComparisonView( m_comparisonView() );
|
|
||||||
masterView()->scheduleCreateDisplayModelAndRedraw();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -569,10 +549,10 @@ QList<caf::PdmOptionItemInfo> RimViewLinker::calculateValueOptions( const caf::P
|
|||||||
{
|
{
|
||||||
QList<caf::PdmOptionItemInfo> options;
|
QList<caf::PdmOptionItemInfo> options;
|
||||||
|
|
||||||
RimGridView* actualComparisonView = nullptr;
|
Rim3dView* actualComparisonView = nullptr;
|
||||||
if ( m_masterView() )
|
if ( m_masterView() )
|
||||||
{
|
{
|
||||||
actualComparisonView = dynamic_cast<RimGridView*>( m_masterView->activeComparisonView() );
|
actualComparisonView = m_masterView->activeComparisonView();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isActiveCompViewInList = false;
|
bool isActiveCompViewInList = false;
|
||||||
@@ -605,38 +585,9 @@ QList<caf::PdmOptionItemInfo> RimViewLinker::calculateValueOptions( const caf::P
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewLinker::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
void RimViewLinker::updateCamera( Rim3dView* sourceView )
|
||||||
{
|
{
|
||||||
// Update the comparison view from the master view
|
if ( !sourceView || !sourceView->viewer() ) return;
|
||||||
if ( m_masterView() )
|
|
||||||
{
|
|
||||||
m_comparisonView = dynamic_cast<RimGridView*>( m_masterView->activeComparisonView() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimViewLinker::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
|
|
||||||
const QVariant& oldValue,
|
|
||||||
const QVariant& newValue )
|
|
||||||
{
|
|
||||||
if ( changedField == &m_comparisonView )
|
|
||||||
{
|
|
||||||
if ( masterView() )
|
|
||||||
{
|
|
||||||
masterView()->setComparisonView( m_comparisonView() );
|
|
||||||
masterView()->scheduleCreateDisplayModelAndRedraw();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimViewLinker::updateCamera( RimGridView* sourceView )
|
|
||||||
{
|
|
||||||
if ( !sourceView->viewer() ) return;
|
|
||||||
|
|
||||||
if ( !isActive() ) return;
|
if ( !isActive() ) return;
|
||||||
|
|
||||||
@@ -649,7 +600,7 @@ void RimViewLinker::updateCamera( RimGridView* sourceView )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<RimGridView*> viewsToUpdate;
|
std::vector<Rim3dView*> viewsToUpdate;
|
||||||
allViewsForCameraSync( sourceView, viewsToUpdate );
|
allViewsForCameraSync( sourceView, viewsToUpdate );
|
||||||
|
|
||||||
RimViewManipulator::applySourceViewCameraOnDestinationViews( sourceView, viewsToUpdate );
|
RimViewManipulator::applySourceViewCameraOnDestinationViews( sourceView, viewsToUpdate );
|
||||||
@@ -658,7 +609,7 @@ void RimViewLinker::updateCamera( RimGridView* sourceView )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewLinker::addDependentView( RimGridView* view )
|
void RimViewLinker::addDependentView( Rim3dView* view )
|
||||||
{
|
{
|
||||||
CVF_ASSERT( view && view != m_masterView );
|
CVF_ASSERT( view && view != m_masterView );
|
||||||
|
|
||||||
@@ -676,7 +627,7 @@ void RimViewLinker::addDependentView( RimGridView* view )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RimViewLinker::isFirstViewDependentOnSecondView( const RimGridView* firstView, const RimGridView* secondView ) const
|
bool RimViewLinker::isFirstViewDependentOnSecondView( const Rim3dView* firstView, const Rim3dView* secondView ) const
|
||||||
{
|
{
|
||||||
for ( const RimViewController* controller : m_viewControllers() )
|
for ( const RimViewController* controller : m_viewControllers() )
|
||||||
{
|
{
|
||||||
@@ -732,7 +683,7 @@ void RimViewLinker::removeViewController( RimViewController* viewController )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimGridView* RimViewLinker::firstControlledView()
|
Rim3dView* RimViewLinker::firstControlledView()
|
||||||
{
|
{
|
||||||
if ( m_viewControllers.empty() ) return nullptr;
|
if ( m_viewControllers.empty() ) return nullptr;
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ class BoundingBox;
|
|||||||
|
|
||||||
class RimViewController;
|
class RimViewController;
|
||||||
class RiuViewer;
|
class RiuViewer;
|
||||||
class RimGridView;
|
class Rim3dView;
|
||||||
class RimCellFilter;
|
class RimCellFilter;
|
||||||
class RimPropertyFilter;
|
class RimPropertyFilter;
|
||||||
|
|
||||||
@@ -58,20 +58,20 @@ public:
|
|||||||
|
|
||||||
bool isActive() const;
|
bool isActive() const;
|
||||||
|
|
||||||
void setMasterView( RimGridView* view );
|
void setMasterView( Rim3dView* view );
|
||||||
RimGridView* masterView() const;
|
Rim3dView* masterView() const;
|
||||||
void addDependentView( RimGridView* view );
|
void addDependentView( Rim3dView* view );
|
||||||
bool isFirstViewDependentOnSecondView( const RimGridView* firstView, const RimGridView* secondView ) const;
|
bool isFirstViewDependentOnSecondView( const Rim3dView* firstView, const Rim3dView* secondView ) const;
|
||||||
void updateDependentViews();
|
void updateDependentViews();
|
||||||
void removeViewController( RimViewController* viewController );
|
void removeViewController( RimViewController* viewController );
|
||||||
RimGridView* firstControlledView();
|
Rim3dView* firstControlledView();
|
||||||
|
|
||||||
void updateOverrides();
|
void updateOverrides();
|
||||||
void updateWindowTitles();
|
void updateWindowTitles();
|
||||||
|
|
||||||
void updateCamera( RimGridView* sourceView );
|
void updateCamera( Rim3dView* sourceView );
|
||||||
void updateTimeStep( RimGridView* sourceView, int timeStep );
|
void updateTimeStep( Rim3dView* sourceView, int timeStep );
|
||||||
void updateScaleZ( RimGridView* sourceView, double scaleZ );
|
void updateScaleZ( Rim3dView* sourceView, double scaleZ );
|
||||||
|
|
||||||
void updateCellResult();
|
void updateCellResult();
|
||||||
|
|
||||||
@@ -83,41 +83,35 @@ public:
|
|||||||
void scheduleGeometryRegenForDepViews( RivCellSetEnum geometryType );
|
void scheduleGeometryRegenForDepViews( RivCellSetEnum geometryType );
|
||||||
void scheduleCreateDisplayModelAndRedrawForDependentViews();
|
void scheduleCreateDisplayModelAndRedrawForDependentViews();
|
||||||
|
|
||||||
std::vector<RimGridView*> allViews() const;
|
std::vector<Rim3dView*> allViews() const;
|
||||||
|
|
||||||
void updateUiNameAndIcon();
|
void updateUiNameAndIcon();
|
||||||
|
|
||||||
void addViewControllers( caf::PdmUiTreeOrdering& uiTreeOrdering ) const;
|
void addViewControllers( caf::PdmUiTreeOrdering& uiTreeOrdering ) const;
|
||||||
|
|
||||||
static void findNameAndIconFromView( QString* name, caf::IconProvider* icon, RimGridView* view );
|
static void findNameAndIconFromView( QString* name, caf::IconProvider* icon, Rim3dView* view );
|
||||||
|
|
||||||
void updateCursorPosition( const RimGridView* sourceView, const cvf::Vec3d& domainCoord );
|
void updateCursorPosition( const Rim3dView* sourceView, const cvf::Vec3d& domainCoord );
|
||||||
|
|
||||||
void notifyManagedViewChange( RimGridView* oldManagedView, RimGridView* newManagedView );
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
caf::PdmFieldHandle* userDescriptionField() override { return &m_name; }
|
caf::PdmFieldHandle* userDescriptionField() override { return &m_name; }
|
||||||
|
|
||||||
void initAfterRead() override;
|
void initAfterRead() override;
|
||||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
|
||||||
|
|
||||||
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
||||||
|
void onChildDeleted( caf::PdmChildArrayFieldHandle* childArray,
|
||||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
|
||||||
void onChildDeleted( caf::PdmChildArrayFieldHandle* childArray,
|
|
||||||
std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static QString displayNameForView( RimGridView* view );
|
static QString displayNameForView( Rim3dView* view );
|
||||||
|
|
||||||
void allViewsForCameraSync( const RimGridView* source, std::vector<RimGridView*>& views ) const;
|
void allViewsForCameraSync( const Rim3dView* source, std::vector<Rim3dView*>& views ) const;
|
||||||
|
|
||||||
void removeOverrides();
|
void removeOverrides();
|
||||||
void updateScaleWidgetVisibility();
|
void updateScaleWidgetVisibility();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmChildArrayField<RimViewController*> m_viewControllers;
|
caf::PdmChildArrayField<RimViewController*> m_viewControllers;
|
||||||
caf::PdmPtrField<RimGridView*> m_masterView;
|
caf::PdmPtrField<Rim3dView*> m_masterView;
|
||||||
caf::PdmField<QString> m_name;
|
caf::PdmField<QString> m_name;
|
||||||
caf::PdmPtrField<RimGridView*> m_comparisonView;
|
|
||||||
};
|
};
|
||||||
|
@@ -34,8 +34,8 @@
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimViewManipulator::applySourceViewCameraOnDestinationViews( RimGridView* sourceView,
|
void RimViewManipulator::applySourceViewCameraOnDestinationViews( Rim3dView* sourceView,
|
||||||
const std::vector<RimGridView*>& destinationViews )
|
const std::vector<Rim3dView*>& destinationViews )
|
||||||
{
|
{
|
||||||
bool setPointOfInterest = false;
|
bool setPointOfInterest = false;
|
||||||
cvf::Vec3d sourceCamUp;
|
cvf::Vec3d sourceCamUp;
|
||||||
@@ -77,7 +77,7 @@ void RimViewManipulator::applySourceViewCameraOnDestinationViews( RimGridView*
|
|||||||
sourceSceneBB.transform( trans );
|
sourceSceneBB.transform( trans );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( RimGridView* destinationView : destinationViews )
|
for ( auto destinationView : destinationViews )
|
||||||
{
|
{
|
||||||
if ( !destinationView ) continue;
|
if ( !destinationView ) continue;
|
||||||
|
|
||||||
|
@@ -32,8 +32,8 @@ class Rim3dView;
|
|||||||
class RimViewManipulator
|
class RimViewManipulator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void applySourceViewCameraOnDestinationViews( RimGridView* sourceView,
|
static void applySourceViewCameraOnDestinationViews( Rim3dView* sourceView,
|
||||||
const std::vector<RimGridView*>& destinationViews );
|
const std::vector<Rim3dView*>& destinationViews );
|
||||||
static cvf::Vec3d calculateEquivalentCamPosOffset( Rim3dView* sourceView, Rim3dView* destView );
|
static cvf::Vec3d calculateEquivalentCamPosOffset( Rim3dView* sourceView, Rim3dView* destView );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -354,24 +354,21 @@ void RiuViewer::slotSetCurrentFrame( int frameIndex )
|
|||||||
{
|
{
|
||||||
setCurrentFrame( frameIndex );
|
setCurrentFrame( frameIndex );
|
||||||
|
|
||||||
if ( m_rimView )
|
auto* view = dynamic_cast<Rim3dView*>( m_rimView.p() );
|
||||||
|
if ( view )
|
||||||
{
|
{
|
||||||
RimViewLinker* viewLinker = m_rimView->assosiatedViewLinker();
|
RimViewLinker* viewLinker = view->assosiatedViewLinker();
|
||||||
if ( viewLinker )
|
if ( viewLinker )
|
||||||
{
|
{
|
||||||
viewLinker->updateTimeStep( dynamic_cast<RimGridView*>( m_rimView.p() ), frameIndex );
|
viewLinker->updateTimeStep( view, frameIndex );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update views using this as comparison
|
// Update views using this as comparison
|
||||||
Rim3dView* view = dynamic_cast<Rim3dView*>( m_rimView.p() );
|
std::set<Rim3dView*> containingViews = view->viewsUsingThisAsComparisonView();
|
||||||
if ( view )
|
|
||||||
{
|
|
||||||
std::set<Rim3dView*> containingViews = view->viewsUsingThisAsComparisonView();
|
|
||||||
|
|
||||||
for ( auto contView : containingViews )
|
for ( auto contView : containingViews )
|
||||||
{
|
{
|
||||||
contView->updateDisplayModelForCurrentTimeStepAndRedraw();
|
contView->updateDisplayModelForCurrentTimeStepAndRedraw();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -982,7 +979,7 @@ void RiuViewer::navigationPolicyUpdate()
|
|||||||
RimViewLinker* viewLinker = m_rimView->assosiatedViewLinker();
|
RimViewLinker* viewLinker = m_rimView->assosiatedViewLinker();
|
||||||
if ( viewLinker )
|
if ( viewLinker )
|
||||||
{
|
{
|
||||||
viewLinker->updateCamera( dynamic_cast<RimGridView*>( m_rimView.p() ) );
|
viewLinker->updateCamera( dynamic_cast<Rim3dView*>( m_rimView.p() ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1090,7 +1087,8 @@ void RiuViewer::mouseMoveEvent( QMouseEvent* mouseEvent )
|
|||||||
cvf::ref<caf::DisplayCoordTransform> trans = m_rimView->displayCoordTransform();
|
cvf::ref<caf::DisplayCoordTransform> trans = m_rimView->displayCoordTransform();
|
||||||
cvf::Vec3d domainCoord = trans->transformToDomainCoord( displayCoord );
|
cvf::Vec3d domainCoord = trans->transformToDomainCoord( displayCoord );
|
||||||
|
|
||||||
viewLinker->updateCursorPosition( dynamic_cast<RimGridView*>( m_rimView.p() ), domainCoord );
|
auto view = dynamic_cast<Rim3dView*>( m_rimView.p() );
|
||||||
|
if ( view ) viewLinker->updateCursorPosition( view, domainCoord );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1120,7 +1118,9 @@ void RiuViewer::leaveEvent( QEvent* )
|
|||||||
if ( m_rimView && m_rimView->assosiatedViewLinker() )
|
if ( m_rimView && m_rimView->assosiatedViewLinker() )
|
||||||
{
|
{
|
||||||
RimViewLinker* viewLinker = m_rimView->assosiatedViewLinker();
|
RimViewLinker* viewLinker = m_rimView->assosiatedViewLinker();
|
||||||
viewLinker->updateCursorPosition( dynamic_cast<RimGridView*>( m_rimView.p() ), cvf::Vec3d::UNDEFINED );
|
|
||||||
|
auto view = dynamic_cast<Rim3dView*>( m_rimView.p() );
|
||||||
|
if ( view ) viewLinker->updateCursorPosition( view, cvf::Vec3d::UNDEFINED );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -160,7 +160,7 @@ void RiuViewerCommands::setOwnerView( Rim3dView* owner )
|
|||||||
|
|
||||||
void RiuViewerCommands::addCompareToViewMenu( caf::CmdFeatureMenuBuilder* menuBuilder )
|
void RiuViewerCommands::addCompareToViewMenu( caf::CmdFeatureMenuBuilder* menuBuilder )
|
||||||
{
|
{
|
||||||
RimGridView* mainGridView = dynamic_cast<RimGridView*>( m_reservoirView.p() );
|
auto* mainGridView = m_reservoirView.p();
|
||||||
if ( mainGridView && !mainGridView->activeComparisonView() )
|
if ( mainGridView && !mainGridView->activeComparisonView() )
|
||||||
{
|
{
|
||||||
std::vector<Rim3dView*> validComparisonViews;
|
std::vector<Rim3dView*> validComparisonViews;
|
||||||
@@ -169,8 +169,6 @@ void RiuViewerCommands::addCompareToViewMenu( caf::CmdFeatureMenuBuilder* menuBu
|
|||||||
RimProject::current()->allViews( views );
|
RimProject::current()->allViews( views );
|
||||||
for ( auto view : views )
|
for ( auto view : views )
|
||||||
{
|
{
|
||||||
if ( !dynamic_cast<RimGridView*>( view ) ) continue;
|
|
||||||
|
|
||||||
if ( view != mainGridView )
|
if ( view != mainGridView )
|
||||||
{
|
{
|
||||||
validComparisonViews.push_back( view );
|
validComparisonViews.push_back( view );
|
||||||
@@ -596,7 +594,7 @@ void RiuViewerCommands::displayContextMenu( QMouseEvent* event )
|
|||||||
// View Link commands
|
// View Link commands
|
||||||
if ( !firstHitPart )
|
if ( !firstHitPart )
|
||||||
{
|
{
|
||||||
if ( gridView )
|
if ( gridView || int2dView )
|
||||||
{
|
{
|
||||||
menuBuilder << "RicLinkViewFeature";
|
menuBuilder << "RicLinkViewFeature";
|
||||||
menuBuilder << "RicShowLinkOptionsFeature";
|
menuBuilder << "RicShowLinkOptionsFeature";
|
||||||
@@ -605,9 +603,7 @@ void RiuViewerCommands::displayContextMenu( QMouseEvent* event )
|
|||||||
menuBuilder.addSeparator();
|
menuBuilder.addSeparator();
|
||||||
menuBuilder << "RicUnLinkViewFeature";
|
menuBuilder << "RicUnLinkViewFeature";
|
||||||
menuBuilder << "RicRemoveComparison3dViewFeature";
|
menuBuilder << "RicRemoveComparison3dViewFeature";
|
||||||
}
|
menuBuilder.addSeparator();
|
||||||
else if ( int2dView )
|
|
||||||
{
|
|
||||||
menuBuilder << "RicSelectColorResult";
|
menuBuilder << "RicSelectColorResult";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -637,9 +633,6 @@ void RiuViewerCommands::displayContextMenu( QMouseEvent* event )
|
|||||||
menuBuilder << "RicShowGridStatisticsFeature";
|
menuBuilder << "RicShowGridStatisticsFeature";
|
||||||
menuBuilder << "RicSelectColorResult";
|
menuBuilder << "RicSelectColorResult";
|
||||||
}
|
}
|
||||||
else if ( int2dView )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
menuBuilder << "RicExportContourMapToTextFeature";
|
menuBuilder << "RicExportContourMapToTextFeature";
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user