void QgsSelectedFeature::validateGeometry( QgsGeometry *g ) { QSettings settings; if ( settings.value( "/qgis/digitizing/validate_geometries", 1 ).toInt() == 0 ) return; if ( !g ) g = mGeometry; mTip.clear(); if ( mValidator ) { mValidator->stop(); mValidator->wait(); mValidator->deleteLater(); mValidator = 0; } mGeomErrors.clear(); while ( !mGeomErrorMarkers.isEmpty() ) { QgsVertexMarker *vm = mGeomErrorMarkers.takeFirst(); QgsDebugMsg( "deleting " + vm->toolTip() ); delete vm; } mValidator = new QgsGeometryValidator( g ); connect( mValidator, SIGNAL( errorFound( QgsGeometry::Error ) ), this, SLOT( addError( QgsGeometry::Error ) ) ); connect( mValidator, SIGNAL( finished() ), this, SLOT( validationFinished() ) ); mValidator->start(); QStatusBar *sb = QgisApp::instance()->statusBar(); sb->showMessage( tr( "Validation started." ) ); }
void QgsMapToolCapture::validateGeometry() { QSettings settings; if ( settings.value( "/qgis/digitizing/validate_geometries", 1 ).toInt() == 0 ) return; if ( mValidator ) { mValidator->deleteLater(); mValidator = 0; } mTip = ""; mGeomErrors.clear(); while ( !mGeomErrorMarkers.isEmpty() ) { delete mGeomErrorMarkers.takeFirst(); } QgsGeometry *g = 0; switch ( mCaptureMode ) { case CaptureNone: case CapturePoint: return; case CaptureLine: if ( size() < 2 ) return; g = new QgsGeometry( mCaptureCurve.curveToLine() ); break; case CapturePolygon: if ( size() < 3 ) return; QgsLineStringV2* exteriorRing = mCaptureCurve.curveToLine(); exteriorRing->close(); QgsPolygonV2* polygon = new QgsPolygonV2(); polygon->setExteriorRing( exteriorRing ); g = new QgsGeometry( polygon ); break; } if ( !g ) return; mValidator = new QgsGeometryValidator( g ); connect( mValidator, SIGNAL( errorFound( QgsGeometry::Error ) ), this, SLOT( addError( QgsGeometry::Error ) ) ); connect( mValidator, SIGNAL( finished() ), this, SLOT( validationFinished() ) ); mValidator->start(); QStatusBar *sb = QgisApp::instance()->statusBar(); sb->showMessage( tr( "Validation started." ) ); delete g; }
void QgsMapToolCapture::validateGeometry() { QSettings settings; if ( settings.value( "/qgis/digitizing/validate_geometries", 1 ).toInt() == 0 ) return; if ( mValidator ) { mValidator->deleteLater(); mValidator = 0; } mTip = ""; mGeomErrors.clear(); while ( !mGeomErrorMarkers.isEmpty() ) { delete mGeomErrorMarkers.takeFirst(); } QgsGeometry *g = 0; switch ( mCaptureMode ) { case CaptureNone: case CapturePoint: return; case CaptureLine: if ( mCaptureList.size() < 2 ) return; g = QgsGeometry::fromPolyline( mCaptureList.toVector() ); break; case CapturePolygon: if ( mCaptureList.size() < 3 ) return; g = QgsGeometry::fromPolygon( QgsPolygon() << ( QgsPolyline() << mCaptureList.toVector() << mCaptureList[0] ) ); break; } if ( !g ) return; mValidator = new QgsGeometryValidator( g ); connect( mValidator, SIGNAL( errorFound( QgsGeometry::Error ) ), this, SLOT( addError( QgsGeometry::Error ) ) ); connect( mValidator, SIGNAL( finished() ), this, SLOT( validationFinished() ) ); mValidator->start(); QStatusBar *sb = QgisApp::instance()->statusBar(); sb->showMessage( tr( "Validation started." ) ); }