mirror of
https://github.com/OPM/ResInsight.git
synced 2024-12-28 01:41:42 -06:00
parent
53a31c88c9
commit
711cb267fd
@ -34,6 +34,7 @@
|
||||
|
||||
#include "Polygons/RimPolygon.h"
|
||||
#include "Polygons/RimPolygonCollection.h"
|
||||
#include "Polygons/RimPolygonInView.h"
|
||||
|
||||
#include "cafCmdFeatureMenuBuilder.h"
|
||||
#include "cafPdmFieldReorderCapability.h"
|
||||
@ -619,7 +620,13 @@ std::vector<RimPolygonInView*> RimCellFilterCollection::enabledCellFilterPolygon
|
||||
|
||||
if ( auto polygonFilter = dynamic_cast<RimPolygonFilter*>( filter.p() ) )
|
||||
{
|
||||
polyInView.push_back( polygonFilter->polygonInView() );
|
||||
if ( !polygonFilter->isSelected() ) continue;
|
||||
|
||||
auto piv = polygonFilter->polygonInView();
|
||||
if ( piv && piv->showLines() )
|
||||
{
|
||||
polyInView.push_back( piv );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include "WellPathCommands/RicPolylineTargetsPickEventHandler.h"
|
||||
|
||||
#include "cafPdmUiPushButtonEditor.h"
|
||||
#include "cafSelectionManager.h"
|
||||
|
||||
#include <limits>
|
||||
|
||||
@ -92,6 +93,7 @@ RimPolygonFilter::RimPolygonFilter()
|
||||
: RimCellFilter( RimCellFilter::INDEX )
|
||||
, m_pickTargetsEventHandler( new RicPolylineTargetsPickEventHandler( this ) )
|
||||
, m_intervalTool( true )
|
||||
, m_isSelected( false )
|
||||
{
|
||||
CAF_PDM_InitObject( "Polyline Filter", ":/CellFilter_Polygon.png" );
|
||||
|
||||
@ -174,6 +176,14 @@ bool RimPolygonFilter::isFilterEnabled() const
|
||||
return m_isActive() && m_enableFiltering;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimPolygonFilter::isSelected() const
|
||||
{
|
||||
return m_isSelected;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -1003,6 +1013,21 @@ void RimPolygonFilter::onObjectChanged( const caf::SignalEmitter* emitter )
|
||||
updateIconState();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimPolygonFilter::onSelectionManagerSelectionChanged( const std::set<int>& changedSelectionLevels )
|
||||
{
|
||||
bool selectedState = m_isSelected;
|
||||
auto selectedFilter = dynamic_cast<RimPolygonFilter*>( caf::SelectionManager::instance()->selectedItem() );
|
||||
m_isSelected = ( selectedFilter == this );
|
||||
|
||||
if ( selectedState != m_isSelected )
|
||||
{
|
||||
filterChanged.send();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Find which K layer we hit, in any of the grids, for any of the selected points
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "cafPdmChildField.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmPtrField.h"
|
||||
#include "cafSelectionChangedReceiver.h"
|
||||
|
||||
class RimPolygon;
|
||||
class RimPolylineTarget;
|
||||
@ -40,7 +41,7 @@ class RicPolylineTargetsPickEventHandler;
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimPolygonFilter : public RimCellFilter, public RimPolylinePickerInterface
|
||||
class RimPolygonFilter : public RimCellFilter, public RimPolylinePickerInterface, public caf::SelectionChangedReceiver
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
@ -77,8 +78,10 @@ public:
|
||||
void setPolygon( RimPolygon* polygon );
|
||||
|
||||
bool isFilterEnabled() const override;
|
||||
bool isSelected() const;
|
||||
|
||||
void enablePicking( bool enable );
|
||||
bool pickingEnabled() const override;
|
||||
|
||||
void updateCellIndexFilter( cvf::UByteArray* includeVisibility, cvf::UByteArray* excludeVisibility, int gridIndex ) override;
|
||||
void onGridChanged() override;
|
||||
@ -96,6 +99,8 @@ protected:
|
||||
|
||||
QString fullName() const override;
|
||||
|
||||
void onSelectionManagerSelectionChanged( const std::set<int>& changedSelectionLevels ) override;
|
||||
|
||||
private:
|
||||
void updateCells();
|
||||
void updateCellsForEclipse( const std::vector<cvf::Vec3d>& points, RimEclipseCase* eCase );
|
||||
@ -124,7 +129,6 @@ private:
|
||||
void updateEditorsAndVisualization() override;
|
||||
void updateVisualization() override;
|
||||
std::vector<RimPolylineTarget*> activeTargets() const override;
|
||||
bool pickingEnabled() const override;
|
||||
caf::PickEventHandler* pickEventHandler() const override;
|
||||
|
||||
caf::AppEnum<GeometricalShape> geometricalShape() const;
|
||||
@ -144,6 +148,8 @@ private:
|
||||
|
||||
RimCellFilterIntervalTool m_intervalTool;
|
||||
|
||||
bool m_isSelected;
|
||||
|
||||
// Local polygon and polygon editor
|
||||
caf::PdmPtrField<RimPolygon*> m_cellFilterPolygon;
|
||||
caf::PdmChildField<RimPolygon*> m_internalPolygon;
|
||||
|
@ -159,6 +159,14 @@ void RimPolygon::setColor( const cvf::Color3f& color )
|
||||
m_appearance->setLineColor( color );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimPolygon::showLines() const
|
||||
{
|
||||
return m_appearance->showLines();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -186,7 +194,6 @@ void RimPolygon::fieldChangedByUi( const caf::PdmFieldHandle* changedField, cons
|
||||
if ( changedField == &m_pointsInDomainCoords )
|
||||
{
|
||||
coordinatesChanged.send();
|
||||
objectChanged.send();
|
||||
}
|
||||
|
||||
if ( changedField == &m_editPolygonButton )
|
||||
@ -195,9 +202,9 @@ void RimPolygon::fieldChangedByUi( const caf::PdmFieldHandle* changedField, cons
|
||||
RimPolygonTools::activate3dEditOfPolygonInView( this, activeView );
|
||||
|
||||
m_editPolygonButton = false;
|
||||
|
||||
return;
|
||||
}
|
||||
objectChanged.send();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -58,6 +58,8 @@ public:
|
||||
cvf::Color3f color() const;
|
||||
void setColor( const cvf::Color3f& color );
|
||||
|
||||
bool showLines() const;
|
||||
|
||||
cvf::ref<RigPolyLinesData> polyLinesData() const override;
|
||||
|
||||
void uiOrderingForLocalPolygon( QString uiConfigName, caf::PdmUiOrdering& uiOrdering );
|
||||
|
@ -124,6 +124,14 @@ bool RimPolygonAppearance::isClosed() const
|
||||
return m_isClosed();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimPolygonAppearance::showLines() const
|
||||
{
|
||||
return m_showLines();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -40,6 +40,8 @@ public:
|
||||
cvf::Color3f lineColor() const;
|
||||
void setLineColor( const cvf::Color3f& color );
|
||||
|
||||
bool showLines() const;
|
||||
|
||||
public:
|
||||
RimPolygonAppearance();
|
||||
|
||||
|
@ -39,7 +39,10 @@ RimPolygonFile::RimPolygonFile()
|
||||
{
|
||||
CAF_PDM_InitObject( "PolygonFile", ":/Folder.png" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_fileName, "StimPlanFileName", "File Name" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_fileName, "FileName", "File Name" );
|
||||
m_fileName.registerKeywordAlias( "StimPlanFileName" );
|
||||
m_fileName.uiCapability()->setUiReadOnly( true );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_polygons, "Polygons", "Polygons" );
|
||||
|
||||
setDeletable( true );
|
||||
@ -62,12 +65,18 @@ void RimPolygonFile::loadData()
|
||||
{
|
||||
auto polygonsFromFile = importDataFromFile( m_fileName().path() );
|
||||
|
||||
if ( polygonsFromFile.size() == 1 )
|
||||
{
|
||||
polygonsFromFile[0]->setName( name() );
|
||||
}
|
||||
|
||||
if ( m_polygons.size() == polygonsFromFile.size() )
|
||||
{
|
||||
for ( size_t i = 0; i < m_polygons.size(); i++ )
|
||||
{
|
||||
auto projectPoly = m_polygons()[i];
|
||||
auto filePoly = polygonsFromFile[i];
|
||||
projectPoly->setDeletable( false );
|
||||
auto filePoly = polygonsFromFile[i];
|
||||
projectPoly->setPointsInDomainCoords( filePoly->pointsInDomainCoords() );
|
||||
projectPoly->coordinatesChanged.send(); // updates editors
|
||||
projectPoly->objectChanged.send(); // updates filters
|
||||
@ -157,14 +166,18 @@ std::vector<RimPolygon*> RimPolygonFile::importDataFromFile( const QString& file
|
||||
|
||||
std::vector<RimPolygon*> polygons;
|
||||
|
||||
QFileInfo fi( fileName );
|
||||
const QString basename = fi.baseName();
|
||||
|
||||
for ( const auto& [polygonId, filePolygon] : filePolygons )
|
||||
{
|
||||
auto polygon = new RimPolygon();
|
||||
polygon->disableStorageOfPolygonPoints();
|
||||
polygon->setReadOnly( true );
|
||||
polygon->setDeletable( false );
|
||||
|
||||
int id = ( polygonId != -1 ) ? polygonId : static_cast<int>( polygons.size() + 1 );
|
||||
polygon->setName( QString( "Polygon %1" ).arg( id ) );
|
||||
polygon->setName( QString( "%1 (%2)" ).arg( basename ).arg( id ) );
|
||||
polygon->setPointsInDomainCoords( filePolygon );
|
||||
polygons.push_back( polygon );
|
||||
}
|
||||
@ -183,7 +196,7 @@ std::vector<RimPolygon*> RimPolygonFile::importDataFromFile( const QString& file
|
||||
void RimPolygonFile::updateName()
|
||||
{
|
||||
QFileInfo fileInfo( m_fileName().path() );
|
||||
setName( fileInfo.fileName() );
|
||||
setName( fileInfo.baseName() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -165,6 +165,18 @@ void RimPolygonInView::updateVisualization()
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimPolygonInView::showLines() const
|
||||
{
|
||||
if ( auto poly = polygon() )
|
||||
{
|
||||
return poly->showLines() && isChecked();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -389,6 +401,11 @@ void RimPolygonInView::appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimPolygonInView::onObjectChanged( const caf::SignalEmitter* emitter )
|
||||
{
|
||||
// make sure name is in sync
|
||||
if ( dynamic_cast<const RimPolygon*>( emitter ) )
|
||||
{
|
||||
setName( m_polygon->name() );
|
||||
}
|
||||
updateVisualization();
|
||||
}
|
||||
|
||||
|
@ -67,6 +67,8 @@ public:
|
||||
|
||||
cvf::ref<RigPolyLinesData> polyLinesData() const override;
|
||||
|
||||
bool showLines() const;
|
||||
|
||||
void onChildrenUpdated( caf::PdmChildArrayFieldHandle* childArray, std::vector<caf::PdmObjectHandle*>& updatedObjects ) override;
|
||||
void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;
|
||||
|
||||
|
@ -32,7 +32,7 @@ CAF_PDM_SOURCE_INIT( RimPolygonInViewCollection, "RimPolygonInViewCollection" );
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimPolygonInViewCollection::RimPolygonInViewCollection()
|
||||
{
|
||||
CAF_PDM_InitObject( "Polygons", ":/PolylinesFromFile16x16.png" );
|
||||
CAF_PDM_InitObject( "Polygons", ":/Folder.png" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_polygonsInView, "Polygons", "Polygons" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_collectionsInView, "Collections", "Collections" );
|
||||
@ -172,6 +172,7 @@ void RimPolygonInViewCollection::syncCollectionsWithView()
|
||||
for ( auto polygonFile : polygonCollection->polygonFiles() )
|
||||
{
|
||||
if ( polygonFile->polygons().empty() ) continue;
|
||||
if ( polygonFile->polygons().size() == 1 ) continue;
|
||||
|
||||
auto viewPolygonFile = getCollectionInViewForPolygonFile( polygonFile );
|
||||
if ( viewPolygonFile == nullptr )
|
||||
@ -217,6 +218,13 @@ void RimPolygonInViewCollection::syncPolygonsWithView()
|
||||
{
|
||||
auto polygonCollection = RimTools::polygonCollection();
|
||||
polygons = polygonCollection->userDefinedPolygons();
|
||||
for ( auto polyfile : polygonCollection->polygonFiles() )
|
||||
{
|
||||
if ( polyfile->polygons().size() == 1 )
|
||||
{
|
||||
polygons.push_back( polyfile->polygons()[0] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<RimPolygonInView*> newPolygonsInView;
|
||||
|
@ -101,6 +101,7 @@ RimGridView::RimGridView()
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_polygonInViewCollection, "PolygonInViewCollection", "Polygon Collection Field" );
|
||||
m_polygonInViewCollection = new RimPolygonInViewCollection();
|
||||
m_polygonInViewCollection->uiCapability()->setUiIcon( caf::IconProvider( ":/PolylinesFromFile16x16.png" ) );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_cellFilterCollection, "RangeFilters", "Cell Filter Collection Field" );
|
||||
m_cellFilterCollection = new RimCellFilterCollection();
|
||||
|
@ -558,27 +558,6 @@ std::pair<int, int> RiuMultiPlotPage::rowAndColumnCount( int plotWidgetCount ) c
|
||||
return std::make_pair( rowCount, columnCount );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMultiPlotPage::onSelectionManagerSelectionChanged( const std::set<int>& changedSelectionLevels )
|
||||
{
|
||||
if ( !m_plotDefinition ) return;
|
||||
|
||||
for ( RiuPlotWidget* plotWidget : m_plotWidgets )
|
||||
{
|
||||
if ( !plotWidget ) continue;
|
||||
RimPlot* plot = plotWidget->plotDefinition();
|
||||
if ( !plot ) continue;
|
||||
|
||||
bool isSelected = false;
|
||||
for ( int changedLevel : changedSelectionLevels )
|
||||
{
|
||||
isSelected = isSelected || caf::SelectionManager::instance()->isSelected( plot, changedLevel );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "RiaDefines.h"
|
||||
|
||||
#include "cafPdmPointer.h"
|
||||
#include "cafSelectionChangedReceiver.h"
|
||||
|
||||
#include "qwt_axis_id.h"
|
||||
|
||||
@ -55,7 +54,7 @@ class QwtPlot;
|
||||
// RiuMultiPlotPage
|
||||
//
|
||||
//==================================================================================================
|
||||
class RiuMultiPlotPage : public QWidget, public caf::SelectionChangedReceiver, public RiuInterfaceToViewWindow
|
||||
class RiuMultiPlotPage : public QWidget, public RiuInterfaceToViewWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -117,8 +116,6 @@ protected:
|
||||
void alignAxes();
|
||||
void alignAxis( QwtAxisId axis, int row, std::function<bool( int, int, int )> positionMatcher );
|
||||
|
||||
void onSelectionManagerSelectionChanged( const std::set<int>& changedSelectionLevels ) override;
|
||||
|
||||
virtual bool showYAxis( int row, int column ) const;
|
||||
|
||||
virtual void reinsertPlotWidgets();
|
||||
|
Loading…
Reference in New Issue
Block a user