#6296 Fix empty or duplicated fracture model menu items.

This commit is contained in:
Kristian Bendiksen 2020-08-26 15:52:47 +02:00
parent 6f4666bfed
commit 2f2fb145ac
3 changed files with 25 additions and 30 deletions

View File

@ -117,12 +117,7 @@ void RicNewFractureModelFeature::setupActionLook( QAction* actionToSetup )
//--------------------------------------------------------------------------------------------------
bool RicNewFractureModelFeature::isCommandEnabled()
{
if ( selectedFractureModelCollection() )
{
return true;
}
return false;
return selectedFractureModelCollection() != nullptr;
}
//--------------------------------------------------------------------------------------------------
@ -130,35 +125,26 @@ bool RicNewFractureModelFeature::isCommandEnabled()
//--------------------------------------------------------------------------------------------------
RimFractureModelCollection* RicNewFractureModelFeature::selectedFractureModelCollection()
{
std::vector<caf::PdmUiItem*> allSelectedItems;
caf::SelectionManager::instance()->selectedItems( allSelectedItems );
if ( allSelectedItems.size() != 1u ) return nullptr;
std::vector<caf::PdmUiItem*> selectedItems;
caf::SelectionManager::instance()->selectedItems( selectedItems );
if ( selectedItems.size() != 1u ) return nullptr;
caf::PdmUiItem* pdmUiItem = allSelectedItems.front();
caf::PdmUiItem* pdmUiItem = selectedItems.front();
RimFractureModelCollection* objToFind = nullptr;
caf::PdmObjectHandle* objHandle = dynamic_cast<caf::PdmObjectHandle*>( pdmUiItem );
RimFractureModelCollection* fractureModelCollection = nullptr;
caf::PdmObjectHandle* objHandle = dynamic_cast<caf::PdmObjectHandle*>( pdmUiItem );
if ( objHandle )
{
objHandle->firstAncestorOrThisOfType( objToFind );
}
objHandle->firstAncestorOrThisOfType( fractureModelCollection );
if ( fractureModelCollection ) return fractureModelCollection;
RimWellPath* wellPath = dynamic_cast<RimWellPath*>( objHandle );
if ( wellPath ) return wellPath->fractureModelCollection();
if ( objToFind == nullptr )
{
std::vector<RimWellPath*> wellPaths;
caf::SelectionManager::instance()->objectsByType( &wellPaths );
if ( !wellPaths.empty() )
{
return wellPaths[0]->fractureModelCollection();
}
RimWellPathCompletions* completions =
caf::SelectionManager::instance()->selectedItemOfType<RimWellPathCompletions>();
if ( completions )
{
return completions->fractureModelCollection();
}
if ( completions ) return completions->fractureModelCollection();
}
return objToFind;
return nullptr;
}

View File

@ -45,11 +45,13 @@ bool RicNewWellPathAttributeFeature::isCommandEnabled()
}
{
if ( caf::SelectionManager::instance()->selectedItemAncestorOfType<RimWellPath>() )
if ( caf::SelectionManager::instance()->selectedItemOfType<RimWellPath>() ||
caf::SelectionManager::instance()->selectedItemOfType<RimWellPathAttributeCollection>() )
{
return true;
}
}
return false;
}

View File

@ -71,6 +71,7 @@
#include "RimFormationNames.h"
#include "RimFormationNamesCollection.h"
#include "RimFractureModel.h"
#include "RimFractureModelCollection.h"
#include "RimFractureModelPlot.h"
#include "RimFractureTemplate.h"
#include "RimFractureTemplateCollection.h"
@ -397,6 +398,7 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
menuBuilder << "RicNewPerforationIntervalFeature";
menuBuilder << "RicNewFishbonesSubsFeature";
menuBuilder << "RicNewWellPathFractureFeature";
menuBuilder << "RicNewFractureModelFeature";
menuBuilder.subMenuEnd();
menuBuilder << "RicCreateTemporaryLgrFeature";
menuBuilder.addSeparator();
@ -431,10 +433,15 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
}
else if ( dynamic_cast<RimFractureModel*>( firstUiItem ) )
{
menuBuilder << "RicNewFractureModelFeature";
menuBuilder << "RicNewFractureModelPlotFeature";
menuBuilder << "RicImportFaciesFeature";
menuBuilder << "RicImportElasticPropertiesFeature";
}
else if ( dynamic_cast<RimFractureModelCollection*>( firstUiItem ) )
{
menuBuilder << "RicNewFractureModelFeature";
}
else if ( dynamic_cast<RimFractureModelPlot*>( firstUiItem ) )
{
menuBuilder << "RicExportFractureModelPlotToFileFeature";