Skip to content

Commit 88ef921

Browse files
committed
Add topology checks to configuration interface
1 parent d85c0a7 commit 88ef921

File tree

2 files changed

+93
-5
lines changed

2 files changed

+93
-5
lines changed

src/app/qgsvectorlayerproperties.cpp

+17-5
Original file line numberDiff line numberDiff line change
@@ -412,17 +412,29 @@ QgsVectorLayerProperties::QgsVectorLayerProperties(
412412

413413
mPrecisionUnitsLabel->setText( QStringLiteral( "[%1]" ).arg( QgsUnitTypes::toAbbreviatedString( mLayer->crs().mapUnits() ) ) );
414414

415-
QLayout *layout = new QVBoxLayout();
416-
const QList<QgsGeometryCheckFactory *> factories = QgsAnalysis::instance()->geometryCheckRegistry()->geometryCheckFactories( mLayer, QgsGeometryCheck::Flag::SingleGeometryCheck );
415+
QLayout *geometryCheckLayout = new QVBoxLayout();
416+
const QList<QgsGeometryCheckFactory *> geometryCheckFactories = QgsAnalysis::instance()->geometryCheckRegistry()->geometryCheckFactories( mLayer, QgsGeometryCheck::Flag::SingleGeometryCheck );
417417
const QStringList activeChecks = mLayer->geometryOptions()->geometryChecks();
418-
for ( const QgsGeometryCheckFactory *factory : factories )
418+
for ( const QgsGeometryCheckFactory *factory : geometryCheckFactories )
419419
{
420420
QCheckBox *cb = new QCheckBox( factory->description() );
421421
cb->setChecked( activeChecks.contains( factory->id() ) );
422422
mGeometryCheckFactoriesGroupBoxes.insert( cb, factory->id() );
423-
layout->addWidget( cb );
423+
geometryCheckLayout->addWidget( cb );
424424
}
425-
mGeometryValidationGroupBox->setLayout( layout );
425+
mGeometryValidationGroupBox->setLayout( geometryCheckLayout );
426+
427+
QLayout *topologyCheckLayout = new QVBoxLayout();
428+
const QList<QgsGeometryCheckFactory *> topologyCheckFactories = QgsAnalysis::instance()->geometryCheckRegistry()->geometryCheckFactories( mLayer, QgsGeometryCheck::Flag::SingleLayerTopologyCheck );
429+
430+
for ( const QgsGeometryCheckFactory *factory : topologyCheckFactories )
431+
{
432+
QCheckBox *cb = new QCheckBox( factory->description() );
433+
cb->setChecked( activeChecks.contains( factory->id() ) );
434+
mGeometryCheckFactoriesGroupBoxes.insert( cb, factory->id() );
435+
topologyCheckLayout->addWidget( cb );
436+
}
437+
mTopologyChecksGroupBox->setLayout( topologyCheckLayout );
426438
}
427439
else
428440
{

src/ui/qgsvectorlayerpropertiesbase.ui

+76
Original file line numberDiff line numberDiff line change
@@ -2415,6 +2415,82 @@ border-radius: 2px;</string>
24152415
<property name="title">
24162416
<string>Geometry validation</string>
24172417
</property>
2418+
<widget class="QWidget" name="scrollAreaWidgetContents_2">
2419+
<property name="geometry">
2420+
<rect>
2421+
<x>0</x>
2422+
<y>0</y>
2423+
<width>651</width>
2424+
<height>804</height>
2425+
</rect>
2426+
</property>
2427+
<layout class="QVBoxLayout" name="verticalLayout_20">
2428+
<item>
2429+
<widget class="QGroupBox" name="mGeometryAutoFixesGroupBox">
2430+
<property name="title">
2431+
<string>Automatic Fixes</string>
2432+
</property>
2433+
<layout class="QFormLayout" name="formLayout">
2434+
<item row="2" column="0">
2435+
<widget class="QLabel" name="label">
2436+
<property name="toolTip">
2437+
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The geometry precision defines the maximum precision to of geometry coordinates that should be stored on this layer. A snap to grid algorithm will be applied on every geometry entering this layer, resulting in coordinates being rounded to multiples of this value. The operation is applied in this layer's coordinate reference system.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
2438+
</property>
2439+
<property name="text">
2440+
<string>Geometry precision</string>
2441+
</property>
2442+
</widget>
2443+
</item>
2444+
<item row="0" column="0" colspan="2">
2445+
<widget class="QCheckBox" name="mRemoveDuplicateNodesCheckbox">
2446+
<property name="text">
2447+
<string>Remove duplicate nodes</string>
2448+
</property>
2449+
</widget>
2450+
</item>
2451+
<item row="2" column="1">
2452+
<layout class="QHBoxLayout" name="horizontalLayout_11" stretch="0,0">
2453+
<item>
2454+
<widget class="QLabel" name="mPrecisionUnitsLabel">
2455+
<property name="text">
2456+
<string>[Units]</string>
2457+
</property>
2458+
</widget>
2459+
</item>
2460+
<item>
2461+
<widget class="QLineEdit" name="mGeometryPrecisionLineEdit">
2462+
<property name="inputMethodHints">
2463+
<set>Qt::ImhFormattedNumbersOnly</set>
2464+
</property>
2465+
<property name="text">
2466+
<string/>
2467+
</property>
2468+
<property name="placeholderText">
2469+
<string>[No precision restriction]</string>
2470+
</property>
2471+
</widget>
2472+
</item>
2473+
</layout>
2474+
</item>
2475+
</layout>
2476+
</widget>
2477+
</item>
2478+
<item>
2479+
<widget class="QGroupBox" name="mGeometryValidationGroupBox">
2480+
<property name="title">
2481+
<string>Geometry checks</string>
2482+
</property>
2483+
</widget>
2484+
</item>
2485+
<item>
2486+
<widget class="QGroupBox" name="mTopologyChecksGroupBox">
2487+
<property name="title">
2488+
<string>Topology checks</string>
2489+
</property>
2490+
</widget>
2491+
</item>
2492+
</layout>
2493+
</widget>
24182494
</widget>
24192495
</item>
24202496
</layout>

0 commit comments

Comments
 (0)