Skip to content

Commit 8781ff4

Browse files
author
cfarmer
committed
adds marker at location of geometry errors
git-svn-id: http://svn.osgeo.org/qgis/trunk@15289 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 455de1e commit 8781ff4

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

python/plugins/fTools/tools/doValidate.py

+41-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,36 @@
55
from ui_frmVisual import Ui_Dialog
66
import ftools_utils
77
import math
8+
from qgis import gui
9+
10+
class MarkerErrorGeometry():
11+
def __init__(self, mapCanvas):
12+
self.__canvas = mapCanvas
13+
self.__marker = None
14+
15+
def __del__(self):
16+
self.reset()
17+
18+
def __createMarker(self, point):
19+
self.__marker = gui.QgsVertexMarker(self.__canvas)
20+
self.__marker.setCenter(point)
21+
self.__marker.setIconType(gui.QgsVertexMarker.ICON_X)
22+
self.__marker.setPenWidth(3)
23+
24+
def setGeom(self, x, y):
25+
if not self.__marker is None:
26+
self.reset()
27+
point = QgsPoint(x, y)
28+
if self.__marker is None:
29+
self.__createMarker(point)
30+
else:
31+
self.__marker.setCenter(point)
32+
33+
def reset(self):
34+
if not self.__marker is None:
35+
self.__canvas.scene().removeItem(self.__marker)
36+
del self.__marker
37+
self.__marker = None
838

939
class ValidateDialog( QDialog, Ui_Dialog ):
1040
def __init__(self, iface):
@@ -31,6 +61,8 @@ def __init__(self, iface):
3161
self.buttonOk = self.buttonBox_2.button(QDialogButtonBox.Ok)
3262
self.progressBar.setValue(0)
3363
self.storedScale = self.iface.mapCanvas().scale()
64+
# create marker for error
65+
self.marker = MarkerErrorGeometry(self.iface.mapCanvas())
3466

3567
def keyPressEvent( self, e ):
3668
if ( e.modifiers() == Qt.ControlModifier or \
@@ -64,6 +96,7 @@ def zoomToError(self, curr, prev):
6496
mc = self.iface.mapCanvas()
6597
x = item.data(Qt.UserRole).toPyObject().x()
6698
y = item.data(Qt.UserRole).toPyObject().y()
99+
self.marker.setGeom(x, y) # Set Marker
67100
mc.zoomToPreviousExtent()
68101
scale = mc.scale()
69102
rect = QgsRectangle(float(x)-(4.0/scale),float(y)-(4.0/scale),
@@ -89,6 +122,11 @@ def validate( self, myLayer, mySelection ):
89122
self.testThread.start()
90123
return True
91124

125+
def reject(self):
126+
# Remove Marker
127+
self.marker.reset()
128+
QDialog.reject(self)
129+
92130
def cancelThread( self ):
93131
self.testThread.stop()
94132
QApplication.restoreOverrideCursor()
@@ -171,6 +209,8 @@ def check_geometry( self, vlayer ):
171209
geom = QgsGeometry(feat.geometry()) # ger reference to geometry
172210
self.emit(SIGNAL("runStatus(PyQt_PyObject)"), nElement)
173211
nElement += 1
174-
lstErrors.append((feat.id(), list(geom.validateGeometry())))
212+
# Check Add error
213+
if not (geom.isGeosEmpty() or geom.isGeosValid() ) :
214+
lstErrors.append((feat.id(), list(geom.validateGeometry())))
175215
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nFeat )
176216
return lstErrors

0 commit comments

Comments
 (0)