mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Improved paste of pdm objects
p4#: 20980
This commit is contained in:
parent
45ce4097e1
commit
22aee27333
@ -233,7 +233,7 @@ RigMainGrid* RimProject::registerCaseInGridCollection(RigEclipseCase* rigEclipse
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimProject::insertCaseInCaseGroup(RimReservoir* rimReservoir, RimIdenticalGridCaseGroup* caseGroup)
|
void RimProject::insertCaseInCaseGroup(RimIdenticalGridCaseGroup* caseGroup, RimReservoir* rimReservoir)
|
||||||
{
|
{
|
||||||
CVF_ASSERT(rimReservoir);
|
CVF_ASSERT(rimReservoir);
|
||||||
|
|
||||||
@ -243,45 +243,3 @@ void RimProject::insertCaseInCaseGroup(RimReservoir* rimReservoir, RimIdenticalG
|
|||||||
caseGroup->addCase(rimReservoir);
|
caseGroup->addCase(rimReservoir);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimProject::copyFromCaseList(RimIdenticalGridCaseGroup* caseGroup, const caf::PdmObjectGroup& caseList)
|
|
||||||
{
|
|
||||||
std::vector<caf::PdmPointer<RimReservoir> > typedObjects;
|
|
||||||
caseList.createCopyByType(&typedObjects);
|
|
||||||
|
|
||||||
if (typedObjects.size() == 0) return;
|
|
||||||
|
|
||||||
RigEclipseCase* mainEclipseCase = NULL;
|
|
||||||
if (caseGroup->caseCollection()->reservoirs().size() > 0)
|
|
||||||
{
|
|
||||||
RimReservoir* mainReservoir = caseGroup->caseCollection()->reservoirs()[0];;
|
|
||||||
mainEclipseCase = mainReservoir->reservoirData();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (size_t i = 0; i < typedObjects.size(); i++)
|
|
||||||
{
|
|
||||||
RimReservoir* rimReservoir = typedObjects[i];
|
|
||||||
caf::PdmObjectGroup::initAfterReadTraversal(rimReservoir);
|
|
||||||
|
|
||||||
RimResultReservoir* rimResultReservoir = dynamic_cast<RimResultReservoir*>(rimReservoir);
|
|
||||||
if (rimResultReservoir)
|
|
||||||
{
|
|
||||||
if (caseGroup->mainGrid() == NULL)
|
|
||||||
{
|
|
||||||
rimResultReservoir->openEclipseGridFile();
|
|
||||||
mainEclipseCase = rimResultReservoir->reservoirData();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!rimResultReservoir->openAndReadActiveCellData(mainEclipseCase))
|
|
||||||
{
|
|
||||||
CVF_ASSERT(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
insertCaseInCaseGroup(rimResultReservoir, caseGroup);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -48,8 +48,7 @@ public:
|
|||||||
|
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
void copyFromCaseList(RimIdenticalGridCaseGroup* caseGroup, const caf::PdmObjectGroup& caseList);
|
void insertCaseInCaseGroup(RimIdenticalGridCaseGroup* caseGroup, RimReservoir* rimReservoir);
|
||||||
void insertCaseInCaseGroup(RimReservoir* rimReservoir, RimIdenticalGridCaseGroup* caseGroup);
|
|
||||||
|
|
||||||
void moveEclipseCaseIntoCaseGroup(RimReservoir* rimReservoir);
|
void moveEclipseCaseIntoCaseGroup(RimReservoir* rimReservoir);
|
||||||
void removeEclipseCaseFromAllGroups(RimReservoir* rimReservoir);
|
void removeEclipseCaseFromAllGroups(RimReservoir* rimReservoir);
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include "cafPdmField.h"
|
#include "cafPdmField.h"
|
||||||
#include "RimInputReservoir.h"
|
#include "RimInputReservoir.h"
|
||||||
#include "RimStatisticalCalculation.h"
|
#include "RimStatisticalCalculation.h"
|
||||||
|
#include "RimResultReservoir.h"
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
@ -534,7 +535,7 @@ RimIdenticalGridCaseGroup* RimUiTreeModelPdm::addCaseGroup(const QModelIndex& it
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimUiTreeModelPdm::addCases(const QModelIndex& itemIndex, caf::PdmObjectGroup& cases)
|
void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, caf::PdmObjectGroup& pdmObjects)
|
||||||
{
|
{
|
||||||
RimProject* proj = RIApplication::instance()->project();
|
RimProject* proj = RIApplication::instance()->project();
|
||||||
CVF_ASSERT(proj);
|
CVF_ASSERT(proj);
|
||||||
@ -568,13 +569,49 @@ void RimUiTreeModelPdm::addCases(const QModelIndex& itemIndex, caf::PdmObjectGro
|
|||||||
CVF_ASSERT(caseCollection);
|
CVF_ASSERT(caseCollection);
|
||||||
CVF_ASSERT(gridCaseGroup);
|
CVF_ASSERT(gridCaseGroup);
|
||||||
|
|
||||||
//itemCount = caseCollection->reservoirs().size();
|
|
||||||
|
|
||||||
if (gridCaseGroup)
|
if (gridCaseGroup)
|
||||||
{
|
{
|
||||||
proj->copyFromCaseList(gridCaseGroup, cases);
|
std::vector<caf::PdmPointer<RimResultReservoir> > typedObjects;
|
||||||
|
pdmObjects.createCopyByType(&typedObjects);
|
||||||
rebuildUiSubTree(caseCollection);
|
|
||||||
|
RigEclipseCase* mainEclipseCase = NULL;
|
||||||
|
if (gridCaseGroup->caseCollection()->reservoirs().size() > 0)
|
||||||
|
{
|
||||||
|
RimReservoir* mainReservoir = gridCaseGroup->caseCollection()->reservoirs()[0];;
|
||||||
|
mainEclipseCase = mainReservoir->reservoirData();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < typedObjects.size(); i++)
|
||||||
|
{
|
||||||
|
RimResultReservoir* rimResultReservoir = typedObjects[i];
|
||||||
|
|
||||||
|
if (gridCaseGroup->mainGrid() == NULL)
|
||||||
|
{
|
||||||
|
rimResultReservoir->openEclipseGridFile();
|
||||||
|
mainEclipseCase = rimResultReservoir->reservoirData();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!rimResultReservoir->openAndReadActiveCellData(mainEclipseCase))
|
||||||
|
{
|
||||||
|
CVF_ASSERT(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
proj->insertCaseInCaseGroup(gridCaseGroup, rimResultReservoir);
|
||||||
|
|
||||||
|
caf::PdmObjectGroup::initAfterReadTraversal(rimResultReservoir);
|
||||||
|
|
||||||
|
{
|
||||||
|
QModelIndex rootIndex = getModelIndexFromPdmObject(caseCollection);
|
||||||
|
caf::PdmUiTreeItem* caseCollectionUiItem = getTreeItemFromIndex(rootIndex);
|
||||||
|
|
||||||
|
int position = rowCount(rootIndex);
|
||||||
|
beginInsertRows(rootIndex, position, position);
|
||||||
|
caf::PdmUiTreeItem* childItem = caf::UiTreeItemBuilderPdm::buildViewItems(caseCollectionUiItem, -1, rimResultReservoir);
|
||||||
|
endInsertRows();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ public:
|
|||||||
RimCellRangeFilter* addRangeFilter(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
RimCellRangeFilter* addRangeFilter(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||||
RimReservoirView* addReservoirView(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
RimReservoirView* addReservoirView(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||||
void addInputProperty(const QModelIndex& itemIndex, const QStringList& fileNames);
|
void addInputProperty(const QModelIndex& itemIndex, const QStringList& fileNames);
|
||||||
void addCases(const QModelIndex& itemIndex, caf::PdmObjectGroup& cases);
|
void addObjects(const QModelIndex& itemIndex, caf::PdmObjectGroup& pdmObjects);
|
||||||
|
|
||||||
RimStatisticalCalculation* addStatisticalCalculation(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
RimStatisticalCalculation* addStatisticalCalculation(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||||
RimIdenticalGridCaseGroup* addCaseGroup(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
RimIdenticalGridCaseGroup* addCaseGroup(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||||
|
@ -171,7 +171,7 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
|
|||||||
{
|
{
|
||||||
QMenu menu;
|
QMenu menu;
|
||||||
menu.addAction(QString("Copy"), this, SLOT(slotCopyPdmObjectToClipboard()));
|
menu.addAction(QString("Copy"), this, SLOT(slotCopyPdmObjectToClipboard()));
|
||||||
menu.addAction(QString("Paste"), this, SLOT(slotPasteEclipseCases()));
|
menu.addAction(QString("Paste"), this, SLOT(slotPastePdmObjects()));
|
||||||
menu.addAction(QString("Close"), this, SLOT(slotCloseCase()));
|
menu.addAction(QString("Close"), this, SLOT(slotCloseCase()));
|
||||||
menu.addAction(QString("New View"), this, SLOT(slotAddView()));
|
menu.addAction(QString("New View"), this, SLOT(slotAddView()));
|
||||||
menu.exec(event->globalPos());
|
menu.exec(event->globalPos());
|
||||||
@ -180,13 +180,13 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
|
|||||||
{
|
{
|
||||||
QMenu menu;
|
QMenu menu;
|
||||||
menu.addAction(QString("New Case Group"), this, SLOT(slotAddCaseGroup()));
|
menu.addAction(QString("New Case Group"), this, SLOT(slotAddCaseGroup()));
|
||||||
menu.addAction(QString("Paste"), this, SLOT(slotPasteEclipseCases()));
|
menu.addAction(QString("Paste"), this, SLOT(slotPastePdmObjects()));
|
||||||
menu.exec(event->globalPos());
|
menu.exec(event->globalPos());
|
||||||
}
|
}
|
||||||
else if (dynamic_cast<RimCaseCollection*>(uiItem->dataObject().p()))
|
else if (dynamic_cast<RimCaseCollection*>(uiItem->dataObject().p()))
|
||||||
{
|
{
|
||||||
QMenu menu;
|
QMenu menu;
|
||||||
menu.addAction(QString("Paste"), this, SLOT(slotPasteEclipseCases()));
|
menu.addAction(QString("Paste"), this, SLOT(slotPastePdmObjects()));
|
||||||
menu.exec(event->globalPos());
|
menu.exec(event->globalPos());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -863,7 +863,7 @@ void RimUiTreeView::slotCopyPdmObjectToClipboard()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimUiTreeView::slotPasteEclipseCases()
|
void RimUiTreeView::slotPastePdmObjects()
|
||||||
{
|
{
|
||||||
if (!currentIndex().isValid()) return;
|
if (!currentIndex().isValid()) return;
|
||||||
|
|
||||||
@ -874,7 +874,7 @@ void RimUiTreeView::slotPasteEclipseCases()
|
|||||||
createPdmObjectsFromClipboard(&objectGroup);
|
createPdmObjectsFromClipboard(&objectGroup);
|
||||||
if (objectGroup.objects().size() == 0) return;
|
if (objectGroup.objects().size() == 0) return;
|
||||||
|
|
||||||
myModel->addCases(currentIndex(), objectGroup);
|
myModel->addObjects(currentIndex(), objectGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -924,7 +924,7 @@ void RimUiTreeView::keyPressEvent(QKeyEvent* keyEvent)
|
|||||||
{
|
{
|
||||||
if (keyEvent->matches(QKeySequence::Paste))
|
if (keyEvent->matches(QKeySequence::Paste))
|
||||||
{
|
{
|
||||||
slotPasteEclipseCases();
|
slotPastePdmObjects();
|
||||||
keyEvent->setAccepted(true);
|
keyEvent->setAccepted(true);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -79,7 +79,7 @@ private slots:
|
|||||||
void slotAddCaseGroup();
|
void slotAddCaseGroup();
|
||||||
|
|
||||||
void slotCopyPdmObjectToClipboard();
|
void slotCopyPdmObjectToClipboard();
|
||||||
void slotPasteEclipseCases();
|
void slotPastePdmObjects();
|
||||||
|
|
||||||
void slotSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected);
|
void slotSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user