void checkDock::runTests(ValidateType type) { for (int i = 0; i < mTestTable->rowCount(); ++i) { QString testName = mTestTable->item(i, 0)->text(); QString toleranceStr = mTestTable->item(i, 3)->text(); QString layer1Str = mTestTable->item(i, 4)->text(); QString layer2Str = mTestTable->item(i, 5)->text(); // test if layer1 is in the registry if (!((QgsVectorLayer*)mLayerRegistry->mapLayers().contains(layer1Str))) { std::cout << "CheckDock: layer " << layer1Str.toStdString() << " not found in registry!" << std::flush; return; } QgsVectorLayer* layer1 = (QgsVectorLayer*)mLayerRegistry->mapLayers()[layer1Str]; QgsVectorLayer* layer2 = 0; if ((QgsVectorLayer*)mLayerRegistry->mapLayers().contains(layer2Str)) layer2 = (QgsVectorLayer*)mLayerRegistry->mapLayers()[layer2Str]; QProgressDialog progress(testName, "Abort", 0, layer1->featureCount(), this); progress.setWindowModality(Qt::WindowModal); connect(&progress, SIGNAL(canceled()), &mTest, SLOT(setTestCancelled())); connect(&mTest, SIGNAL(progress(int)), &progress, SLOT(setValue(int))); // run the test ErrorList errors = mTest.runTest(testName, layer1, layer2, type, toleranceStr.toDouble()); disconnect(&progress, SIGNAL(canceled()), &mTest, SLOT(setTestCancelled())); disconnect(&mTest, SIGNAL(progress(int)), &progress, SLOT(setValue(int))); mErrorList << errors; } mErrorListModel->resetModel(); }
void checkDock::runTests( ValidateType type ) { for ( int i = 0; i < mTestTable->rowCount(); ++i ) { QString testName = mTestTable->item( i, 0 )->text(); QString toleranceStr = mTestTable->item( i, 3 )->text(); QString layer1Str = mTestTable->item( i, 4 )->text(); QString layer2Str = mTestTable->item( i, 5 )->text(); // test if layer1 is in the registry if ( !(( QgsVectorLayer* )mLayerRegistry->mapLayers().contains( layer1Str ) ) ) { QgsMessageLog::logMessage( tr( "Layer %1 not found in registry." ).arg( layer1Str ), tr( "Topology plugin" ) ); return; } QgsVectorLayer* layer1 = ( QgsVectorLayer* )mLayerRegistry->mapLayers()[layer1Str]; QgsVectorLayer* layer2 = 0; if (( QgsVectorLayer* )mLayerRegistry->mapLayers().contains( layer2Str ) ) layer2 = ( QgsVectorLayer* )mLayerRegistry->mapLayers()[layer2Str]; QProgressDialog progress( testName, tr( "Abort" ), 0, layer1->featureCount(), this ); progress.setWindowModality( Qt::WindowModal ); connect( &progress, SIGNAL( canceled() ), mTest, SLOT( setTestCancelled() ) ); connect( mTest, SIGNAL( progress( int ) ), &progress, SLOT( setValue( int ) ) ); // run the test ErrorList errors = mTest->runTest( testName, layer1, layer2, type, toleranceStr.toDouble() ); QList<TopolError*>::Iterator it; QgsRubberBand* rb = 0; for ( it = errors.begin(); it != errors.end(); ++it ) { TopolError* te = *it; te->conflict(); QSettings settings; if ( te->conflict()->type() == QGis::Polygon ) { rb = new QgsRubberBand( qgsInterface->mapCanvas(), true ); } else { rb = new QgsRubberBand( qgsInterface->mapCanvas(), te->conflict()->type() ); } rb->setColor( "red" ); rb->setWidth( 4 ); rb->setToGeometry( te->conflict(), layer1 ); rb->show(); mRbErrorMarkers << rb; } disconnect( &progress, SIGNAL( canceled() ), mTest, SLOT( setTestCancelled() ) ); disconnect( mTest, SIGNAL( progress( int ) ), &progress, SLOT( setValue( int ) ) ); mErrorList << errors; } mMarkersVisible = true; mToggleRubberband->setChecked( true ); mErrorListModel->resetModel(); }