Skip to content

Commit

Permalink
#11693 Add enum to control zoom operation when case is changed
Browse files Browse the repository at this point in the history
  • Loading branch information
magnesj committed Sep 19, 2024
1 parent 864d20b commit c65e15f
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 8 deletions.
29 changes: 23 additions & 6 deletions ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,24 @@
#include "cvfViewport.h"
#include "cvfqtUtils.h"

#include <QApplication>

#include <climits>

namespace caf
{
template <>
void caf::AppEnum<RimEclipseView::RimCaseChangeBehaviour>::setUp()
{
addItem( RimEclipseView::RimCaseChangeBehaviour::KEEP_CURRENT_SETTINGS, "KEEP_CURRENT_SETTINGS", "Keep Current View Settings" );
addItem( RimEclipseView::RimCaseChangeBehaviour::STORE_VIEW_SETTINGS_FOR_CASE,
"STORE_VIEW_SETTINGS_FOR_CASE",
"Store View Settings for Case" );
addItem( RimEclipseView::RimCaseChangeBehaviour::ZOOM_TO_FIT, "ZOOM_TO_FIT", "Zoom to Fit" );
setDefault( RimEclipseView::RimCaseChangeBehaviour::KEEP_CURRENT_SETTINGS );
}
} // namespace caf

CAF_PDM_XML_SOURCE_INIT( RimEclipseView, "ReservoirView" );
//--------------------------------------------------------------------------------------------------
///
Expand All @@ -150,7 +166,7 @@ RimEclipseView::RimEclipseView()
CAF_PDM_InitFieldNoDefault( &m_customEclipseCase_OBSOLETE, "CustomEclipseCase", "Custom Case" );

CAF_PDM_InitScriptableFieldNoDefault( &m_eclipseCase, "EclipseCase", "Eclipse Case" );
CAF_PDM_InitField( &m_storeViewSettingsPerCase, "StoreViewSettingsPerCase", false, "Store View Settings for Case" );
CAF_PDM_InitFieldNoDefault( &m_caseChangeBehaviour, "CaseChangeBehaviour", "Zoom Operation When Changing Case" );

CAF_PDM_InitScriptableFieldWithScriptKeywordNoDefault( &m_cellResult, "GridCellResult", "CellResult", "Cell Result", ":/CellResult.png" );
m_cellResult = new RimEclipseCellColors();
Expand Down Expand Up @@ -465,13 +481,16 @@ void RimEclipseView::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
updateGridBoxData();
updateAnnotationItems();

if ( m_storeViewSettingsPerCase() )
if ( m_caseChangeBehaviour() == RimEclipseView::RimCaseChangeBehaviour::STORE_VIEW_SETTINGS_FOR_CASE )
{
auto currentEclipseCase = dynamic_cast<RimEclipseCase*>( oldValue.value<caf::PdmPointer<PdmObjectHandle>>().rawPtr() );
storeCurrentAndApplyNewCameraPosition( currentEclipseCase, m_eclipseCase );
}
else
else if ( m_caseChangeBehaviour() == RimEclipseView::RimCaseChangeBehaviour::ZOOM_TO_FIT )
{
// Required to update the view after the case change. zoomAll() is not working without this.
QApplication::processEvents();

zoomAll();
}

Expand Down Expand Up @@ -1981,7 +2000,7 @@ void RimEclipseView::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
caf::PdmUiGroup* dataSourceGroup = uiOrdering.addNewGroup( "Data Source" );

dataSourceGroup->add( &m_eclipseCase );
dataSourceGroup->add( &m_storeViewSettingsPerCase );
dataSourceGroup->add( &m_caseChangeBehaviour );
}

Rim3dView::defineUiOrdering( uiConfigName, uiOrdering );
Expand Down Expand Up @@ -2073,8 +2092,6 @@ QList<caf::PdmOptionItemInfo> RimEclipseView::calculateValueOptions( const caf::
{
QList<caf::PdmOptionItemInfo> options;

options.push_back( caf::PdmOptionItemInfo( "None", nullptr ) );

for ( auto eclCase : RimEclipseCaseTools::allEclipseGridCases() )
{
options.push_back( caf::PdmOptionItemInfo( eclCase->caseUserDescription(), eclCase, false, eclCase->uiIconProvider() ) );
Expand Down
12 changes: 10 additions & 2 deletions ApplicationLibCode/ProjectDataModel/RimEclipseView.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,14 @@ class RimEclipseView : public RimGridView
{
CAF_PDM_HEADER_INIT;

public:
enum class RimCaseChangeBehaviour
{
ZOOM_TO_FIT,
KEEP_CURRENT_SETTINGS,
STORE_VIEW_SETTINGS_FOR_CASE
};

public:
RimEclipseView();
~RimEclipseView() override;
Expand Down Expand Up @@ -228,8 +236,8 @@ class RimEclipseView : public RimGridView
protected:
cvf::ref<cvf::ModelBasicList> m_faultReactVizModel;

caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
caf::PdmField<bool> m_storeViewSettingsPerCase;
caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
caf::PdmField<caf::AppEnum<RimCaseChangeBehaviour>> m_caseChangeBehaviour;

private:
caf::PdmField<bool> m_showInvalidCells;
Expand Down

0 comments on commit c65e15f

Please sign in to comment.