#2369 Elm props: Only delete results from the closed files

This commit is contained in:
Rebecca Cox
2018-01-15 16:09:52 +01:00
parent b092565a61
commit 58123f4a49
4 changed files with 34 additions and 7 deletions

View File

@@ -135,7 +135,7 @@ void RigFemPartResultsCollection::addElementPropertyFiles(const std::vector<QStr
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RigFemPartResultsCollection::removeElementPropertyFiles(const std::vector<QString>& filenames) std::vector<RigFemResultAddress> RigFemPartResultsCollection::removeElementPropertyFiles(const std::vector<QString>& filenames)
{ {
std::vector<RigFemResultAddress> addressesToRemove; std::vector<RigFemResultAddress> addressesToRemove;
@@ -155,6 +155,8 @@ void RigFemPartResultsCollection::removeElementPropertyFiles(const std::vector<Q
{ {
this->deleteResult(address); this->deleteResult(address);
} }
return addressesToRemove;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -53,7 +53,7 @@ public:
RigFormationNames* activeFormationNames(); RigFormationNames* activeFormationNames();
void addElementPropertyFiles(const std::vector<QString>& filenames); void addElementPropertyFiles(const std::vector<QString>& filenames);
void removeElementPropertyFiles(const std::vector<QString>& filenames); std::vector<RigFemResultAddress> removeElementPropertyFiles(const std::vector<QString>& filenames);
void setCalculationParameters(double cohesion, double frictionAngleRad); void setCalculationParameters(double cohesion, double frictionAngleRad);
double parameterCohesion() const { return m_cohesion;} double parameterCohesion() const { return m_cohesion;}

View File

@@ -98,6 +98,19 @@ public:
} }
return (componentName < other.componentName); return (componentName < other.componentName);
}
bool operator== (const RigFemResultAddress& other) const
{
if ( resultPosType != other.resultPosType
|| fieldName != other.fieldName
|| componentName != other.componentName
|| timeLapseBaseFrameIdx != other.timeLapseBaseFrameIdx)
{
return false;
}
return true;
} }
}; };

View File

@@ -557,19 +557,31 @@ void RimGeoMechCase::closeSelectedElementPropertyFiles()
m_elementPropertyFileNameIndexUiSelection.v().clear(); m_elementPropertyFileNameIndexUiSelection.v().clear();
std::vector<RigFemResultAddress> addressesToDelete;
if (m_geoMechCaseData.notNull()) if (m_geoMechCaseData.notNull())
{ {
geoMechData()->femPartResults()->removeElementPropertyFiles(filesToClose); addressesToDelete = geoMechData()->femPartResults()->removeElementPropertyFiles(filesToClose);
} }
for (RimGeoMechView* view : geoMechViews()) for (RimGeoMechView* view : geoMechViews())
{ {
view->cellResult()->setResultAddress(RigFemResultAddress()); for (RigFemResultAddress address : addressesToDelete)
for (RimGeoMechPropertyFilter* propertyFilter : view->geoMechPropertyFilterCollection()->propertyFilters())
{ {
propertyFilter->resultDefinition().p()->setResultAddress(RigFemResultAddress()); if (address == view->cellResultResultDefinition()->resultAddress())
{
view->cellResult()->setResultAddress(RigFemResultAddress());
}
for (RimGeoMechPropertyFilter* propertyFilter : view->geoMechPropertyFilterCollection()->propertyFilters())
{
if (address == propertyFilter->resultDefinition->resultAddress())
{
propertyFilter->resultDefinition->setResultAddress(RigFemResultAddress());
}
}
} }
view->loadDataAndUpdate(); view->loadDataAndUpdate();
} }
} }