@@ -16,6 +16,8 @@ def __init__( self, iface, function ):
16
16
self .manageGui ()
17
17
self .cancel_close = self .buttonBox_2 .button ( QDialogButtonBox .Close )
18
18
self .progressBar .setValue ( 0 )
19
+ self .partProgressBar .setValue ( 0 )
20
+ self .partProgressBar .setEnabled ( False )
19
21
20
22
def keyPressEvent ( self , e ):
21
23
'''
@@ -111,6 +113,8 @@ def visual( self, myLayer, myField, mySelection ):
111
113
QObject .connect ( self .testThread , SIGNAL ( "runFinished(PyQt_PyObject)" ), self .runFinishedFromThread )
112
114
QObject .connect ( self .testThread , SIGNAL ( "runStatus(PyQt_PyObject)" ), self .runStatusFromThread )
113
115
QObject .connect ( self .testThread , SIGNAL ( "runRange(PyQt_PyObject)" ), self .runRangeFromThread )
116
+ QObject .connect ( self .testThread , SIGNAL ( "runPartRange(PyQt_PyObject)" ), self .runPartRangeFromThread )
117
+ QObject .connect ( self .testThread , SIGNAL ( "runPartStatus(PyQt_PyObject)" ), self .runPartStatusFromThread )
114
118
self .cancel_close .setText ( "Cancel" )
115
119
QObject .connect ( self .cancel_close , SIGNAL ( "clicked()" ), self .cancelThread )
116
120
self .testThread .start ()
@@ -154,6 +158,16 @@ def runStatusFromThread( self, status ):
154
158
155
159
def runRangeFromThread ( self , range_vals ):
156
160
self .progressBar .setRange ( range_vals [ 0 ], range_vals [ 1 ] )
161
+
162
+ def runPartStatusFromThread ( self , status ):
163
+ self .partProgressBar .setValue ( status )
164
+ if status >= self .part_max :
165
+ self .partProgressBar .setEnabled ( False )
166
+
167
+ def runPartRangeFromThread ( self , range_vals ):
168
+ self .part_max = range_vals [ 1 ]
169
+ self .partProgressBar .setEnabled ( True )
170
+ self .partProgressBar .setRange ( range_vals [ 0 ], range_vals [ 1 ] )
157
171
158
172
class visualThread ( QThread ):
159
173
def __init__ ( self , parentThread , parentObject , function , vlayer , myField , mySelection ):
@@ -431,6 +445,7 @@ def check_geometry( self, vlayer ):
431
445
if not self .isCorrectOrientation ( geom ):
432
446
lstErrors .append ( self .tr ( "Feature %1 has incorrect node ordering" ).arg ( unicode ( feat .id () ) ) )
433
447
count += 1
448
+ self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nFeat )
434
449
return ( lstErrors , count )
435
450
436
451
def isHoleNested ( self , polygon ):
@@ -459,16 +474,29 @@ def isPolygonClosed( self, polygon ):
459
474
return True
460
475
461
476
def isSelfIntersecting ( self , polygon ):
477
+ cPart = 0
478
+ for h in polygon :
479
+ cPart += len (h )
480
+
481
+ self .emit ( SIGNAL ( "runPartRange(PyQt_PyObject)" ), ( 0 , cPart ) )
482
+
483
+ nPart = 0
462
484
for h in polygon :
463
- count = 0
464
- size = range ( 0 , len ( h ) - 1 )
465
- for i in size :
485
+ for i in range ( 0 , len ( h ) - 1 ):
486
+ self . emit ( SIGNAL ( "runPartStatus(PyQt_PyObject)" ), nPart )
487
+
466
488
count = 0
467
- for j in size :
489
+ for j in range ( i + 1 , len ( h ) - 1 ) :
468
490
if QgsGeometry ().fromPolyline ( [ h [ i ], h [ i + 1 ] ] ).intersects ( QgsGeometry ().fromPolyline ( [ h [ j ], h [ j + 1 ] ] ) ):
469
491
count += 1
470
- if count > 3 :
492
+ if count > 2 :
493
+ self .emit ( SIGNAL ( "runPartStatus(PyQt_PyObject)" ), cPart )
471
494
return True
495
+
496
+ nPart += 1
497
+
498
+ self .emit ( SIGNAL ( "runPartStatus(PyQt_PyObject)" ), cPart )
499
+
472
500
return False
473
501
474
502
def isCorrectOrientation ( self , polygon ):
0 commit comments