void QgsGeometryCheckerResultTab::highlightError( QgsGeometryCheckError* error ) { if ( !mErrorMap.contains( error ) ) { return; } int row = mErrorMap.value( error ).row(); ui.tableWidgetErrors->setCurrentIndex( ui.tableWidgetErrors->model()->index( row, 0 ) ); highlightErrors( true ); }
QgsGeometryCheckerResultTab::QgsGeometryCheckerResultTab( QgisInterface* iface, QgsGeometryChecker* checker, QgsFeaturePool *featurePool, QTabWidget* tabWidget, QWidget* parent ) : QWidget( parent ) , mTabWidget( tabWidget ) , mIface( iface ) , mChecker( checker ) , mFeaturePool( featurePool ) { ui.setupUi( this ); mErrorCount = 0; mFixedCount = 0; mCloseable = true; mAttribTableDialog = nullptr; for ( int i = 0, n = mFeaturePool->getLayer()->fields().count(); i < n; ++i ) { ui.comboBoxMergeAttribute->addItem( mFeaturePool->getLayer()->fields().at( i ).name() ); } connect( checker, SIGNAL( errorAdded( QgsGeometryCheckError* ) ), this, SLOT( addError( QgsGeometryCheckError* ) ) ); connect( checker, SIGNAL( errorUpdated( QgsGeometryCheckError*, bool ) ), this, SLOT( updateError( QgsGeometryCheckError*, bool ) ) ); connect( ui.comboBoxMergeAttribute, SIGNAL( currentIndexChanged( int ) ), checker, SLOT( setMergeAttributeIndex( int ) ) ); connect( ui.tableWidgetErrors->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SLOT( onSelectionChanged( QItemSelection, QItemSelection ) ) ); connect( ui.buttonGroupSelectAction, SIGNAL( buttonClicked( int ) ), this, SLOT( highlightErrors() ) ); connect( ui.pushButtonOpenAttributeTable, SIGNAL( clicked() ), this, SLOT( openAttributeTable() ) ); connect( ui.pushButtonFixWithDefault, SIGNAL( clicked() ), this, SLOT( fixErrorsWithDefault() ) ); connect( ui.pushButtonFixWithPrompt, SIGNAL( clicked() ), this, SLOT( fixErrorsWithPrompt() ) ); connect( ui.pushButtonErrorResolutionSettings, SIGNAL( clicked() ), this, SLOT( setDefaultResolutionMethods() ) ); connect( ui.checkBoxHighlight, SIGNAL( clicked() ), this, SLOT( highlightErrors() ) ); connect( QgsMapLayerRegistry::instance(), SIGNAL( layersWillBeRemoved( QStringList ) ), this, SLOT( checkRemovedLayer( QStringList ) ) ); connect( ui.pushButtonExport, SIGNAL( clicked() ), this, SLOT( exportErrors() ) ); if (( mFeaturePool->getLayer()->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeGeometries ) == 0 ) { ui.pushButtonFixWithDefault->setEnabled( false ); ui.pushButtonFixWithPrompt->setEnabled( false ); } ui.progressBarFixErrors->setVisible( false ); ui.tableWidgetErrors->horizontalHeader()->setSortIndicator( 0, Qt::AscendingOrder ); // Not sure why, but this is needed... ui.tableWidgetErrors->setSortingEnabled( true ); ui.tableWidgetErrors->setSortingEnabled( false ); }