Avoid to rebuild the complete project tree view when importing a grid case group

Set cell results as current item in tree view when importing a case
p4#: 21368
This commit is contained in:
Magne Sjaastad 2013-04-23 08:11:52 +02:00
parent d3fa2d5af5
commit de5542976c
3 changed files with 37 additions and 6 deletions

View File

@ -526,6 +526,8 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas
uiModel->addToParentAndBuildUiItems(projectTreeItem, position, rimResultReservoir);
RiuMainWindow::instance()->setCurrentObjectInTreeView(riv->cellResult());
return true;
}
@ -561,6 +563,8 @@ bool RiaApplication::openInputEclipseCase(const QString& caseName, const QString
uiModel->addToParentAndBuildUiItems(projectTreeItem, position, rimInputReservoir);
RiuMainWindow::instance()->setCurrentObjectInTreeView(riv->cellResult());
return true;
}
@ -1374,6 +1378,7 @@ bool RiaApplication::addEclipseCases(const QStringList& fileNames)
// When reading active cell info, only the total cell count is tested for consistency
RimResultCase* mainResultCase = NULL;
std::vector< std::vector<int> > mainCaseGridDimensions;
RimIdenticalGridCaseGroup* gridCaseGroup = NULL;
{
QString firstFileName = fileNames[0];
@ -1392,10 +1397,8 @@ bool RiaApplication::addEclipseCases(const QStringList& fileNames)
rimResultReservoir->readGridDimensions(mainCaseGridDimensions);
m_project->reservoirs.push_back(rimResultReservoir);
m_project->moveEclipseCaseIntoCaseGroup(rimResultReservoir);
mainResultCase = rimResultReservoir;
gridCaseGroup = m_project->createIdenticalCaseGroupFromMainCase(mainResultCase);
}
caf::ProgressInfo info(fileNames.size(), "Reading Active Cell data");
@ -1418,8 +1421,7 @@ bool RiaApplication::addEclipseCases(const QStringList& fileNames)
{
if (rimResultReservoir->openAndReadActiveCellData(mainResultCase->reservoirData()))
{
m_project->reservoirs.push_back(rimResultReservoir);
m_project->moveEclipseCaseIntoCaseGroup(rimResultReservoir);
m_project->insertCaseInCaseGroup(gridCaseGroup, rimResultReservoir);
}
else
{
@ -1434,7 +1436,15 @@ bool RiaApplication::addEclipseCases(const QStringList& fileNames)
info.setProgress(i);
}
onProjectOpenedOrClosed();
RimUiTreeModelPdm* uiModel = RiuMainWindow::instance()->uiPdmModel();
caf::PdmUiTreeItem* projectTreeItem = uiModel->treeItemRoot();
// New case is inserted before the last item, the script item
int position = projectTreeItem->childCount() - 1;
uiModel->addToParentAndBuildUiItems(projectTreeItem, position, gridCaseGroup);
RiuMainWindow::instance()->setCurrentObjectInTreeView(gridCaseGroup->statisticsCaseCollection());
return true;
}

View File

@ -130,6 +130,26 @@ QString RimProject::projectFileVersionString() const
return m_projectFileVersionString;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimIdenticalGridCaseGroup* RimProject::createIdenticalCaseGroupFromMainCase(RimCase* mainCase)
{
CVF_ASSERT(mainCase);
RigCaseData* rigEclipseCase = mainCase->reservoirData();
RigMainGrid* equalGrid = registerCaseInGridCollection(rigEclipseCase);
CVF_ASSERT(equalGrid);
RimIdenticalGridCaseGroup* group = new RimIdenticalGridCaseGroup;
group->createAndAppendStatisticsCase();
group->addCase(mainCase);
caseGroups().push_back(group);
return group;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -48,6 +48,7 @@ public:
void close();
RimIdenticalGridCaseGroup* createIdenticalCaseGroupFromMainCase(RimCase* mainCase);
void insertCaseInCaseGroup(RimIdenticalGridCaseGroup* caseGroup, RimCase* rimReservoir);
void moveEclipseCaseIntoCaseGroup(RimCase* rimReservoir);