#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,22 +738,19 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, const caf::PdmO
}
else if (caseFromItemIndex(itemIndex))
{
std::vector<caf::PdmPointer<RimEclipseView> > typedObjects;
pdmObjects.createCopyByType(&typedObjects);
std::vector<caf::PdmPointer<RimEclipseView> > eclipseViews;
pdmObjects.createCopyByType(&eclipseViews);
if (typedObjects.size() == 0)
if (eclipseViews.size() != 0)
{
return;
}
RimEclipseCase* rimCase = caseFromItemIndex(itemIndex);
QModelIndex collectionIndex = getModelIndexFromPdmObject(rimCase);
caf::PdmUiTreeItem* collectionItem = getTreeItemFromIndex(collectionIndex);
// 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;
rimReservoirView->name = nameOfCopy;
rimCase->reservoirViews().push_back(rimReservoirView);
@ -776,6 +773,42 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, const caf::PdmO
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()))
{
menu.addAction(QString("New View"), this, SLOT(slotAddView()));
//menu.addAction(QString("Copy View"), this, SLOT(slotCopyPdmObjectToClipboard()));
//menu.addAction(m_pasteAction);
menu.addAction(QString("Copy View"), this, SLOT(slotCopyPdmObjectToClipboard()));
menu.addAction(m_pasteAction);
menu.addAction(QString("Delete"), this, SLOT(slotDeleteView()));
}
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("Close"), this, SLOT(slotCloseGeomechCase()));
menu.addAction(m_pasteAction);
}
else if (dynamic_cast<RimEclipseCase*>(uiItem->dataObject().p()))
{