@@ -101,30 +101,25 @@ QgsGrassProvider::QgsGrassProvider(QString const & uri)
101
101
mLayerType = CENTROID;
102
102
mGrassType = GV_CENTROID;
103
103
} else {
104
- // Get field number
105
- int pos = mLayer .find (' _' );
106
-
107
- if ( pos == -1 ) {
104
+ mLayerField = grassLayer ( mLayer );
105
+ if ( mLayerField == -1 ) {
108
106
std::cerr << " Invalid layer name, no underscore found: " << mLayer .toLocal8Bit ().data () << std::endl;
109
107
return ;
110
- }
111
-
112
- mLayerField = mLayer .left (pos).toInt ();
108
+ }
113
109
114
- QString ts = mLayer .right ( mLayer .length () - pos - 1 );
115
- if ( ts.compare (" point" ) == 0 ) {
110
+ mGrassType = grassLayerType ( mLayer );
111
+
112
+ if ( mGrassType == GV_POINT ) {
116
113
mLayerType = POINT;
117
- mGrassType = GV_POINT; // ?! centroids may be points
118
- } else if ( ts.compare (" line" ) == 0 ) {
114
+ } else if ( mGrassType == GV_LINES ) {
119
115
mLayerType = LINE;
120
- mGrassType = GV_LINE | GV_BOUNDARY;
121
- } else if ( ts.compare (" polygon" ) == 0 ) {
116
+ } else if ( mGrassType == GV_AREA ) {
122
117
mLayerType = POLYGON;
123
- mGrassType = GV_AREA;
124
118
} else {
125
- std::cerr << " Invalid layer name, wrong type: " << ts .toLocal8Bit ().data () << std::endl;
119
+ std::cerr << " Invalid layer name, wrong type: " << mLayer .toLocal8Bit ().data () << std::endl;
126
120
return ;
127
121
}
122
+
128
123
}
129
124
#ifdef QGISDEBUG
130
125
std::cerr << " mLayerField: " << mLayerField << std::endl;
@@ -1273,6 +1268,38 @@ int QgsGrassProvider::grassLayer()
1273
1268
return mLayerField ;
1274
1269
}
1275
1270
1271
+ int QgsGrassProvider::grassLayer (QString name)
1272
+ {
1273
+ // Get field number
1274
+ int pos = name.find (' _' );
1275
+
1276
+ if ( pos == -1 ) {
1277
+ return -1 ;
1278
+ }
1279
+
1280
+ return name.left (pos).toInt ();
1281
+ }
1282
+
1283
+ int QgsGrassProvider::grassLayerType (QString name)
1284
+ {
1285
+ int pos = name.find (' _' );
1286
+
1287
+ if ( pos == -1 ) {
1288
+ return -1 ;
1289
+ }
1290
+
1291
+ QString ts = name.right ( name.length () - pos - 1 );
1292
+ if ( ts.compare (" point" ) == 0 ) {
1293
+ return GV_POINT; // ?! centroids may be points
1294
+ } else if ( ts.compare (" line" ) == 0 ) {
1295
+ return GV_LINES;
1296
+ } else if ( ts.compare (" polygon" ) == 0 ) {
1297
+ return GV_AREA;
1298
+ }
1299
+
1300
+ return -1 ;
1301
+ }
1302
+
1276
1303
// ----------------------------------------- Edit -------------------------------------------------------
1277
1304
1278
1305
bool QgsGrassProvider::isGrassEditable ( void )
0 commit comments