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