@@ -101,7 +101,8 @@ QgsVectorFileWriter::QgsVectorFileWriter(
101
101
const QStringList &datasourceOptions,
102
102
const QStringList &layerOptions,
103
103
QString *newFilename,
104
- SymbologyExport symbologyExport
104
+ SymbologyExport symbologyExport,
105
+ QString *newLayer
105
106
)
106
107
: mError( NoError )
107
108
, mWkbType( geometryType )
@@ -110,7 +111,7 @@ QgsVectorFileWriter::QgsVectorFileWriter(
110
111
{
111
112
init ( vectorFileName, fileEncoding, fields, geometryType,
112
113
srs, driverName, datasourceOptions, layerOptions, newFilename, nullptr ,
113
- QString (), CreateOrOverwriteFile );
114
+ QString (), CreateOrOverwriteFile, newLayer );
114
115
}
115
116
116
117
QgsVectorFileWriter::QgsVectorFileWriter ( const QString &vectorFileName,
@@ -125,15 +126,16 @@ QgsVectorFileWriter::QgsVectorFileWriter( const QString &vectorFileName,
125
126
QgsVectorFileWriter::SymbologyExport symbologyExport,
126
127
FieldValueConverter *fieldValueConverter,
127
128
const QString &layerName,
128
- ActionOnExistingFile action )
129
+ ActionOnExistingFile action,
130
+ QString *newLayer )
129
131
: mError( NoError )
130
132
, mWkbType( geometryType )
131
133
, mSymbologyExport( symbologyExport )
132
134
, mSymbologyScale( 1.0 )
133
135
{
134
136
init ( vectorFileName, fileEncoding, fields, geometryType, srs, driverName,
135
137
datasourceOptions, layerOptions, newFilename, fieldValueConverter,
136
- layerName, action );
138
+ layerName, action, newLayer );
137
139
}
138
140
139
141
bool QgsVectorFileWriter::supportsFeatureStyles ( const QString &driverName )
@@ -164,7 +166,8 @@ void QgsVectorFileWriter::init( QString vectorFileName,
164
166
QString *newFilename,
165
167
FieldValueConverter *fieldValueConverter,
166
168
const QString &layerNameIn,
167
- ActionOnExistingFile action )
169
+ ActionOnExistingFile action,
170
+ QString *newLayer )
168
171
{
169
172
mRenderContext .setRendererScale ( mSymbologyScale );
170
173
@@ -419,6 +422,8 @@ void QgsVectorFileWriter::init( QString vectorFileName,
419
422
else if ( action == CreateOrOverwriteFile || action == CreateOrOverwriteLayer )
420
423
{
421
424
mLayer = OGR_DS_CreateLayer ( mDS .get (), layerName.toUtf8 ().constData (), mOgrRef , wkbType, options );
425
+ if ( newLayer )
426
+ *newLayer = OGR_L_GetName ( mLayer );
422
427
}
423
428
else
424
429
{
@@ -2338,7 +2343,8 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer *layer,
2338
2343
bool forceMulti,
2339
2344
bool includeZ,
2340
2345
const QgsAttributeList &attributes,
2341
- FieldValueConverter *fieldValueConverter )
2346
+ FieldValueConverter *fieldValueConverter,
2347
+ QString *newLayer )
2342
2348
{
2343
2349
QgsCoordinateTransform ct;
2344
2350
if ( destCRS.isValid () && layer )
@@ -2352,7 +2358,7 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer *layer,
2352
2358
errorMessage, datasourceOptions, layerOptions, skipAttributeCreation,
2353
2359
newFilename, symbologyExport, symbologyScale, filterExtent,
2354
2360
overrideGeometryType, forceMulti, includeZ, attributes,
2355
- fieldValueConverter );
2361
+ fieldValueConverter, newLayer );
2356
2362
return error;
2357
2363
}
2358
2364
@@ -2374,7 +2380,8 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat( QgsVe
2374
2380
bool forceMulti,
2375
2381
bool includeZ,
2376
2382
const QgsAttributeList &attributes,
2377
- FieldValueConverter *fieldValueConverter )
2383
+ FieldValueConverter *fieldValueConverter,
2384
+ QString *newLayer )
2378
2385
{
2379
2386
SaveVectorOptions options;
2380
2387
options.fileEncoding = fileEncoding;
@@ -2393,7 +2400,7 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat( QgsVe
2393
2400
options.includeZ = includeZ;
2394
2401
options.attributes = attributes;
2395
2402
options.fieldValueConverter = fieldValueConverter;
2396
- return writeAsVectorFormat ( layer, fileName, options, newFilename, errorMessage );
2403
+ return writeAsVectorFormat ( layer, fileName, options, newFilename, errorMessage, newLayer );
2397
2404
}
2398
2405
2399
2406
@@ -2544,7 +2551,7 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::prepareWriteAsVectorFormat
2544
2551
return NoError;
2545
2552
}
2546
2553
2547
- QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat ( PreparedWriterDetails &details, const QString &fileName, const QgsVectorFileWriter::SaveVectorOptions &options, QString *newFilename, QString *errorMessage )
2554
+ QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat ( PreparedWriterDetails &details, const QString &fileName, const QgsVectorFileWriter::SaveVectorOptions &options, QString *newFilename, QString *errorMessage, QString *newLayer )
2548
2555
{
2549
2556
2550
2557
QgsWkbTypes::Type destWkbType = details.destWkbType ;
@@ -2614,7 +2621,8 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat( Prepa
2614
2621
options.symbologyExport ,
2615
2622
options.fieldValueConverter ,
2616
2623
options.layerName ,
2617
- options.actionOnExistingFile );
2624
+ options.actionOnExistingFile ,
2625
+ newLayer );
2618
2626
writer->setSymbologyScale ( options.symbologyScale );
2619
2627
2620
2628
if ( newFilename )
@@ -2765,14 +2773,15 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer *layer,
2765
2773
const QString &fileName,
2766
2774
const SaveVectorOptions &options,
2767
2775
QString *newFilename,
2768
- QString *errorMessage )
2776
+ QString *errorMessage,
2777
+ QString *newLayer )
2769
2778
{
2770
2779
QgsVectorFileWriter::PreparedWriterDetails details;
2771
2780
WriterError err = prepareWriteAsVectorFormat ( layer, options, details );
2772
2781
if ( err != NoError )
2773
2782
return err;
2774
2783
2775
- return writeAsVectorFormat ( details, fileName, options, newFilename, errorMessage );
2784
+ return writeAsVectorFormat ( details, fileName, options, newFilename, errorMessage, newLayer );
2776
2785
}
2777
2786
2778
2787
0 commit comments