#329 "Copy/Paste View" added for Geomechanics

This commit is contained in:
Jacob Støren 2015-06-29 10:43:10 +02:00
parent 55c1d5de71
commit 985afce261
2 changed files with 46 additions and 12 deletions

View File

@ -738,26 +738,23 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, const caf::PdmO
} }
else if (caseFromItemIndex(itemIndex)) else if (caseFromItemIndex(itemIndex))
{ {
std::vector<caf::PdmPointer<RimEclipseView> > typedObjects; std::vector<caf::PdmPointer<RimEclipseView> > eclipseViews;
pdmObjects.createCopyByType(&typedObjects); pdmObjects.createCopyByType(&eclipseViews);
if (typedObjects.size() == 0) if (eclipseViews.size() != 0)
{ {
return;
}
RimEclipseCase* rimCase = caseFromItemIndex(itemIndex); RimEclipseCase* rimCase = caseFromItemIndex(itemIndex);
QModelIndex collectionIndex = getModelIndexFromPdmObject(rimCase); QModelIndex collectionIndex = getModelIndexFromPdmObject(rimCase);
caf::PdmUiTreeItem* collectionItem = getTreeItemFromIndex(collectionIndex); caf::PdmUiTreeItem* collectionItem = getTreeItemFromIndex(collectionIndex);
// 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 < eclipseViews.size(); i++)
{ {
RimEclipseView* rimReservoirView = typedObjects[i]; RimEclipseView* rimReservoirView = eclipseViews[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); rimCase->reservoirViews().push_back(rimReservoirView);
// 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();
@ -766,7 +763,7 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, const caf::PdmO
caf::PdmDocument::updateUiIconStateRecursively(rimReservoirView); caf::PdmDocument::updateUiIconStateRecursively(rimReservoirView);
rimReservoirView->loadDataAndUpdate(); rimReservoirView->loadDataAndUpdate();
int position = static_cast<int>(rimCase->reservoirViews().size()); int position = static_cast<int>(rimCase->reservoirViews().size());
beginInsertRows(collectionIndex, position, position); beginInsertRows(collectionIndex, position, position);
@ -775,6 +772,42 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, const caf::PdmO
endInsertRows(); endInsertRows();
} }
}
}
caf::PdmObject* selectedObject = getTreeItemFromIndex(itemIndex)->dataObject().p();
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(selectedObject);
if (!geomCase && selectedObject)
{
RimGeoMechView* geomView = dynamic_cast<RimGeoMechView*>(selectedObject);
if (geomView) geomCase = geomView->geoMechCase();
}
if (geomCase)
{
std::vector<caf::PdmPointer<RimGeoMechView> > geomViews;
pdmObjects.createCopyByType(&geomViews);
if (geomViews.size() != 0)
{
// Add cases to case group
for (size_t i = 0; i < geomViews.size(); i++)
{
RimGeoMechView* rimReservoirView = geomViews[i];
QString nameOfCopy = QString("Copy of ") + rimReservoirView->name;
rimReservoirView->name = nameOfCopy;
geomCase->geoMechViews().push_back(rimReservoirView);
caf::PdmDocument::initAfterReadTraversal(rimReservoirView);
rimReservoirView->setGeoMechCase(geomCase);
caf::PdmDocument::updateUiIconStateRecursively(rimReservoirView);
rimReservoirView->loadDataAndUpdate();
this->updateUiSubTree(geomCase);
}
}
} }
} }

View File

@ -122,8 +122,8 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
if (dynamic_cast<RimGeoMechView*>(uiItem->dataObject().p())) if (dynamic_cast<RimGeoMechView*>(uiItem->dataObject().p()))
{ {
menu.addAction(QString("New View"), this, SLOT(slotAddView())); menu.addAction(QString("New View"), this, SLOT(slotAddView()));
//menu.addAction(QString("Copy View"), this, SLOT(slotCopyPdmObjectToClipboard())); menu.addAction(QString("Copy View"), this, SLOT(slotCopyPdmObjectToClipboard()));
//menu.addAction(m_pasteAction); menu.addAction(m_pasteAction);
menu.addAction(QString("Delete"), this, SLOT(slotDeleteView())); menu.addAction(QString("Delete"), this, SLOT(slotDeleteView()));
} }
else if (dynamic_cast<RimEclipseView*>(uiItem->dataObject().p())) else if (dynamic_cast<RimEclipseView*>(uiItem->dataObject().p()))
@ -218,6 +218,7 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
{ {
menu.addAction(QString("New View"), this, SLOT(slotAddView())); menu.addAction(QString("New View"), this, SLOT(slotAddView()));
menu.addAction(QString("Close"), this, SLOT(slotCloseGeomechCase())); menu.addAction(QString("Close"), this, SLOT(slotCloseGeomechCase()));
menu.addAction(m_pasteAction);
} }
else if (dynamic_cast<RimEclipseCase*>(uiItem->dataObject().p())) else if (dynamic_cast<RimEclipseCase*>(uiItem->dataObject().p()))
{ {