(#657) Create new display model when adding / deleting a cross section

This commit is contained in:
Magne Sjaastad 2015-11-19 13:40:45 +01:00
parent 29973bbcf6
commit 089c9d47da
6 changed files with 48 additions and 29 deletions

View File

@ -22,8 +22,6 @@
#include "RimCrossSection.h"
#include "RimCrossSectionCollection.h"
#include "RiuMainWindow.h"
#include "cafCmdExecCommandManager.h"
#include "cafSelectionManager.h"
@ -96,11 +94,8 @@ void RicAppendCrossSectionFeatureCmd::redo()
CVF_ASSERT(m_crossSectionCollection);
RimCrossSection* crossSection = new RimCrossSection();
crossSection->name = QString("Cross Section (%1)").arg(m_crossSectionCollection->crossSections.size() + 1);
m_crossSectionCollection->crossSections.push_back(crossSection);
m_crossSectionCollection->updateConnectedEditors();
RiuMainWindow::instance()->setCurrentObjectInTreeView(crossSection);
crossSection->name = QString("Cross Section");
m_crossSectionCollection->appendCrossSection(crossSection);
}
//--------------------------------------------------------------------------------------------------

View File

@ -24,8 +24,6 @@
#include "RimEclipseView.h"
#include "RimEclipseWell.h"
#include "RiuMainWindow.h"
#include "cafCmdExecCommandManager.h"
#include "cafSelectionManager.h"
@ -109,10 +107,7 @@ void RicNewSimWellCrossSectionCmd::redo()
crossSection->type = RimCrossSection::CS_SIMULATION_WELL;
crossSection->simulationWell = m_wellPath;
m_crossSectionCollection->crossSections.push_back(crossSection);
m_crossSectionCollection->updateConnectedEditors();
RiuMainWindow::instance()->setCurrentObjectInTreeView(crossSection);
m_crossSectionCollection->appendCrossSection(crossSection);
}
//--------------------------------------------------------------------------------------------------

View File

@ -23,8 +23,6 @@
#include "RimCrossSectionCollection.h"
#include "RimWellPath.h"
#include "RiuMainWindow.h"
#include "cafCmdExecCommandManager.h"
#include "cafSelectionManager.h"
@ -123,10 +121,7 @@ void RicNewWellPathCrossSectionFeatureCmd::redo()
crossSection->type = RimCrossSection::CS_WELL_PATH;
crossSection->wellPath = m_wellPath;
m_crossSectionCollection->crossSections.push_back(crossSection);
m_crossSectionCollection->updateConnectedEditors();
RiuMainWindow::instance()->setCurrentObjectInTreeView(crossSection);
m_crossSectionCollection->appendCrossSection(crossSection);
}
//--------------------------------------------------------------------------------------------------

View File

@ -22,6 +22,7 @@
#include "RicDeleteItemExecData.h"
#include "RimCellRangeFilterCollection.h"
#include "RimCrossSectionCollection.h"
#include "RimEclipsePropertyFilterCollection.h"
#include "RimGeoMechPropertyFilterCollection.h"
#include "RimProject.h"
@ -102,6 +103,13 @@ void RicDeleteItemExec::redo()
view->scheduleCreateDisplayModelAndRedraw();
}
RimCrossSectionCollection* crossSectionColl;
parentObj->firstAnchestorOrThisOfType(crossSectionColl);
if (view && crossSectionColl)
{
view->scheduleCreateDisplayModelAndRedraw();
}
RimWellPathCollection* wellPathColl;
parentObj->firstAnchestorOrThisOfType(wellPathColl);

View File

@ -21,6 +21,8 @@
#include "RimCrossSection.h"
#include "RivCrossSectionPartMgr.h"
#include "RiuMainWindow.h"
#include "RimView.h"
CAF_PDM_SOURCE_INIT(RimCrossSectionCollection, "CrossSectionCollection");
@ -32,8 +34,8 @@ RimCrossSectionCollection::RimCrossSectionCollection()
{
CAF_PDM_InitObject("Cross Sections", ":/undefined_image.png", "", "");
CAF_PDM_InitFieldNoDefault(&crossSections, "CrossSections", "Cross Sections", "", "", "");
crossSections.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_crossSections, "CrossSections", "Cross Sections", "", "", "");
m_crossSections.uiCapability()->setUiHidden(true);
CAF_PDM_InitField(&isActive, "Active", true, "Active", "", "", "");
isActive.uiCapability()->setUiHidden(true);
@ -52,9 +54,9 @@ caf::PdmFieldHandle* RimCrossSectionCollection::objectToggleField()
//--------------------------------------------------------------------------------------------------
void RimCrossSectionCollection::applySingleColorEffect()
{
for (size_t csIdx = 0; csIdx < crossSections.size(); ++csIdx)
for (size_t csIdx = 0; csIdx < m_crossSections.size(); ++csIdx)
{
RimCrossSection* cs = crossSections[csIdx];
RimCrossSection* cs = m_crossSections[csIdx];
cs->crossSectionPartMgr()->applySingleColorEffect();
}
}
@ -64,9 +66,9 @@ void RimCrossSectionCollection::applySingleColorEffect()
//--------------------------------------------------------------------------------------------------
void RimCrossSectionCollection::updateCellResultColor(size_t timeStepIndex, RimEclipseCellColors* cellResultColors)
{
for (size_t csIdx = 0; csIdx < crossSections.size(); ++csIdx)
for (size_t csIdx = 0; csIdx < m_crossSections.size(); ++csIdx)
{
RimCrossSection* cs = crossSections[csIdx];
RimCrossSection* cs = m_crossSections[csIdx];
cs->crossSectionPartMgr()->updateCellResultColor(timeStepIndex, cellResultColors);
}
}
@ -76,9 +78,9 @@ void RimCrossSectionCollection::updateCellResultColor(size_t timeStepIndex, RimE
//--------------------------------------------------------------------------------------------------
void RimCrossSectionCollection::appendPartsToModel(cvf::ModelBasicList* model, cvf::Transform* scaleTransform)
{
for (size_t csIdx = 0; csIdx < crossSections.size(); ++csIdx)
for (size_t csIdx = 0; csIdx < m_crossSections.size(); ++csIdx)
{
RimCrossSection* cs = crossSections[csIdx];
RimCrossSection* cs = m_crossSections[csIdx];
if (cs->isActive)
{
cs->crossSectionPartMgr()->appendNativeCrossSectionFacesToModel(model, scaleTransform);
@ -86,3 +88,21 @@ void RimCrossSectionCollection::appendPartsToModel(cvf::ModelBasicList* model, c
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCrossSectionCollection::appendCrossSection(RimCrossSection* crossSection)
{
m_crossSections.push_back(crossSection);
updateConnectedEditors();
RiuMainWindow::instance()->setCurrentObjectInTreeView(crossSection);
RimView* rimView = NULL;
firstAnchestorOrThisOfType(rimView);
if (rimView)
{
rimView->scheduleCreateDisplayModelAndRedraw();
}
}

View File

@ -44,15 +44,21 @@ public:
RimCrossSectionCollection();
caf::PdmField<bool> isActive;
caf::PdmChildArrayField<RimCrossSection*> crossSections;
void appendCrossSection(RimCrossSection* crossSection);
// Visualization interface
void applySingleColorEffect();
void updateCellResultColor(size_t timeStepIndex, RimEclipseCellColors* cellResultColors);
void appendPartsToModel(cvf::ModelBasicList* model, cvf::Transform* scaleTransform);
protected:
//virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
//virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName);
virtual caf::PdmFieldHandle* objectToggleField();
private:
caf::PdmChildArrayField<RimCrossSection*> m_crossSections;
};