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::addError( QgsGeometry::Error e ) { mGeomErrors << e; QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mCanvas->currentLayer() ); if ( !vlayer ) return; if ( !mTip.isEmpty() ) mTip += "\n"; mTip += e.what(); if ( e.hasWhere() ) { QgsVertexMarker *vm = new QgsVertexMarker( mCanvas ); vm->setCenter( mCanvas->mapSettings().layerToMapCoordinates( vlayer, e.where() ) ); vm->setIconType( QgsVertexMarker::ICON_X ); vm->setPenWidth( 2 ); vm->setToolTip( e.what() ); vm->setColor( Qt::green ); vm->setZValue( vm->zValue() + 1 ); mGeomErrorMarkers << vm; } QStatusBar *sb = QgisApp::instance()->statusBar(); sb->showMessage( e.what() ); if ( !mTip.isEmpty() ) sb->setToolTip( mTip ); }
void QgsLockedFeature::validateGeometry( QgsGeometry *g ) { QgsSettings settings; if ( settings.value( QStringLiteral( "qgis/digitizing/validate_geometries" ), 1 ).toInt() == 0 ) return; if ( !g ) g = mGeometry; mTip.clear(); if ( mValidator ) { mValidator->stop(); mValidator->wait(); mValidator->deleteLater(); mValidator = nullptr; } mGeomErrors.clear(); while ( !mGeomErrorMarkers.isEmpty() ) { QgsVertexMarker *vm = mGeomErrorMarkers.takeFirst(); QgsDebugMsg( "deleting " + vm->toolTip() ); delete vm; } QgsGeometry::ValidationMethod method = QgsGeometry::ValidatorQgisInternal; if ( settings.value( QStringLiteral( "qgis/digitizing/validate_geometries" ), 1 ).toInt() == 2 ) method = QgsGeometry::ValidatorGeos; mValidator = new QgsGeometryValidator( *g, nullptr, method ); connect( mValidator, &QgsGeometryValidator::errorFound, this, &QgsLockedFeature::addError ); connect( mValidator, &QThread::finished, this, &QgsLockedFeature::validationFinished ); mValidator->start(); QgsStatusBar *sb = QgisApp::instance()->statusBarIface(); sb->showMessage( tr( "Validation started." ) ); }
void QgsMapToolCapture::addError( const QgsGeometry::Error &e ) { mGeomErrors << e; QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mCanvas->currentLayer() ); if ( !vlayer ) return; if ( e.hasWhere() ) { QgsVertexMarker *vm = new QgsVertexMarker( mCanvas ); vm->setCenter( mCanvas->mapSettings().layerToMapCoordinates( vlayer, e.where() ) ); vm->setIconType( QgsVertexMarker::ICON_X ); vm->setPenWidth( 2 ); vm->setToolTip( e.what() ); vm->setColor( Qt::green ); vm->setZValue( vm->zValue() + 1 ); mGeomErrorMarkers << vm; } }
void QgsLockedFeature::addError( QgsGeometry::Error e ) { mGeomErrors << e; if ( !mTip.isEmpty() ) mTip += '\n'; mTip += e.what(); if ( e.hasWhere() ) { QgsVertexMarker *marker = new QgsVertexMarker( mCanvas ); marker->setCenter( mCanvas->mapSettings().layerToMapCoordinates( mLayer, e.where() ) ); marker->setIconType( QgsVertexMarker::ICON_X ); marker->setColor( Qt::green ); marker->setZValue( marker->zValue() + 1 ); marker->setIconSize( QgsGuiUtils::scaleIconSize( 10 ) ); marker->setPenWidth( QgsGuiUtils::scaleIconSize( 2 ) ); marker->setToolTip( e.what() ); mGeomErrorMarkers << marker; } QgsStatusBar *sb = QgisApp::instance()->statusBarIface(); sb->showMessage( e.what() ); sb->setToolTip( mTip ); }
void QgsSelectedFeature::addError( QgsGeometry::Error e ) { mGeomErrors << e; if ( !mTip.isEmpty() ) mTip += "\n"; mTip += e.what(); if ( e.hasWhere() ) { QgsVertexMarker *marker = new QgsVertexMarker( mCanvas ); marker->setCenter( mCanvas->mapRenderer()->layerToMapCoordinates( mVlayer, e.where() ) ); marker->setIconType( QgsVertexMarker::ICON_X ); marker->setColor( Qt::green ); marker->setZValue( marker->zValue() + 1 ); marker->setPenWidth( 2 ); marker->setToolTip( e.what() ); mGeomErrorMarkers << marker; } QStatusBar *sb = QgisApp::instance()->statusBar(); sb->showMessage( e.what() ); sb->setToolTip( mTip ); }