1
1
/* **************************************************************************
2
- qgsselectedfeature .cpp - selected feature of vertextool
2
+ qgslockedfeature .cpp - locked feature of vertextool
3
3
---------------------
4
4
begin : April 2009
5
5
copyright : (C) 2009 by Richard Kostecky
13
13
* *
14
14
***************************************************************************/
15
15
16
- #include " vertextool/qgsselectedfeature .h"
17
- #include " vertextool/qgsvertexentry .h"
16
+ #include " qgslockedfeature .h"
17
+ #include " qgsvertexeditor .h"
18
18
19
19
#include " qgsfeatureiterator.h"
20
20
#include " qgspoint.h"
32
32
#include " qgsmapcanvas.h"
33
33
34
34
35
- QgsSelectedFeature::QgsSelectedFeature ( QgsFeatureId featureId,
36
- QgsVectorLayer *vlayer ,
37
- QgsMapCanvas *canvas )
35
+ QgsLockedFeature::QgsLockedFeature ( QgsFeatureId featureId,
36
+ QgsVectorLayer *layer ,
37
+ QgsMapCanvas *canvas )
38
38
: mFeatureId( featureId )
39
- , mChangingGeometry( false )
39
+ , mLayer( layer )
40
+ , mCanvas( canvas )
40
41
{
41
- setSelectedFeature ( featureId, vlayer, canvas );
42
+ // signal changing of current layer
43
+ connect ( QgisApp::instance ()->layerTreeView (), &QgsLayerTreeView::currentLayerChanged, this , &QgsLockedFeature::currentLayerChanged );
44
+
45
+ // feature was deleted
46
+ connect ( mLayer , &QgsVectorLayer::featureDeleted, this , &QgsLockedFeature::featureDeleted );
47
+
48
+ // rolling back
49
+ connect ( mLayer , &QgsVectorLayer::beforeRollBack, this , &QgsLockedFeature::beforeRollBack );
50
+
51
+ // geometry was changed
52
+ connect ( mLayer , &QgsVectorLayer::geometryChanged, this , &QgsLockedFeature::geometryChanged );
53
+
54
+ replaceVertexMap ();
42
55
}
43
56
44
- QgsSelectedFeature ::~QgsSelectedFeature ()
57
+ QgsLockedFeature ::~QgsLockedFeature ()
45
58
{
46
59
deleteVertexMap ();
47
60
@@ -61,13 +74,13 @@ QgsSelectedFeature::~QgsSelectedFeature()
61
74
delete mGeometry ;
62
75
}
63
76
64
- void QgsSelectedFeature ::currentLayerChanged ( QgsMapLayer *layer )
77
+ void QgsLockedFeature ::currentLayerChanged ( QgsMapLayer *layer )
65
78
{
66
79
if ( layer == mLayer )
67
80
deleteLater ();
68
81
}
69
82
70
- void QgsSelectedFeature ::updateGeometry ( const QgsGeometry *geom )
83
+ void QgsLockedFeature ::updateGeometry ( const QgsGeometry *geom )
71
84
{
72
85
delete mGeometry ;
73
86
@@ -86,68 +99,40 @@ void QgsSelectedFeature::updateGeometry( const QgsGeometry *geom )
86
99
}
87
100
}
88
101
89
- void QgsSelectedFeature::setSelectedFeature ( QgsFeatureId featureId, QgsVectorLayer *layer, QgsMapCanvas *canvas )
90
- {
91
- mFeatureId = featureId;
92
- mLayer = layer;
93
- mCanvas = canvas;
94
-
95
- delete mGeometry ;
96
- mGeometry = nullptr ;
97
-
98
- // signal changing of current layer
99
- connect ( QgisApp::instance ()->layerTreeView (), &QgsLayerTreeView::currentLayerChanged, this , &QgsSelectedFeature::currentLayerChanged );
100
-
101
- // feature was deleted
102
- connect ( mLayer , &QgsVectorLayer::featureDeleted, this , &QgsSelectedFeature::featureDeleted );
103
-
104
- // rolling back
105
- connect ( mLayer , &QgsVectorLayer::beforeRollBack, this , &QgsSelectedFeature::beforeRollBack );
106
-
107
- // projection or extents changed
108
- connect ( canvas, &QgsMapCanvas::destinationCrsChanged, this , &QgsSelectedFeature::updateVertexMarkersPosition );
109
- connect ( canvas, &QgsMapCanvas::extentsChanged, this , &QgsSelectedFeature::updateVertexMarkersPosition );
110
-
111
- // geometry was changed
112
- connect ( mLayer , &QgsVectorLayer::geometryChanged, this , &QgsSelectedFeature::geometryChanged );
113
-
114
- replaceVertexMap ();
115
- }
116
-
117
- void QgsSelectedFeature::beforeRollBack ()
102
+ void QgsLockedFeature::beforeRollBack ()
118
103
{
119
- disconnect ( mLayer , &QgsVectorLayer::geometryChanged, this , &QgsSelectedFeature ::geometryChanged );
104
+ disconnect ( mLayer , &QgsVectorLayer::geometryChanged, this , &QgsLockedFeature ::geometryChanged );
120
105
deleteVertexMap ();
121
106
}
122
107
123
- void QgsSelectedFeature ::beginGeometryChange ()
108
+ void QgsLockedFeature ::beginGeometryChange ()
124
109
{
125
110
Q_ASSERT ( !mChangingGeometry );
126
111
mChangingGeometry = true ;
127
112
128
- disconnect ( mLayer , &QgsVectorLayer::geometryChanged, this , &QgsSelectedFeature ::geometryChanged );
113
+ disconnect ( mLayer , &QgsVectorLayer::geometryChanged, this , &QgsLockedFeature ::geometryChanged );
129
114
}
130
115
131
- void QgsSelectedFeature ::endGeometryChange ()
116
+ void QgsLockedFeature ::endGeometryChange ()
132
117
{
133
118
Q_ASSERT ( mChangingGeometry );
134
119
mChangingGeometry = false ;
135
120
136
- connect ( mLayer , &QgsVectorLayer::geometryChanged, this , &QgsSelectedFeature ::geometryChanged );
121
+ connect ( mLayer , &QgsVectorLayer::geometryChanged, this , &QgsLockedFeature ::geometryChanged );
137
122
}
138
123
139
- void QgsSelectedFeature ::canvasLayersChanged ()
124
+ void QgsLockedFeature ::canvasLayersChanged ()
140
125
{
141
126
currentLayerChanged ( mCanvas ->currentLayer () );
142
127
}
143
128
144
- void QgsSelectedFeature ::featureDeleted ( QgsFeatureId fid )
129
+ void QgsLockedFeature ::featureDeleted ( QgsFeatureId fid )
145
130
{
146
131
if ( fid == mFeatureId )
147
132
deleteLater ();
148
133
}
149
134
150
- void QgsSelectedFeature ::geometryChanged ( QgsFeatureId fid, const QgsGeometry &geom )
135
+ void QgsLockedFeature ::geometryChanged ( QgsFeatureId fid, const QgsGeometry &geom )
151
136
{
152
137
QgsDebugCall;
153
138
@@ -159,7 +144,7 @@ void QgsSelectedFeature::geometryChanged( QgsFeatureId fid, const QgsGeometry &g
159
144
replaceVertexMap ();
160
145
}
161
146
162
- void QgsSelectedFeature ::validateGeometry ( QgsGeometry *g )
147
+ void QgsLockedFeature ::validateGeometry ( QgsGeometry *g )
163
148
{
164
149
QgsSettings settings;
165
150
if ( settings.value ( QStringLiteral ( " qgis/digitizing/validate_geometries" ), 1 ).toInt () == 0 )
@@ -190,15 +175,15 @@ void QgsSelectedFeature::validateGeometry( QgsGeometry *g )
190
175
if ( settings.value ( QStringLiteral ( " qgis/digitizing/validate_geometries" ), 1 ).toInt () == 2 )
191
176
method = QgsGeometry::ValidatorGeos;
192
177
mValidator = new QgsGeometryValidator ( *g, nullptr , method );
193
- connect ( mValidator , &QgsGeometryValidator::errorFound, this , &QgsSelectedFeature ::addError );
194
- connect ( mValidator , &QThread::finished, this , &QgsSelectedFeature ::validationFinished );
178
+ connect ( mValidator , &QgsGeometryValidator::errorFound, this , &QgsLockedFeature ::addError );
179
+ connect ( mValidator , &QThread::finished, this , &QgsLockedFeature ::validationFinished );
195
180
mValidator ->start ();
196
181
197
182
QgsStatusBar *sb = QgisApp::instance ()->statusBarIface ();
198
183
sb->showMessage ( tr ( " Validation started." ) );
199
184
}
200
185
201
- void QgsSelectedFeature ::addError ( QgsGeometry::Error e )
186
+ void QgsLockedFeature ::addError ( QgsGeometry::Error e )
202
187
{
203
188
mGeomErrors << e;
204
189
if ( !mTip .isEmpty () )
@@ -223,13 +208,13 @@ void QgsSelectedFeature::addError( QgsGeometry::Error e )
223
208
sb->setToolTip ( mTip );
224
209
}
225
210
226
- void QgsSelectedFeature ::validationFinished ()
211
+ void QgsLockedFeature ::validationFinished ()
227
212
{
228
213
QgsStatusBar *sb = QgisApp::instance ()->statusBarIface ();
229
214
sb->showMessage ( tr ( " Validation finished (%n error(s) found)." , " number of geometry errors" , mGeomErrorMarkers .size () ) );
230
215
}
231
216
232
- void QgsSelectedFeature ::replaceVertexMap ()
217
+ void QgsLockedFeature ::replaceVertexMap ()
233
218
{
234
219
// delete old map
235
220
deleteVertexMap ();
@@ -243,7 +228,7 @@ void QgsSelectedFeature::replaceVertexMap()
243
228
emit vertexMapChanged ();
244
229
}
245
230
246
- void QgsSelectedFeature ::deleteVertexMap ()
231
+ void QgsLockedFeature ::deleteVertexMap ()
247
232
{
248
233
Q_FOREACH ( QgsVertexEntry *entry, mVertexMap )
249
234
{
@@ -253,18 +238,18 @@ void QgsSelectedFeature::deleteVertexMap()
253
238
mVertexMap .clear ();
254
239
}
255
240
256
- bool QgsSelectedFeature ::isSelected ( int vertexNr )
241
+ bool QgsLockedFeature ::isSelected ( int vertexNr )
257
242
{
258
243
return mVertexMap .at ( vertexNr )->isSelected ();
259
244
}
260
245
261
- QgsGeometry *QgsSelectedFeature ::geometry ()
246
+ QgsGeometry *QgsLockedFeature ::geometry ()
262
247
{
263
248
Q_ASSERT ( mGeometry );
264
249
return mGeometry ;
265
250
}
266
251
267
- void QgsSelectedFeature ::createVertexMap ()
252
+ void QgsLockedFeature ::createVertexMap ()
268
253
{
269
254
270
255
if ( !mGeometry )
@@ -288,22 +273,22 @@ void QgsSelectedFeature::createVertexMap()
288
273
QgsPoint pt;
289
274
while ( geom->nextVertex ( vertexId, pt ) )
290
275
{
291
- mVertexMap .append ( new QgsVertexEntry ( mCanvas , mLayer , pt, vertexId, tr ( " ring %1, vertex %2 " ). arg ( vertexId. ring ). arg ( vertexId. vertex ) ) );
276
+ mVertexMap .append ( new QgsVertexEntry ( pt, vertexId ) );
292
277
}
293
278
}
294
279
295
- void QgsSelectedFeature ::selectVertex ( int vertexNr )
280
+ void QgsLockedFeature ::selectVertex ( int vertexNr )
296
281
{
297
282
if ( vertexNr < 0 || vertexNr >= mVertexMap .size () )
298
283
return ;
299
284
300
285
QgsVertexEntry *entry = mVertexMap .at ( vertexNr );
301
- entry->setSelected ();
286
+ entry->setSelected ( true );
302
287
303
288
emit selectionChanged ();
304
289
}
305
290
306
- void QgsSelectedFeature ::deselectVertex ( int vertexNr )
291
+ void QgsLockedFeature ::deselectVertex ( int vertexNr )
307
292
{
308
293
if ( vertexNr < 0 || vertexNr >= mVertexMap .size () )
309
294
return ;
@@ -314,7 +299,7 @@ void QgsSelectedFeature::deselectVertex( int vertexNr )
314
299
emit selectionChanged ();
315
300
}
316
301
317
- void QgsSelectedFeature ::deselectAllVertices ()
302
+ void QgsLockedFeature ::deselectAllVertices ()
318
303
{
319
304
for ( int i = 0 ; i < mVertexMap .size (); i++ )
320
305
{
@@ -323,7 +308,7 @@ void QgsSelectedFeature::deselectAllVertices()
323
308
emit selectionChanged ();
324
309
}
325
310
326
- void QgsSelectedFeature ::invertVertexSelection ( int vertexNr )
311
+ void QgsLockedFeature ::invertVertexSelection ( int vertexNr )
327
312
{
328
313
if ( vertexNr < 0 || vertexNr >= mVertexMap .size () )
329
314
return ;
@@ -336,7 +321,7 @@ void QgsSelectedFeature::invertVertexSelection( int vertexNr )
336
321
emit selectionChanged ();
337
322
}
338
323
339
- void QgsSelectedFeature ::invertVertexSelection ( const QVector<int > &vertexIndices )
324
+ void QgsLockedFeature ::invertVertexSelection ( const QVector<int > &vertexIndices )
340
325
{
341
326
Q_FOREACH ( int index , vertexIndices )
342
327
{
@@ -349,25 +334,17 @@ void QgsSelectedFeature::invertVertexSelection( const QVector<int> &vertexIndice
349
334
emit selectionChanged ();
350
335
}
351
336
352
- void QgsSelectedFeature::updateVertexMarkersPosition ()
353
- {
354
- Q_FOREACH ( QgsVertexEntry *vertexEntry, mVertexMap )
355
- {
356
- vertexEntry->placeMarker ();
357
- }
358
- }
359
-
360
- QgsFeatureId QgsSelectedFeature::featureId ()
337
+ QgsFeatureId QgsLockedFeature::featureId ()
361
338
{
362
339
return mFeatureId ;
363
340
}
364
341
365
- QList<QgsVertexEntry *> &QgsSelectedFeature ::vertexMap ()
342
+ QList<QgsVertexEntry *> &QgsLockedFeature ::vertexMap ()
366
343
{
367
344
return mVertexMap ;
368
345
}
369
346
370
- QgsVectorLayer *QgsSelectedFeature ::layer ()
347
+ QgsVectorLayer *QgsLockedFeature ::layer ()
371
348
{
372
349
return mLayer ;
373
350
}
0 commit comments