Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
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();
}