5
5
from ui_frmVisual import Ui_Dialog
6
6
import ftools_utils
7
7
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
8
38
9
39
class ValidateDialog ( QDialog , Ui_Dialog ):
10
40
def __init__ (self , iface ):
@@ -31,6 +61,8 @@ def __init__(self, iface):
31
61
self .buttonOk = self .buttonBox_2 .button (QDialogButtonBox .Ok )
32
62
self .progressBar .setValue (0 )
33
63
self .storedScale = self .iface .mapCanvas ().scale ()
64
+ # create marker for error
65
+ self .marker = MarkerErrorGeometry (self .iface .mapCanvas ())
34
66
35
67
def keyPressEvent ( self , e ):
36
68
if ( e .modifiers () == Qt .ControlModifier or \
@@ -64,6 +96,7 @@ def zoomToError(self, curr, prev):
64
96
mc = self .iface .mapCanvas ()
65
97
x = item .data (Qt .UserRole ).toPyObject ().x ()
66
98
y = item .data (Qt .UserRole ).toPyObject ().y ()
99
+ self .marker .setGeom (x , y ) # Set Marker
67
100
mc .zoomToPreviousExtent ()
68
101
scale = mc .scale ()
69
102
rect = QgsRectangle (float (x )- (4.0 / scale ),float (y )- (4.0 / scale ),
@@ -89,6 +122,11 @@ def validate( self, myLayer, mySelection ):
89
122
self .testThread .start ()
90
123
return True
91
124
125
+ def reject (self ):
126
+ # Remove Marker
127
+ self .marker .reset ()
128
+ QDialog .reject (self )
129
+
92
130
def cancelThread ( self ):
93
131
self .testThread .stop ()
94
132
QApplication .restoreOverrideCursor ()
@@ -171,6 +209,8 @@ def check_geometry( self, vlayer ):
171
209
geom = QgsGeometry (feat .geometry ()) # ger reference to geometry
172
210
self .emit (SIGNAL ("runStatus(PyQt_PyObject)" ), nElement )
173
211
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 ())))
175
215
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nFeat )
176
216
return lstErrors
0 commit comments