mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Added paste on gridcollection, case collection and cases
Moved creation of objects into rimUiTreeModelPdm p4#: 20968
This commit is contained in:
parent
4368a644bf
commit
27dee4d4e2
@ -22,6 +22,7 @@
|
||||
#include "RimCaseCollection.h"
|
||||
|
||||
#include "RimReservoirView.h"
|
||||
#include "RimIdenticalGridCaseGroup.h"
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimCaseCollection, "RimCaseCollection");
|
||||
|
||||
@ -42,3 +43,19 @@ RimCaseCollection::~RimCaseCollection()
|
||||
{
|
||||
reservoirs.deleteAllChildObjects();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimIdenticalGridCaseGroup* RimCaseCollection::parentCaseGroup()
|
||||
{
|
||||
std::vector<RimIdenticalGridCaseGroup*> parentObjects;
|
||||
this->parentObjectsOfType(parentObjects);
|
||||
|
||||
if (parentObjects.size() > 0)
|
||||
{
|
||||
return parentObjects[0];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -41,6 +41,8 @@ public:
|
||||
|
||||
caf::PdmPointersField<RimReservoir*> reservoirs;
|
||||
|
||||
RimIdenticalGridCaseGroup* parentCaseGroup();
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
@ -63,6 +63,8 @@ public:
|
||||
void removeResult(const QString& resultName);
|
||||
|
||||
virtual QString locationOnDisc() const { return QString(); }
|
||||
|
||||
RimCaseCollection* parentCaseCollection();
|
||||
|
||||
// Overridden methods from PdmObject
|
||||
public:
|
||||
@ -76,8 +78,6 @@ protected:
|
||||
void computeCachedData();
|
||||
void setReservoirData(RigEclipseCase* eclipseCase);
|
||||
|
||||
private:
|
||||
RimCaseCollection* parentCaseCollection();
|
||||
|
||||
private:
|
||||
cvf::ref<RigEclipseCase> m_rigEclipseCase;
|
||||
|
@ -535,3 +535,50 @@ RimIdenticalGridCaseGroup* RimUiTreeModelPdm::addCaseGroup(const QModelIndex& it
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimUiTreeModelPdm::addCases(const QModelIndex& itemIndex, caf::PdmObjectGroup& cases)
|
||||
{
|
||||
RimProject* proj = RIApplication::instance()->project();
|
||||
CVF_ASSERT(proj);
|
||||
|
||||
caf::PdmUiTreeItem* currentItem = getTreeItemFromIndex(itemIndex);
|
||||
|
||||
RimIdenticalGridCaseGroup* gridCaseGroup = NULL;
|
||||
RimCaseCollection* caseCollection = NULL;
|
||||
|
||||
if (dynamic_cast<RimIdenticalGridCaseGroup*>(currentItem->dataObject().p()))
|
||||
{
|
||||
gridCaseGroup = dynamic_cast<RimIdenticalGridCaseGroup*>(currentItem->dataObject().p());
|
||||
caseCollection = gridCaseGroup->caseCollection();
|
||||
}
|
||||
else if (dynamic_cast<RimCaseCollection*>(currentItem->dataObject().p()))
|
||||
{
|
||||
caseCollection = dynamic_cast<RimCaseCollection*>(currentItem->dataObject().p());
|
||||
gridCaseGroup = caseCollection->parentCaseGroup();
|
||||
}
|
||||
else if (dynamic_cast<RimReservoir*>(currentItem->dataObject().p()))
|
||||
{
|
||||
RimReservoir* rimReservoir = dynamic_cast<RimReservoir*>(currentItem->dataObject().p());
|
||||
caseCollection = rimReservoir->parentCaseCollection();
|
||||
gridCaseGroup = caseCollection->parentCaseGroup();
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CVF_ASSERT(caseCollection);
|
||||
CVF_ASSERT(gridCaseGroup);
|
||||
|
||||
//itemCount = caseCollection->reservoirs().size();
|
||||
|
||||
if (gridCaseGroup)
|
||||
{
|
||||
proj->copyFromCaseList(gridCaseGroup, cases);
|
||||
|
||||
rebuildUiSubTree(caseCollection);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,6 +107,7 @@ public:
|
||||
RimCellRangeFilter* addRangeFilter(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||
RimReservoirView* addReservoirView(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||
void addInputProperty(const QModelIndex& itemIndex, const QStringList& fileNames);
|
||||
void addCases(const QModelIndex& itemIndex, caf::PdmObjectGroup& cases);
|
||||
|
||||
RimStatisticalCalculation* addStatisticalCalculation(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||
RimIdenticalGridCaseGroup* addCaseGroup(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||
|
@ -40,8 +40,6 @@ RimUiTreeView::RimUiTreeView(QWidget *parent /*= 0*/)
|
||||
: QTreeView(parent)
|
||||
{
|
||||
setHeaderHidden(true);
|
||||
|
||||
m_pdmObjectsFromClipboard = new caf::PdmObjectGroup;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -49,8 +47,6 @@ RimUiTreeView::RimUiTreeView(QWidget *parent /*= 0*/)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimUiTreeView::~RimUiTreeView()
|
||||
{
|
||||
delete m_pdmObjectsFromClipboard;
|
||||
m_pdmObjectsFromClipboard = NULL;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -173,6 +169,7 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
|
||||
{
|
||||
QMenu menu;
|
||||
menu.addAction(QString("Copy"), this, SLOT(slotCopyPdmObjectToClipboard()));
|
||||
menu.addAction(QString("Paste"), this, SLOT(slotPasteEclipseCases()));
|
||||
menu.addAction(QString("Close"), this, SLOT(slotCloseCase()));
|
||||
menu.addAction(QString("New View"), this, SLOT(slotAddView()));
|
||||
menu.exec(event->globalPos());
|
||||
@ -184,6 +181,12 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
|
||||
menu.addAction(QString("Paste"), this, SLOT(slotPasteEclipseCases()));
|
||||
menu.exec(event->globalPos());
|
||||
}
|
||||
else if (dynamic_cast<RimCaseCollection*>(uiItem->dataObject().p()))
|
||||
{
|
||||
QMenu menu;
|
||||
menu.addAction(QString("Paste"), this, SLOT(slotPasteEclipseCases()));
|
||||
menu.exec(event->globalPos());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -826,6 +829,8 @@ void RimUiTreeView::slotAddCaseGroup()
|
||||
QModelIndex insertedIndex;
|
||||
myModel->addCaseGroup(currentIndex(), insertedIndex);
|
||||
setCurrentIndex(insertedIndex);
|
||||
|
||||
setExpanded(insertedIndex, true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -860,29 +865,21 @@ void RimUiTreeView::slotPasteEclipseCases()
|
||||
{
|
||||
if (!currentIndex().isValid()) return;
|
||||
|
||||
createPdmObjectsFromClipboard();
|
||||
if (m_pdmObjectsFromClipboard->objects().size() == 0) return;
|
||||
|
||||
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
|
||||
caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(currentIndex());
|
||||
if (!myModel) return;
|
||||
|
||||
RimIdenticalGridCaseGroup* destinationGroup = dynamic_cast<RimIdenticalGridCaseGroup*>(uiItem->dataObject().p());
|
||||
if (!destinationGroup) return;
|
||||
caf::PdmObjectGroup objectGroup;
|
||||
createPdmObjectsFromClipboard(&objectGroup);
|
||||
if (objectGroup.objects().size() == 0) return;
|
||||
|
||||
|
||||
RimProject* proj = RIApplication::instance()->project();
|
||||
proj->copyFromCaseList(destinationGroup, *m_pdmObjectsFromClipboard);
|
||||
|
||||
myModel->rebuildUiSubTree(destinationGroup);
|
||||
myModel->addCases(currentIndex(), objectGroup);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimUiTreeView::createPdmObjectsFromClipboard()
|
||||
void RimUiTreeView::createPdmObjectsFromClipboard(caf::PdmObjectGroup* objectGroup)
|
||||
{
|
||||
m_pdmObjectsFromClipboard->objects().clear();
|
||||
|
||||
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
|
||||
if (!myModel) return;
|
||||
|
||||
@ -896,7 +893,7 @@ void RimUiTreeView::createPdmObjectsFromClipboard()
|
||||
for (int i = 0; i < indexList.size(); i++)
|
||||
{
|
||||
caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(indexList.at(i));
|
||||
m_pdmObjectsFromClipboard->addObject(uiItem->dataObject().p());
|
||||
objectGroup->addObject(uiItem->dataObject().p());
|
||||
}
|
||||
}
|
||||
|
||||
@ -919,7 +916,9 @@ void RimUiTreeView::keyPressEvent(QKeyEvent* keyEvent)
|
||||
}
|
||||
}
|
||||
|
||||
if (dynamic_cast<RimIdenticalGridCaseGroup*>(uiItem->dataObject().p()))
|
||||
if (dynamic_cast<RimIdenticalGridCaseGroup*>(uiItem->dataObject().p())
|
||||
|| dynamic_cast<RimCaseCollection*>(uiItem->dataObject().p())
|
||||
|| dynamic_cast<RimReservoir*>(uiItem->dataObject().p()))
|
||||
{
|
||||
if (keyEvent->matches(QKeySequence::Paste))
|
||||
{
|
||||
|
@ -85,10 +85,9 @@ signals:
|
||||
|
||||
private:
|
||||
|
||||
void createPdmObjectsFromClipboard();
|
||||
void createPdmObjectsFromClipboard(caf::PdmObjectGroup* objectGroup);
|
||||
|
||||
virtual void keyPressEvent(QKeyEvent* keyEvent);
|
||||
caf::PdmObjectGroup* m_pdmObjectsFromClipboard;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user