mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-20 11:48:35 -06:00
Fixed crash after copy/paste of view and case
This commit is contained in:
parent
b61d582112
commit
01cfed9ab7
@ -610,7 +610,7 @@ RimIdenticalGridCaseGroup* RimUiTreeModelPdm::addCaseGroup(QModelIndex& inserted
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, caf::PdmObjectGroup& pdmObjects)
|
||||
void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, const caf::PdmObjectGroup& pdmObjects)
|
||||
{
|
||||
RimProject* proj = RiaApplication::instance()->project();
|
||||
CVF_ASSERT(proj);
|
||||
@ -638,6 +638,8 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, caf::PdmObjectG
|
||||
mainResultCase->readGridDimensions(mainCaseGridDimensions);
|
||||
}
|
||||
|
||||
std::vector<RimResultCase*> insertedCases;
|
||||
|
||||
// Add cases to case group
|
||||
for (size_t i = 0; i < typedObjects.size(); i++)
|
||||
{
|
||||
@ -650,6 +652,22 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, caf::PdmObjectG
|
||||
continue;
|
||||
}
|
||||
|
||||
insertedCases.push_back(rimResultReservoir);
|
||||
}
|
||||
|
||||
// Initialize the new objects
|
||||
for (size_t i = 0; i < insertedCases.size(); i++)
|
||||
{
|
||||
RimResultCase* rimResultReservoir = insertedCases[i];
|
||||
caf::PdmDocument::initAfterReadTraversal(rimResultReservoir);
|
||||
}
|
||||
|
||||
// Load stuff
|
||||
for (size_t i = 0; i < insertedCases.size(); i++)
|
||||
{
|
||||
RimResultCase* rimResultReservoir = insertedCases[i];
|
||||
|
||||
|
||||
if (!mainResultCase)
|
||||
{
|
||||
rimResultReservoir->openEclipseGridFile();
|
||||
@ -690,9 +708,9 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, caf::PdmObjectG
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < rimResultReservoir->reservoirViews.size(); i++)
|
||||
for (size_t rvIdx = 0; rvIdx < rimResultReservoir->reservoirViews.size(); rvIdx++)
|
||||
{
|
||||
RimReservoirView* riv = rimResultReservoir->reservoirViews()[i];
|
||||
RimReservoirView* riv = rimResultReservoir->reservoirViews()[rvIdx];
|
||||
riv->loadDataAndUpdate();
|
||||
}
|
||||
}
|
||||
@ -717,16 +735,17 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, caf::PdmObjectG
|
||||
RimReservoirView* rimReservoirView = typedObjects[i];
|
||||
QString nameOfCopy = QString("Copy of ") + rimReservoirView->name;
|
||||
rimReservoirView->name = nameOfCopy;
|
||||
|
||||
rimReservoirView->setEclipseCase(rimCase);
|
||||
|
||||
rimCase->reservoirViews().push_back(rimReservoirView);
|
||||
|
||||
// Delete all wells to be able to copy/paste between cases, as the wells differ between cases
|
||||
rimReservoirView->wellCollection()->wells().deleteAllChildObjects();
|
||||
|
||||
caf::PdmDocument::initAfterReadTraversal(rimReservoirView);
|
||||
rimReservoirView->setEclipseCase(rimCase);
|
||||
|
||||
caf::PdmDocument::updateUiIconStateRecursively(rimReservoirView);
|
||||
|
||||
rimReservoirView->loadDataAndUpdate();
|
||||
rimCase->reservoirViews().push_back(rimReservoirView);
|
||||
|
||||
int position = static_cast<int>(rimCase->reservoirViews().size());
|
||||
beginInsertRows(collectionIndex, position, position);
|
||||
|
@ -65,7 +65,7 @@ public:
|
||||
void addToParentAndBuildUiItems(caf::PdmUiTreeItem* parentTreeItem, int position, caf::PdmObject* pdmObject);
|
||||
|
||||
void populateObjectGroupFromModelIndexList(const QModelIndexList& modelIndexList, caf::PdmObjectGroup* objectGroup);
|
||||
void addObjects(const QModelIndex& itemIndex, caf::PdmObjectGroup& pdmObjects);
|
||||
void addObjects(const QModelIndex& itemIndex, const caf::PdmObjectGroup& pdmObjects);
|
||||
void moveObjects(const QModelIndex& itemIndex, caf::PdmObjectGroup& pdmObjects);
|
||||
|
||||
RimStatisticsCase* addStatisticalCalculation(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||
|
@ -127,10 +127,11 @@ class PdmDocument: public PdmObjectGroup
|
||||
void writeFile(QIODevice* device);
|
||||
|
||||
static void updateUiIconStateRecursively(PdmObject * root);
|
||||
static void initAfterReadTraversal(PdmObject * root);
|
||||
|
||||
private:
|
||||
static void setupBeforeSaveTraversal(PdmObject * root);
|
||||
static void initAfterReadTraversal(PdmObject * root);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user