Improved handling when deleting all cases and adding new case to case group

p4#: 20990
This commit is contained in:
Magne Sjaastad 2013-03-20 11:35:27 +01:00
parent 22aee27333
commit 9abe7a3b13
5 changed files with 18 additions and 16 deletions

View File

@ -90,6 +90,19 @@ void RimIdenticalGridCaseGroup::addCase(RimReservoir* reservoir)
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimIdenticalGridCaseGroup::removeCase(RimReservoir* reservoir)
{
caseCollection()->reservoirs().removeChildObject(reservoir);
if (caseCollection()->reservoirs().size() == 0)
{
m_mainGrid = NULL;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -45,6 +45,7 @@ public:
caf::PdmField<QString> name;
void addCase(RimReservoir* reservoir);
void removeCase(RimReservoir* reservoir);
caf::PdmField<RimCaseCollection*> caseCollection;
caf::PdmField<RimStatisticalCollection*> statisticalReservoirCollection;

View File

@ -167,27 +167,15 @@ void RimProject::moveEclipseCaseIntoCaseGroup(RimReservoir* rimReservoir)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimProject::removeEclipseCaseFromAllGroups(RimReservoir* reservoir)
void RimProject::removeCaseFromAllGroups(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->caseCollection()->reservoirs().removeChildObject(reservoir);
if (cg->caseCollection()->reservoirs().size() == 0)
{
emptyCaseGroups.push_back(cg);
}
}
for (size_t i = 0; i < emptyCaseGroups.size(); i++)
{
caseGroups().removeChildObject(emptyCaseGroups[i]);
delete emptyCaseGroups[i];
cg->removeCase(reservoir);
}
reservoirs().removeChildObject(reservoir);

View File

@ -51,7 +51,7 @@ public:
void insertCaseInCaseGroup(RimIdenticalGridCaseGroup* caseGroup, RimReservoir* rimReservoir);
void moveEclipseCaseIntoCaseGroup(RimReservoir* rimReservoir);
void removeEclipseCaseFromAllGroups(RimReservoir* rimReservoir);
void removeCaseFromAllGroups(RimReservoir* rimReservoir);
private:
RigMainGrid* registerCaseInGridCollection(RigEclipseCase* rigEclipseCase);

View File

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