mirror of
				https://github.com/OPM/ResInsight.git
				synced 2025-02-25 18:55:39 -06:00 
			
		
		
		
	#329 "Copy/Paste View" added for Geomechanics
This commit is contained in:
		@@ -738,26 +738,23 @@ 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);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
            // Delete all wells to be able to copy/paste between cases, as the wells differ between cases
 | 
			
		||||
            rimReservoirView->wellCollection()->wells().deleteAllChildObjects();
 | 
			
		||||
 | 
			
		||||
@@ -766,7 +763,7 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, const caf::PdmO
 | 
			
		||||
 | 
			
		||||
            caf::PdmDocument::updateUiIconStateRecursively(rimReservoirView);
 | 
			
		||||
 | 
			
		||||
            rimReservoirView->loadDataAndUpdate(); 
 | 
			
		||||
            rimReservoirView->loadDataAndUpdate();
 | 
			
		||||
 | 
			
		||||
            int position = static_cast<int>(rimCase->reservoirViews().size());
 | 
			
		||||
            beginInsertRows(collectionIndex, position, position);
 | 
			
		||||
@@ -775,6 +772,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);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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()))
 | 
			
		||||
            {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user