mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#401) WIP: CaseToCase mapper creation.
Now only the mapping generation is missing
This commit is contained in:
@@ -35,6 +35,12 @@
|
||||
#include "RiuViewer.h"
|
||||
|
||||
#include "cafPdmUiTreeOrdering.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RigCaseData.h"
|
||||
#include "RimGeoMechCase.h"
|
||||
#include "RigGeomechCaseData.h"
|
||||
#include "RigFemPartCollection.h"
|
||||
#include "RigCaseToCaseCellMapper.h"
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimViewLink, "RimViewLink");
|
||||
@@ -191,7 +197,6 @@ void RimViewLink::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
|
||||
{
|
||||
RimView* rimView = dynamic_cast<RimView*>(prevValue);
|
||||
rimView->setOverrideRangeFilterCollection(NULL);
|
||||
rimView->rangeFilterCollection()->updateDisplayModeNotifyManagedViews();
|
||||
|
||||
RimEclipseView* rimEclipseView = dynamic_cast<RimEclipseView*>(rimView);
|
||||
if (rimEclipseView)
|
||||
@@ -207,7 +212,7 @@ void RimViewLink::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
|
||||
|
||||
RimViewLinker* linkedViews = NULL;
|
||||
this->firstAnchestorOrThisOfType(linkedViews);
|
||||
linkedViews->configureOverrides();
|
||||
linkedViews->configureOverrides(); // Should not be neccesary? JJS
|
||||
}
|
||||
|
||||
updateOptionSensitivity();
|
||||
@@ -512,3 +517,89 @@ RimViewLinker* RimViewLink::ownerViewLinker()
|
||||
return viewLinker;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const RigCaseToCaseCellMapper* RimViewLink::cellMapper()
|
||||
{
|
||||
RimEclipseView* masterEclipseView = dynamic_cast<RimEclipseView*>(masterView());
|
||||
RimEclipseView* dependEclipseView = managedEclipseView();
|
||||
RimGeoMechView* masterGeomechView = dynamic_cast<RimGeoMechView*>(masterView());
|
||||
RimGeoMechView* dependGeomechView = managedGeoView();
|
||||
|
||||
RigMainGrid* masterEclGrid = NULL;
|
||||
RigMainGrid* dependEclGrid = NULL;
|
||||
RigFemPart* masterFemPart = NULL;
|
||||
RigFemPart* dependFemPart = NULL;
|
||||
|
||||
if (masterEclipseView && masterEclipseView->eclipseCase()->reservoirData())
|
||||
{
|
||||
masterEclGrid = masterEclipseView->eclipseCase()->reservoirData()->mainGrid();
|
||||
}
|
||||
|
||||
if (dependEclipseView && dependEclipseView->eclipseCase()->reservoirData())
|
||||
{
|
||||
dependEclGrid = dependEclipseView->eclipseCase()->reservoirData()->mainGrid();
|
||||
}
|
||||
|
||||
if (masterGeomechView && masterGeomechView->geoMechCase()->geoMechData()
|
||||
&& masterGeomechView->geoMechCase()->geoMechData()->femParts()->partCount())
|
||||
{
|
||||
masterFemPart = masterGeomechView->geoMechCase()->geoMechData()->femParts()->part(0);
|
||||
}
|
||||
|
||||
if (dependGeomechView && dependGeomechView->geoMechCase()->geoMechData()
|
||||
&& dependGeomechView->geoMechCase()->geoMechData()->femParts()->partCount())
|
||||
{
|
||||
dependFemPart = dependGeomechView->geoMechCase()->geoMechData()->femParts()->part(0);
|
||||
}
|
||||
|
||||
// If we have the correct mapping already, return it.
|
||||
if (m_caseToCaseCellMapper.notNull())
|
||||
{
|
||||
if ( masterEclGrid == m_caseToCaseCellMapper->masterGrid()
|
||||
&& dependEclGrid == m_caseToCaseCellMapper->dependentGrid()
|
||||
&& masterFemPart == m_caseToCaseCellMapper->masterFemPart()
|
||||
&& dependFemPart == m_caseToCaseCellMapper->dependentFemPart())
|
||||
{
|
||||
return m_caseToCaseCellMapper.p();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_caseToCaseCellMapper = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// Create the mapping if needed
|
||||
|
||||
if (m_caseToCaseCellMapper.isNull())
|
||||
{
|
||||
if (masterEclGrid && dependFemPart)
|
||||
{
|
||||
m_caseToCaseCellMapper = new RigCaseToCaseCellMapper(masterEclGrid, dependFemPart);
|
||||
}
|
||||
else if (masterEclGrid && dependEclGrid)
|
||||
{
|
||||
m_caseToCaseCellMapper = new RigCaseToCaseCellMapper(masterEclGrid, dependEclGrid);
|
||||
}
|
||||
else if (masterFemPart && dependFemPart)
|
||||
{
|
||||
m_caseToCaseCellMapper = new RigCaseToCaseCellMapper(masterFemPart, dependFemPart);
|
||||
}
|
||||
else if (masterFemPart && dependEclGrid)
|
||||
{
|
||||
m_caseToCaseCellMapper = new RigCaseToCaseCellMapper(masterFemPart, dependEclGrid);
|
||||
}
|
||||
}
|
||||
|
||||
return m_caseToCaseCellMapper.p();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimView* RimViewLink::masterView()
|
||||
{
|
||||
return ownerViewLinker()->mainView();
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,14 @@
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmPtrField.h"
|
||||
|
||||
#include "cvfBase.h"
|
||||
#include "cvfObject.h"
|
||||
|
||||
class RimView;
|
||||
class RimEclipseView;
|
||||
class RimGeoMechView;
|
||||
class RimViewLinker;
|
||||
class RigCaseToCaseCellMapper;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@@ -45,8 +49,11 @@ public:
|
||||
|
||||
RimView* managedView();
|
||||
void setManagedView(RimView* view);
|
||||
RimView* masterView();
|
||||
RimViewLinker* ownerViewLinker();
|
||||
|
||||
const RigCaseToCaseCellMapper* cellMapper();
|
||||
|
||||
// Linked (both ways) properties
|
||||
caf::PdmField<bool> syncCamera;
|
||||
caf::PdmField<bool> syncTimeStep;
|
||||
@@ -83,4 +90,6 @@ private:
|
||||
|
||||
caf::PdmPtrField<RimView*> m_managedView;
|
||||
QIcon m_originalIcon;
|
||||
cvf::ref<RigCaseToCaseCellMapper> m_caseToCaseCellMapper;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user