Merge pull request OPM/CloseMultipleCases

#2934 Delete all selected cases, not just the first one when right cl…
This commit is contained in:
Jacob Støren
2018-05-18 16:03:22 +02:00
committed by GitHub
2 changed files with 37 additions and 39 deletions

View File

@@ -52,7 +52,7 @@ CAF_CMD_SOURCE_INIT(RicCloseCaseFeature, "RicCloseCaseFeature");
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RicCloseCaseFeature::isCommandEnabled() bool RicCloseCaseFeature::isCommandEnabled()
{ {
return selectedEclipseCase() != nullptr || selectedGeoMechCase() != nullptr; return !selectedCases().empty();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -60,24 +60,44 @@ bool RicCloseCaseFeature::isCommandEnabled()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicCloseCaseFeature::onActionTriggered(bool isChecked) void RicCloseCaseFeature::onActionTriggered(bool isChecked)
{ {
RimEclipseCase* eclipseCase = selectedEclipseCase(); std::vector<RimCase*> rimCases = selectedCases();
RimGeoMechCase* geoMechCase = selectedGeoMechCase(); std::vector<RimEclipseCase*> eclipseCases;
std::vector<RimGeoMechCase*> geoMechCases;
for (RimCase* rimCase : selectedCases())
{
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(rimCase);
if (eclipseCase) if (eclipseCase)
{ {
std::vector<RimEclipseCase*> casesToBeDeleted; eclipseCases.push_back(eclipseCase);
casesToBeDeleted.push_back(eclipseCase); }
else
{
RimGeoMechCase* geoMechCase = dynamic_cast<RimGeoMechCase*>(rimCase);
if (geoMechCase)
{
geoMechCases.push_back(geoMechCase);
}
}
}
if (userConfirmedGridCaseGroupChange(casesToBeDeleted)) if (!eclipseCases.empty())
{
if (userConfirmedGridCaseGroupChange(eclipseCases))
{
for (RimEclipseCase* eclipseCase : eclipseCases)
{ {
deleteEclipseCase(eclipseCase); deleteEclipseCase(eclipseCase);
}
RiuMainWindow::instance()->cleanupGuiCaseClose(); RiuMainWindow::instance()->cleanupGuiCaseClose();
} }
} }
else if (geoMechCase)
if (!geoMechCases.empty())
{
for (RimGeoMechCase* geoMechCase : geoMechCases)
{ {
deleteGeoMechCase(geoMechCase); deleteGeoMechCase(geoMechCase);
}
RiuMainWindow::instance()->cleanupGuiCaseClose(); RiuMainWindow::instance()->cleanupGuiCaseClose();
} }
} }
@@ -95,33 +115,11 @@ void RicCloseCaseFeature::setupActionLook(QAction* actionToSetup)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimEclipseCase* RicCloseCaseFeature::selectedEclipseCase() const std::vector<RimCase*> RicCloseCaseFeature::selectedCases() const
{ {
std::vector<RimEclipseCase*> selection; std::vector<RimCase*> selection;
caf::SelectionManager::instance()->objectsByType(&selection); caf::SelectionManager::instance()->objectsByType(&selection);
return selection;
if (selection.size() > 0)
{
return selection[0];
}
return nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimGeoMechCase* RicCloseCaseFeature::selectedGeoMechCase() const
{
std::vector<RimGeoMechCase*> selection;
caf::SelectionManager::instance()->objectsByType(&selection);
if (selection.size() > 0)
{
return selection[0];
}
return nullptr;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -25,6 +25,7 @@
class RimEclipseCase; class RimEclipseCase;
class RimGeoMechCase; class RimGeoMechCase;
class RimCase;
class RimIdenticalGridCaseGroup; class RimIdenticalGridCaseGroup;
//================================================================================================== //==================================================================================================
@@ -45,8 +46,7 @@ protected:
virtual void setupActionLook( QAction* actionToSetup ); virtual void setupActionLook( QAction* actionToSetup );
private: private:
RimEclipseCase* selectedEclipseCase() const; std::vector<RimCase*> selectedCases() const;
RimGeoMechCase* selectedGeoMechCase() const;
void deleteGeoMechCase(RimGeoMechCase* geoMechCase); void deleteGeoMechCase(RimGeoMechCase* geoMechCase);