@@ -37,6 +37,7 @@ QgsGeometryValidationDock::QgsGeometryValidationDock( const QString &title, QgsM
37
37
connect ( mMapCanvas , &QgsMapCanvas::currentLayerChanged, this , &QgsGeometryValidationDock::updateLayerTransform );
38
38
connect ( mMapCanvas , &QgsMapCanvas::destinationCrsChanged, this , &QgsGeometryValidationDock::updateLayerTransform );
39
39
connect ( mMapCanvas , &QgsMapCanvas::transformContextChanged, this , &QgsGeometryValidationDock::updateLayerTransform );
40
+ connect ( mTopologyChecksPendingButton , &QToolButton::clicked, this , &QgsGeometryValidationDock::triggerTopologyChecks );
40
41
41
42
mFeatureRubberband = new QgsRubberBand ( mMapCanvas );
42
43
mErrorRubberband = new QgsRubberBand ( mMapCanvas );
@@ -54,6 +55,8 @@ QgsGeometryValidationDock::QgsGeometryValidationDock( const QString &title, QgsM
54
55
mErrorLocationRubberband ->setWidth ( scaleFactor );
55
56
mErrorLocationRubberband ->setIconSize ( scaleFactor * 5 );
56
57
mErrorLocationRubberband ->setColor ( QColor ( 50 , 255 , 50 , 255 ) );
58
+
59
+ mProblemDetailWidget ->setVisible ( false );
57
60
}
58
61
59
62
@@ -104,6 +107,13 @@ void QgsGeometryValidationDock::zoomToFeature()
104
107
mMapCanvas ->zoomToFeatureExtent ( mapExtent );
105
108
}
106
109
110
+ void QgsGeometryValidationDock::triggerTopologyChecks ()
111
+ {
112
+ QgsVectorLayer *layer = qobject_cast<QgsVectorLayer *>( mMapCanvas ->currentLayer () );
113
+ if ( layer )
114
+ mGeometryValidationService ->triggerTopologyChecks ( layer );
115
+ }
116
+
107
117
void QgsGeometryValidationDock::updateLayerTransform ()
108
118
{
109
119
if ( !mMapCanvas ->currentLayer () )
@@ -130,13 +140,18 @@ QModelIndex QgsGeometryValidationDock::currentIndex() const
130
140
void QgsGeometryValidationDock::onCurrentErrorChanged ( const QModelIndex ¤t, const QModelIndex &previous )
131
141
{
132
142
Q_UNUSED ( previous )
143
+
144
+ mProblemDetailWidget ->setVisible ( current.isValid () );
145
+
133
146
mNextButton ->setEnabled ( current.isValid () && current.row () < mGeometryValidationModel ->rowCount () - 1 );
134
147
mPreviousButton ->setEnabled ( current.isValid () && current.row () > 0 );
135
148
136
149
mProblemDetailWidget ->setVisible ( current.isValid () );
137
- mProblemDescriptionLabel ->setText ( current.data ().toString () );
150
+ mProblemDescriptionLabel ->setText ( current.data ( QgsGeometryValidationModel::DetailsRole ).toString () );
151
+
152
+ QgsGeometryCheckError *error = current.data ( QgsGeometryValidationModel::GeometryCheckErrorRole ).value <QgsGeometryCheckError *>();
153
+ if ( error )
138
154
{
139
- QgsGeometryCheckError *error = current.data ( QgsGeometryValidationModel::GeometryCheckErrorRole ).value <QgsGeometryCheckError *>();
140
155
while ( QPushButton *btn = mResolutionWidget ->findChild <QPushButton *>() )
141
156
delete btn;
142
157
const QStringList resolutionMethods = error->check ()->resolutionMethods ();
0 commit comments