mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
parent
6a9555a196
commit
10388ea3dc
@ -149,30 +149,6 @@ RimReservoirView* RimEclipseCase::createAndAddReservoirView()
|
|||||||
return riv;
|
return riv;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
/// TODO: Move this functionality to PdmPointersField
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimEclipseCase::removeReservoirView(RimReservoirView* reservoirView)
|
|
||||||
{
|
|
||||||
std::vector<size_t> indices;
|
|
||||||
|
|
||||||
size_t i;
|
|
||||||
for (i = 0; i < reservoirViews().size(); i++)
|
|
||||||
{
|
|
||||||
if (reservoirViews()[i] == reservoirView)
|
|
||||||
{
|
|
||||||
indices.push_back(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NB! Make sure the ordering goes from large to low index
|
|
||||||
while (!indices.empty())
|
|
||||||
{
|
|
||||||
reservoirViews().erase(indices.back());
|
|
||||||
indices.pop_back();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -68,7 +68,6 @@ public:
|
|||||||
RimReservoirCellResultsStorage* results(RifReaderInterface::PorosityModelResultType porosityModel);
|
RimReservoirCellResultsStorage* results(RifReaderInterface::PorosityModelResultType porosityModel);
|
||||||
|
|
||||||
RimReservoirView* createAndAddReservoirView();
|
RimReservoirView* createAndAddReservoirView();
|
||||||
void removeReservoirView(RimReservoirView* reservoirView);
|
|
||||||
|
|
||||||
void removeResult(const QString& resultName);
|
void removeResult(const QString& resultName);
|
||||||
|
|
||||||
|
@ -41,11 +41,13 @@
|
|||||||
#include "RimUiTreeView.h"
|
#include "RimUiTreeView.h"
|
||||||
#include "RimWellCollection.h"
|
#include "RimWellCollection.h"
|
||||||
#include "RimWellPathCollection.h"
|
#include "RimWellPathCollection.h"
|
||||||
|
#include "RimGeoMechView.h"
|
||||||
|
|
||||||
#include "cvfAssert.h"
|
#include "cvfAssert.h"
|
||||||
|
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QFileSystemWatcher>
|
#include <QFileSystemWatcher>
|
||||||
|
#include "RimGeoMechCase.h"
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -60,60 +62,6 @@ RimUiTreeModelPdm::RimUiTreeModelPdm(QObject* parent)
|
|||||||
connect(m_scriptChangeDetector, SIGNAL(fileChanged(QString)), this, SLOT(slotRefreshScriptTree(QString)));
|
connect(m_scriptChangeDetector, SIGNAL(fileChanged(QString)), this, SLOT(slotRefreshScriptTree(QString)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
/// TO BE DELETED
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
bool RimUiTreeModelPdm::insertRows_special(int position, int rows, const QModelIndex &parent /*= QModelIndex()*/)
|
|
||||||
{
|
|
||||||
caf::PdmUiTreeItem* parentItem = getTreeItemFromIndex(parent);
|
|
||||||
|
|
||||||
bool canCreateChildren = false;
|
|
||||||
QModelIndex parentIndex = parent;
|
|
||||||
|
|
||||||
if (dynamic_cast<RimCellRangeFilterCollection*>(parentItem->dataObject().p()) ||
|
|
||||||
dynamic_cast<RimCellPropertyFilterCollection*>(parentItem->dataObject().p()))
|
|
||||||
{
|
|
||||||
canCreateChildren = true;
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<RimCellFilter*>(parentItem->dataObject().p()))
|
|
||||||
{
|
|
||||||
parentItem = parentItem->parent();
|
|
||||||
parentIndex = parent.parent();
|
|
||||||
|
|
||||||
canCreateChildren = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (canCreateChildren)
|
|
||||||
{
|
|
||||||
beginInsertRows(parent, position, position + rows - 1);
|
|
||||||
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < rows; i++)
|
|
||||||
{
|
|
||||||
if (dynamic_cast<RimCellRangeFilterCollection*>(parentItem->dataObject().p()))
|
|
||||||
{
|
|
||||||
RimCellRangeFilterCollection* rangeFilterCollection = dynamic_cast<RimCellRangeFilterCollection*>(parentItem->dataObject().p());
|
|
||||||
|
|
||||||
RimCellRangeFilter* rangeFilter = rangeFilterCollection->createAndAppendRangeFilter();
|
|
||||||
|
|
||||||
caf::PdmUiTreeItem* childItem = new caf::PdmUiTreeItem(parentItem, position + i, rangeFilter);
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<RimCellPropertyFilterCollection*>(parentItem->dataObject().p()))
|
|
||||||
{
|
|
||||||
RimCellPropertyFilterCollection* propertyFilterCollection = dynamic_cast<RimCellPropertyFilterCollection*>(parentItem->dataObject().p());
|
|
||||||
|
|
||||||
RimCellPropertyFilter* propertyFilter = propertyFilterCollection->createAndAppendPropertyFilter();
|
|
||||||
|
|
||||||
caf::PdmUiTreeItem* childItem = new caf::PdmUiTreeItem(parentItem, position + i, propertyFilter);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
endInsertRows();
|
|
||||||
}
|
|
||||||
|
|
||||||
return canCreateChildren;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -203,26 +151,26 @@ bool RimUiTreeModelPdm::deleteRangeFilter(const QModelIndex& itemIndex)
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RimUiTreeModelPdm::deleteReservoirView(const QModelIndex& itemIndex)
|
void RimUiTreeModelPdm::deleteReservoirViews(const std::vector<caf::PdmUiItem*>& treeSelection)
|
||||||
{
|
{
|
||||||
CVF_ASSERT(itemIndex.isValid());
|
std::set<RimCase*> ownerCases;
|
||||||
|
|
||||||
caf::PdmUiTreeItem* uiItem = getTreeItemFromIndex(itemIndex);
|
for (size_t sIdx = 0; sIdx < treeSelection.size(); ++sIdx)
|
||||||
CVF_ASSERT(uiItem);
|
{
|
||||||
|
RimView* reservoirView = dynamic_cast<RimView*>(treeSelection[sIdx]);
|
||||||
|
ownerCases.insert(reservoirView->ownerCase());
|
||||||
|
|
||||||
RimReservoirView* reservoirView = dynamic_cast<RimReservoirView*>(uiItem->dataObject().p());
|
reservoirView->removeFromParentFields();
|
||||||
CVF_ASSERT(reservoirView);
|
delete reservoirView;
|
||||||
|
|
||||||
// Remove Ui items pointing at the pdm object to delete
|
}
|
||||||
removeRows_special(itemIndex.row(), 1, itemIndex.parent()); // To be deleted
|
|
||||||
|
|
||||||
reservoirView->eclipseCase()->removeReservoirView(reservoirView);
|
for (std::set<RimCase*>::iterator it = ownerCases.begin(); it != ownerCases.end(); ++it)
|
||||||
delete reservoirView;
|
{
|
||||||
|
updateUiSubTree(*it);
|
||||||
|
}
|
||||||
|
|
||||||
// updateUiSubTree(reservoirView->eclipseCase()); // To be enabled
|
|
||||||
clearClipboard();
|
clearClipboard();
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -378,50 +326,42 @@ RimCellRangeFilter* RimUiTreeModelPdm::addRangeFilter(const QModelIndex& itemInd
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimReservoirView* RimUiTreeModelPdm::addReservoirView(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex)
|
RimView* RimUiTreeModelPdm::addReservoirView(const std::vector<caf::PdmUiItem*>& treeSelection)
|
||||||
{
|
{
|
||||||
caf::PdmUiTreeItem* currentItem = getTreeItemFromIndex(itemIndex);
|
if (!treeSelection.size() || treeSelection[0] == NULL) return NULL;
|
||||||
if (!currentItem) return NULL;
|
|
||||||
|
|
||||||
caf::PdmUiTreeItem* collectionItem = NULL;
|
caf::PdmUiItem* currentItem = treeSelection[0];
|
||||||
|
|
||||||
bool itemIndexIsCollection = false;
|
// Establish type of selected object
|
||||||
QModelIndex collectionIndex;
|
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(currentItem);
|
||||||
int position = 0;
|
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(currentItem);
|
||||||
if (dynamic_cast<RimReservoirView*>(currentItem->dataObject().p()))
|
RimGeoMechView* geoMechView = dynamic_cast<RimGeoMechView*>(currentItem);
|
||||||
|
RimReservoirView* reservoirView = dynamic_cast<RimReservoirView*>(currentItem);
|
||||||
|
|
||||||
|
// Find case to insert into
|
||||||
|
|
||||||
|
if (geoMechView) geomCase = geoMechView->geoMechCase();
|
||||||
|
if (reservoirView) eclipseCase = reservoirView->eclipseCase();
|
||||||
|
|
||||||
|
RimView* insertedView = NULL;
|
||||||
|
|
||||||
|
if (eclipseCase)
|
||||||
{
|
{
|
||||||
collectionItem = currentItem->parent();
|
insertedView = eclipseCase->createAndAddReservoirView();
|
||||||
collectionIndex = itemIndex.parent();
|
|
||||||
position = itemIndex.row();
|
|
||||||
}
|
}
|
||||||
else if (dynamic_cast<RimEclipseCase*>(currentItem->dataObject().p()))
|
else if (geomCase)
|
||||||
{
|
{
|
||||||
collectionItem = currentItem;
|
insertedView = geomCase->createAndAddReservoirView();
|
||||||
collectionIndex = itemIndex;
|
|
||||||
position = collectionItem->childCount();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (collectionItem)
|
// Must be run before buildViewItems, as wells are created in this function
|
||||||
{
|
|
||||||
RimEclipseCase* rimReservoir = dynamic_cast<RimEclipseCase*>(collectionItem->dataObject().p());
|
|
||||||
RimReservoirView* insertedView = rimReservoir->createAndAddReservoirView();
|
|
||||||
|
|
||||||
// Must be run before buildViewItems, as wells are created in this function
|
insertedView->loadDataAndUpdate();
|
||||||
insertedView->loadDataAndUpdate();
|
|
||||||
|
|
||||||
beginInsertRows(collectionIndex, position, position);
|
if (eclipseCase ) this->updateUiSubTree(eclipseCase);
|
||||||
|
if (geomCase ) this->updateUiSubTree(geomCase);
|
||||||
|
|
||||||
// NOTE: -1 as second argument indicates append
|
return insertedView;
|
||||||
caf::PdmUiTreeItem* childItem = caf::UiTreeItemBuilderPdm::buildViewItems(collectionItem, position, insertedView);
|
|
||||||
|
|
||||||
endInsertRows();
|
|
||||||
|
|
||||||
insertedModelIndex = index(position, 0, collectionIndex);
|
|
||||||
|
|
||||||
return insertedView;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,6 +35,8 @@ class RimInputProperty;
|
|||||||
class RimStatisticsCase;
|
class RimStatisticsCase;
|
||||||
class RimIdenticalGridCaseGroup;
|
class RimIdenticalGridCaseGroup;
|
||||||
|
|
||||||
|
class RimView;
|
||||||
|
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
@ -47,21 +49,20 @@ class RimUiTreeModelPdm : public caf::UiTreeModelPdm
|
|||||||
public:
|
public:
|
||||||
RimUiTreeModelPdm(QObject* parent);
|
RimUiTreeModelPdm(QObject* parent);
|
||||||
|
|
||||||
|
|
||||||
// TO BE DELETED, NOT USED
|
|
||||||
virtual bool insertRows_special(int position, int rows, const QModelIndex &parent = QModelIndex());
|
|
||||||
|
|
||||||
// Special edit methods
|
// Special edit methods
|
||||||
bool deleteRangeFilter(const QModelIndex& itemIndex);
|
bool deleteRangeFilter(const QModelIndex& itemIndex);
|
||||||
bool deletePropertyFilter(const QModelIndex& itemIndex);
|
bool deletePropertyFilter(const QModelIndex& itemIndex);
|
||||||
bool deleteReservoirView(const QModelIndex& itemIndex);
|
|
||||||
void deleteInputProperty(const QModelIndex& itemIndex);
|
void deleteInputProperty(const QModelIndex& itemIndex);
|
||||||
void deleteReservoir(RimEclipseCase* reservoir);
|
void deleteReservoir(RimEclipseCase* reservoir);
|
||||||
void deleteAllWellPaths(const QModelIndex& itemIndex);
|
void deleteAllWellPaths(const QModelIndex& itemIndex);
|
||||||
|
|
||||||
RimCellPropertyFilter* addPropertyFilter(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
RimCellPropertyFilter* addPropertyFilter(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||||
RimCellRangeFilter* addRangeFilter(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
RimCellRangeFilter* addRangeFilter(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
||||||
RimReservoirView* addReservoirView(const QModelIndex& itemIndex, QModelIndex& insertedModelIndex);
|
|
||||||
|
RimView* addReservoirView(const std::vector<caf::PdmUiItem*>& treeSelection);
|
||||||
|
void deleteReservoirViews(const std::vector<caf::PdmUiItem*>& treeSelection);
|
||||||
|
|
||||||
void addInputProperty(const QModelIndex& itemIndex, const QStringList& fileNames);
|
void addInputProperty(const QModelIndex& itemIndex, const QStringList& fileNames);
|
||||||
|
|
||||||
void addToParentAndBuildUiItems(caf::PdmUiTreeItem* parentTreeItem, int position, caf::PdmObject* pdmObject);
|
void addToParentAndBuildUiItems(caf::PdmUiTreeItem* parentTreeItem, int position, caf::PdmObject* pdmObject);
|
||||||
|
@ -68,6 +68,8 @@
|
|||||||
#include "RimAnalysisModels.h"
|
#include "RimAnalysisModels.h"
|
||||||
#include "RimInputProperty.h"
|
#include "RimInputProperty.h"
|
||||||
#include "RigSingleWellResultsData.h"
|
#include "RigSingleWellResultsData.h"
|
||||||
|
#include "RimGeoMechView.h"
|
||||||
|
#include "RimGeoMechCase.h"
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -114,8 +116,14 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
|
|||||||
{
|
{
|
||||||
QMenu menu;
|
QMenu menu;
|
||||||
|
|
||||||
// Range filters
|
if (dynamic_cast<RimGeoMechView*>(uiItem->dataObject().p()))
|
||||||
if (dynamic_cast<RimReservoirView*>(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("Delete"), this, SLOT(slotDeleteView()));
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<RimReservoirView*>(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()));
|
||||||
@ -193,6 +201,10 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
|
|||||||
menu.addAction(QString("Compute"), this, SLOT(slotComputeStatistics()));
|
menu.addAction(QString("Compute"), this, SLOT(slotComputeStatistics()));
|
||||||
menu.addAction(QString("Close"), this, SLOT(slotCloseCase()));
|
menu.addAction(QString("Close"), this, SLOT(slotCloseCase()));
|
||||||
}
|
}
|
||||||
|
else if (dynamic_cast<RimGeoMechCase*>(uiItem->dataObject().p()))
|
||||||
|
{
|
||||||
|
menu.addAction(QString("New View"), this, SLOT(slotAddView()));
|
||||||
|
}
|
||||||
else if (dynamic_cast<RimEclipseCase*>(uiItem->dataObject().p()))
|
else if (dynamic_cast<RimEclipseCase*>(uiItem->dataObject().p()))
|
||||||
{
|
{
|
||||||
menu.addAction(QString("Copy"), this, SLOT(slotCopyPdmObjectToClipboard()));
|
menu.addAction(QString("Copy"), this, SLOT(slotCopyPdmObjectToClipboard()));
|
||||||
@ -628,12 +640,12 @@ void RimUiTreeView::slotExecuteScriptForSelectedCases()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimUiTreeView::slotAddView()
|
void RimUiTreeView::slotAddView()
|
||||||
{
|
{
|
||||||
QModelIndex index = currentIndex();
|
|
||||||
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
|
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
|
||||||
caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(currentIndex());
|
std::vector<caf::PdmUiItem*> selection;
|
||||||
|
this->selectedUiItems(selection);
|
||||||
|
|
||||||
QModelIndex insertedIndex;
|
RimView* newView = myModel->addReservoirView(selection);
|
||||||
myModel->addReservoirView(index, insertedIndex);
|
QModelIndex insertedIndex = myModel->getModelIndexFromPdmObject(newView);
|
||||||
|
|
||||||
// Expand parent collection and inserted view item
|
// Expand parent collection and inserted view item
|
||||||
setExpandedUpToRoot(insertedIndex);
|
setExpandedUpToRoot(insertedIndex);
|
||||||
@ -647,13 +659,12 @@ void RimUiTreeView::slotAddView()
|
|||||||
void RimUiTreeView::slotDeleteView()
|
void RimUiTreeView::slotDeleteView()
|
||||||
{
|
{
|
||||||
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
|
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
|
||||||
if (myModel)
|
std::vector<caf::PdmUiItem*> selection;
|
||||||
{
|
this->selectedUiItems(selection);
|
||||||
myModel->deleteReservoirView(currentIndex());
|
myModel->deleteReservoirViews(selection);
|
||||||
|
|
||||||
RiaApplication* app = RiaApplication::instance();
|
RiaApplication* app = RiaApplication::instance();
|
||||||
app->setActiveReservoirView(NULL);
|
app->setActiveReservoirView(NULL);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -1587,3 +1598,21 @@ void RimUiTreeView::slotDeleteAllWellPaths()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimUiTreeView::selectedUiItems(std::vector<caf::PdmUiItem*>& objects)
|
||||||
|
{
|
||||||
|
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
|
||||||
|
QModelIndexList idxList = this->selectionModel()->selectedIndexes();
|
||||||
|
|
||||||
|
for (int i = 0; i < idxList.size(); i++)
|
||||||
|
{
|
||||||
|
caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(idxList[i]);
|
||||||
|
if (uiItem)
|
||||||
|
{
|
||||||
|
caf::PdmUiItem* item = uiItem->dataObject();
|
||||||
|
objects.push_back(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -44,6 +44,9 @@ public:
|
|||||||
|
|
||||||
virtual void setModel(QAbstractItemModel* model);
|
virtual void setModel(QAbstractItemModel* model);
|
||||||
|
|
||||||
|
void selectedUiItems(std::vector<caf::PdmUiItem*>& objects);
|
||||||
|
|
||||||
|
|
||||||
void applyTreeViewStateFromString(const QString& treeViewState);
|
void applyTreeViewStateFromString(const QString& treeViewState);
|
||||||
void storeTreeViewStateToString(QString& treeViewState);
|
void storeTreeViewStateToString(QString& treeViewState);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user