Imroved lifespan handling for reservoirs

p4#: 20526
This commit is contained in:
Magne Sjaastad 2013-02-15 10:01:41 +01:00
parent 73c9459276
commit e82aef5850
4 changed files with 39 additions and 7 deletions

View File

@ -132,7 +132,7 @@ QString RimProject::projectFileVersionString() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimProject::registerEclipseCase(RimReservoir* rimReservoir)
void RimProject::moveEclipseCaseIntoCaseGroup(RimReservoir* rimReservoir)
{
CVF_ASSERT(rimReservoir);
@ -184,4 +184,36 @@ void RimProject::registerEclipseCase(RimReservoir* rimReservoir)
caseGroups().push_back(group);
}
// Remove reservoir from main container
reservoirs().removeChildObject(rimReservoir);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimProject::removeEclipseCaseFromAllGroups(RimReservoir* reservoir)
{
m_gridCollection->removeCase(reservoir->reservoirData());
std::vector<RimIdenticalGridCaseGroup*> emptyCaseGroups;
for (size_t i = 0; i < caseGroups.size(); i++)
{
RimIdenticalGridCaseGroup* cg = caseGroups()[i];
cg->reservoirs().removeChildObject(reservoir);
if (cg->reservoirs().size() == 0)
{
emptyCaseGroups.push_back(cg);
}
}
for (size_t i = 0; i < emptyCaseGroups.size(); i++)
{
caseGroups().removeChildObject(emptyCaseGroups[i]);
delete emptyCaseGroups[i];
}
reservoirs().removeChildObject(reservoir);
}

View File

@ -48,7 +48,8 @@ public:
void close();
void registerEclipseCase(RimReservoir* rimReservoir);
void moveEclipseCaseIntoCaseGroup(RimReservoir* rimReservoir);
void removeEclipseCaseFromAllGroups(RimReservoir* rimReservoir);
protected:
// Overridden methods
@ -56,7 +57,7 @@ protected:
virtual void setupBeforeSave();
private:
caf::PdmField<QString> m_projectFileVersionString;
caf::PdmField<QString> m_projectFileVersionString;
cvf::ref<RigGridCollection> m_gridCollection;
cvf::ref<RigGridCollection> m_gridCollection;
};

View File

@ -247,8 +247,7 @@ void RimReservoir::registerEclipseCase()
CVF_ASSERT(proj);
if (proj)
{
proj->registerEclipseCase(this);
proj->moveEclipseCaseIntoCaseGroup(this);
}
}

View File

@ -219,7 +219,7 @@ void RimUiTreeModelPdm::deleteReservoir(const QModelIndex& itemIndex)
removeRow(itemIndex.row(), itemIndex.parent());
RimProject* proj = RIApplication::instance()->project();
proj->reservoirs().removeChildObject(reservoir);
proj->removeEclipseCaseFromAllGroups(reservoir);
delete reservoir;
}