mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-04 00:30:59 -05:00
[FEATURE][needs-docs] Update vector layer selection from relation
editor widget
This commit is contained in:
parent
d7059d0dfd
commit
485db34e56
@ -30,6 +30,7 @@
|
||||
#include "qgslogger.h"
|
||||
#include "qgsvectorlayerutils.h"
|
||||
#include "qgsmapcanvas.h"
|
||||
#include "qgsvectorlayerselectionmanager.h"
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
@ -135,8 +136,6 @@ QgsRelationEditorWidget::QgsRelationEditorWidget( QWidget *parent )
|
||||
|
||||
mDualView = new QgsDualView( this );
|
||||
mDualView->setView( mViewMode );
|
||||
mFeatureSelectionMgr = new QgsGenericFeatureSelectionManager( mDualView );
|
||||
mDualView->setFeatureSelectionManager( mFeatureSelectionMgr );
|
||||
|
||||
mRelationLayout->addWidget( mDualView );
|
||||
|
||||
@ -151,7 +150,6 @@ QgsRelationEditorWidget::QgsRelationEditorWidget( QWidget *parent )
|
||||
connect( mLinkFeatureButton, &QAbstractButton::clicked, this, &QgsRelationEditorWidget::linkFeature );
|
||||
connect( mUnlinkFeatureButton, &QAbstractButton::clicked, this, &QgsRelationEditorWidget::unlinkSelectedFeatures );
|
||||
connect( mZoomToFeatureButton, &QAbstractButton::clicked, this, &QgsRelationEditorWidget::zoomToSelectedFeatures );
|
||||
connect( mFeatureSelectionMgr, &QgsIFeatureSelectionManager::selectionChanged, this, &QgsRelationEditorWidget::updateButtons );
|
||||
|
||||
connect( mDualView, &QgsDualView::showContextMenuExternally, this, &QgsRelationEditorWidget::showContextMenu );
|
||||
|
||||
@ -198,10 +196,18 @@ void QgsRelationEditorWidget::setRelationFeature( const QgsRelation &relation, c
|
||||
if ( mVisible )
|
||||
{
|
||||
QgsFeatureRequest myRequest = mRelation.getRelatedFeaturesRequest( mFeature );
|
||||
mDualView->init( mRelation.referencingLayer(), nullptr, myRequest, mEditorContext );
|
||||
initDualView( mRelation.referencingLayer(), myRequest );
|
||||
}
|
||||
}
|
||||
|
||||
void QgsRelationEditorWidget::initDualView( QgsVectorLayer *layer, const QgsFeatureRequest &request )
|
||||
{
|
||||
mDualView->init( layer, nullptr, request, mEditorContext );
|
||||
mFeatureSelectionMgr = new QgsVectorLayerSelectionManager( layer, mDualView );
|
||||
mDualView->setFeatureSelectionManager( mFeatureSelectionMgr );
|
||||
connect( mFeatureSelectionMgr, &QgsIFeatureSelectionManager::selectionChanged, this, &QgsRelationEditorWidget::updateButtons );
|
||||
}
|
||||
|
||||
void QgsRelationEditorWidget::setRelations( const QgsRelation &relation, const QgsRelation &nmrelation )
|
||||
{
|
||||
if ( mRelation.isValid() )
|
||||
@ -295,7 +301,7 @@ void QgsRelationEditorWidget::updateButtons()
|
||||
{
|
||||
bool editable = false;
|
||||
bool linkable = false;
|
||||
bool selectionNotEmpty = mFeatureSelectionMgr->selectedFeatureCount();
|
||||
bool selectionNotEmpty = mFeatureSelectionMgr ? mFeatureSelectionMgr->selectedFeatureCount() : false;
|
||||
|
||||
if ( mRelation.isValid() )
|
||||
{
|
||||
@ -730,11 +736,11 @@ void QgsRelationEditorWidget::updateUi()
|
||||
|
||||
nmRequest.setFilterExpression( filters.join( QStringLiteral( " OR " ) ) );
|
||||
|
||||
mDualView->init( mNmRelation.referencedLayer(), nullptr, nmRequest, mEditorContext );
|
||||
initDualView( mNmRelation.referencedLayer(), nmRequest );
|
||||
}
|
||||
else
|
||||
{
|
||||
mDualView->init( mRelation.referencingLayer(), nullptr, myRequest, mEditorContext );
|
||||
initDualView( mRelation.referencingLayer(), myRequest );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "qgis_gui.h"
|
||||
|
||||
class QgsFeature;
|
||||
class QgsGenericFeatureSelectionManager;
|
||||
class QgsVectorLayerSelectionManager;
|
||||
class QgsVectorLayer;
|
||||
class QgsVectorLayerTools;
|
||||
|
||||
@ -160,10 +160,11 @@ class GUI_EXPORT QgsRelationEditorWidget : public QgsCollapsibleGroupBox
|
||||
|
||||
private:
|
||||
void updateUi();
|
||||
void initDualView( QgsVectorLayer *layer, const QgsFeatureRequest &request );
|
||||
|
||||
QgsDualView *mDualView = nullptr;
|
||||
QgsDualView::ViewMode mViewMode = QgsDualView::AttributeEditor;
|
||||
QgsGenericFeatureSelectionManager *mFeatureSelectionMgr = nullptr;
|
||||
QgsVectorLayerSelectionManager *mFeatureSelectionMgr = nullptr;
|
||||
QgsAttributeEditorContext mEditorContext;
|
||||
QgsRelation mRelation;
|
||||
QgsRelation mNmRelation;
|
||||
|
Loading…
x
Reference in New Issue
Block a user