Hide seismic section folder in views if no seismic data is loaded

This commit is contained in:
jonjenssen 2023-04-21 17:22:06 +02:00 committed by jonjenssen
parent 0e7cf49b17
commit dea931cb25
6 changed files with 37 additions and 3 deletions

View File

@ -1056,7 +1056,7 @@ void RimGeoMechView::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrderin
uiTreeOrdering.add( m_intersectionCollection() );
if ( surfaceInViewCollection() ) uiTreeOrdering.add( surfaceInViewCollection() );
uiTreeOrdering.add( seismicSectionCollection() );
if ( seismicSectionCollection()->shouldBeVisibleInTree() ) uiTreeOrdering.add( seismicSectionCollection() );
uiTreeOrdering.skipRemainingChildren( true );
}

View File

@ -1929,8 +1929,7 @@ void RimEclipseView::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrderin
uiTreeOrdering.add( intersectionCollection() );
if ( surfaceInViewCollection() ) uiTreeOrdering.add( surfaceInViewCollection() );
uiTreeOrdering.add( seismicSectionCollection() );
if ( seismicSectionCollection()->shouldBeVisibleInTree() ) uiTreeOrdering.add( seismicSectionCollection() );
uiTreeOrdering.skipRemainingChildren( true );
}

View File

@ -24,6 +24,7 @@
#include "RimGridView.h"
#include "RimProject.h"
#include "RimSeismicData.h"
#include "RimSeismicSectionCollection.h"
#include <QFile>
#include <QFileInfo>
@ -63,6 +64,8 @@ RimSeismicData* RimSeismicDataCollection::importSeismicFromFile( const QString f
m_seismicData.push_back( seisData );
updateAllRequiredEditors();
if ( m_seismicData.size() == 1 ) updateTreeForAllViews();
return seisData;
}
@ -88,6 +91,7 @@ bool RimSeismicDataCollection::isEmpty()
void RimSeismicDataCollection::onChildDeleted( caf::PdmChildArrayFieldHandle* childArray, std::vector<caf::PdmObjectHandle*>& referringObjects )
{
updateViews();
if ( m_seismicData.size() == 0 ) updateTreeForAllViews();
}
//--------------------------------------------------------------------------------------------------
@ -104,3 +108,20 @@ void RimSeismicDataCollection::updateViews()
view->scheduleCreateDisplayModelAndRedraw();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSeismicDataCollection::updateTreeForAllViews()
{
RimProject* proj = RimProject::current();
if ( proj != nullptr )
{
std::vector<RimGridView*> views;
proj->allVisibleGridViews( views );
for ( auto view : views )
{
view->updateAllRequiredEditors();
}
}
}

View File

@ -43,6 +43,7 @@ public:
protected:
void onChildDeleted( caf::PdmChildArrayFieldHandle* childArray, std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
void updateViews();
void updateTreeForAllViews();
private:
caf::PdmChildArrayField<RimSeismicData*> m_seismicData;

View File

@ -258,3 +258,14 @@ void RimSeismicSectionCollection::updateView()
firstAncestorOrThisOfType( view );
if ( view ) view->scheduleCreateDisplayModelAndRedraw();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimSeismicSectionCollection::shouldBeVisibleInTree() const
{
RimProject* proj = RimProject::current();
if ( proj == nullptr ) return false;
return !proj->activeOilField()->seismicCollection()->isEmpty();
}

View File

@ -57,6 +57,8 @@ public:
bool empty();
int size();
bool shouldBeVisibleInTree() const;
QString userDescription();
void setUserDescription( QString description );