QGIS API Documentation 3.43.0-Master (e01d6d7c4c0)
qgsmetadataalgorithms.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsmetadataalgorithms.cpp
3 ---------------------
4 begin : November 2024
5 copyright : (C) 2024 by Alexander Bruy
6 email : alexander dot bruy at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
19
21
22QString QgsCopyLayerMetadataAlgorithm::name() const
23{
24 return QStringLiteral( "copylayermetadata" );
25}
26
27QString QgsCopyLayerMetadataAlgorithm::displayName() const
28{
29 return QObject::tr( "Copy layer metadata" );
30}
31
32QStringList QgsCopyLayerMetadataAlgorithm::tags() const
33{
34 return QObject::tr( "change,layer,metadata,qmd" ).split( ',' );
35}
36
37QString QgsCopyLayerMetadataAlgorithm::group() const
38{
39 return QObject::tr( "Metadata tools" );
40}
41
42QString QgsCopyLayerMetadataAlgorithm::groupId() const
43{
44 return QStringLiteral( "metadatatools" );
45}
46
47QString QgsCopyLayerMetadataAlgorithm::shortHelpString() const
48{
49 return QObject::tr( "This algorithm copies metadata from a source layer to a target layer.\n\nAny existing metadata in the target layer will be replaced." );
50}
51
52QString QgsCopyLayerMetadataAlgorithm::shortDescription() const
53{
54 return QObject::tr( "Copies the metadata from one layer to another." );
55}
56
57QgsCopyLayerMetadataAlgorithm *QgsCopyLayerMetadataAlgorithm::createInstance() const
58{
59 return new QgsCopyLayerMetadataAlgorithm();
60}
61
62void QgsCopyLayerMetadataAlgorithm::initAlgorithm( const QVariantMap & )
63{
64 addParameter( new QgsProcessingParameterMapLayer( QStringLiteral( "SOURCE" ), QObject::tr( "Source layer" ) ) );
65 addParameter( new QgsProcessingParameterMapLayer( QStringLiteral( "TARGET" ), QObject::tr( "Target layer" ) ) );
66 addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "DEFAULT" ), QObject::tr( "Save metadata as default" ), false ) );
67 addOutput( new QgsProcessingOutputMapLayer( QStringLiteral( "OUTPUT" ), QObject::tr( "Updated layer" ) ) );
68}
69
70bool QgsCopyLayerMetadataAlgorithm::prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
71{
72 QgsMapLayer *sourceLayer = parameterAsLayer( parameters, QStringLiteral( "SOURCE" ), context );
73 QgsMapLayer *targetLayer = parameterAsLayer( parameters, QStringLiteral( "TARGET" ), context );
74 const bool saveAsDefault = parameterAsBool( parameters, QStringLiteral( "DEFAULT" ), context );
75
76 if ( !sourceLayer )
77 throw QgsProcessingException( QObject::tr( "Invalid source layer" ) );
78
79 if ( !targetLayer )
80 throw QgsProcessingException( QObject::tr( "Invalid target layer" ) );
81
82 mLayerId = targetLayer->id();
83
84 targetLayer->setMetadata( sourceLayer->metadata() );
85 if ( saveAsDefault )
86 {
87 bool ok;
88 targetLayer->saveDefaultMetadata( ok );
89 if ( !ok )
90 {
91 throw QgsProcessingException( QObject::tr( "Failed to save metadata as default metadata." ) );
92 }
93 }
94 return true;
95}
96
97QVariantMap QgsCopyLayerMetadataAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
98{
99 Q_UNUSED( parameters );
100 Q_UNUSED( context );
101
102 QVariantMap results;
103 results.insert( QStringLiteral( "OUTPUT" ), mLayerId );
104 return results;
105}
106
108
109QString QgsApplyLayerMetadataAlgorithm::name() const
110{
111 return QStringLiteral( "setlayermetadata" );
112}
113
114QString QgsApplyLayerMetadataAlgorithm::displayName() const
115{
116 return QObject::tr( "Set layer metadata" );
117}
118
119QStringList QgsApplyLayerMetadataAlgorithm::tags() const
120{
121 return QObject::tr( "change,layer,metadata,qmd" ).split( ',' );
122}
123
124QString QgsApplyLayerMetadataAlgorithm::group() const
125{
126 return QObject::tr( "Metadata tools" );
127}
128
129QString QgsApplyLayerMetadataAlgorithm::groupId() const
130{
131 return QStringLiteral( "metadatatools" );
132}
133
134QString QgsApplyLayerMetadataAlgorithm::shortHelpString() const
135{
136 return QObject::tr( "This algorithm applies the metadata to a layer. The metadata must be defined as QMD file.\n\nAny existing metadata in the layer will be replaced." );
137}
138
139QString QgsApplyLayerMetadataAlgorithm::shortDescription() const
140{
141 return QObject::tr( "Applies the metadata from a QMD file to a layer." );
142}
143
144QgsApplyLayerMetadataAlgorithm *QgsApplyLayerMetadataAlgorithm::createInstance() const
145{
146 return new QgsApplyLayerMetadataAlgorithm();
147}
148
149void QgsApplyLayerMetadataAlgorithm::initAlgorithm( const QVariantMap & )
150{
151 addParameter( new QgsProcessingParameterMapLayer( QStringLiteral( "INPUT" ), QObject::tr( "Layer" ) ) );
152 addParameter( new QgsProcessingParameterFile( QStringLiteral( "METADATA" ), QObject::tr( "Metadata file" ), Qgis::ProcessingFileParameterBehavior::File, QStringLiteral( "qmd" ) ) );
153 addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "DEFAULT" ), QObject::tr( "Save metadata as default" ), false ) );
154 addOutput( new QgsProcessingOutputMapLayer( QStringLiteral( "OUTPUT" ), QObject::tr( "Updated" ) ) );
155}
156
157bool QgsApplyLayerMetadataAlgorithm::prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
158{
159 QgsMapLayer *layer = parameterAsLayer( parameters, QStringLiteral( "INPUT" ), context );
160 const QString metadata = parameterAsFile( parameters, QStringLiteral( "METADATA" ), context );
161 const bool saveAsDefault = parameterAsBool( parameters, QStringLiteral( "DEFAULT" ), context );
162
163 if ( !layer )
164 throw QgsProcessingException( QObject::tr( "Invalid input layer" ) );
165
166 mLayerId = layer->id();
167
168 bool ok = false;
169 const QString msg = layer->loadNamedMetadata( metadata, ok );
170 if ( !ok )
171 {
172 throw QgsProcessingException( QObject::tr( "Failed to apply metadata. Error: %1" ).arg( msg ) );
173 }
174
175 if ( saveAsDefault )
176 {
177 bool ok;
178 layer->saveDefaultMetadata( ok );
179 if ( !ok )
180 {
181 throw QgsProcessingException( QObject::tr( "Failed to save metadata as default metadata." ) );
182 }
183 }
184
185 return true;
186}
187
188QVariantMap QgsApplyLayerMetadataAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
189{
190 Q_UNUSED( parameters );
191 Q_UNUSED( context );
192
193 QVariantMap results;
194 results.insert( QStringLiteral( "OUTPUT" ), mLayerId );
195 return results;
196}
197
199
200QString QgsExportLayerMetadataAlgorithm::name() const
201{
202 return QStringLiteral( "exportlayermetadata" );
203}
204
205QString QgsExportLayerMetadataAlgorithm::displayName() const
206{
207 return QObject::tr( "Export layer metadata" );
208}
209
210QStringList QgsExportLayerMetadataAlgorithm::tags() const
211{
212 return QObject::tr( "export,layer,metadata,qmd" ).split( ',' );
213}
214
215QString QgsExportLayerMetadataAlgorithm::group() const
216{
217 return QObject::tr( "Metadata tools" );
218}
219
220QString QgsExportLayerMetadataAlgorithm::groupId() const
221{
222 return QStringLiteral( "metadatatools" );
223}
224
225QString QgsExportLayerMetadataAlgorithm::shortHelpString() const
226{
227 return QObject::tr( "This algorithm exports layer's metadata to a QMD file." );
228}
229
230QString QgsExportLayerMetadataAlgorithm::shortDescription() const
231{
232 return QObject::tr( "Exports layer's metadata to a QMD file." );
233}
234
235QgsExportLayerMetadataAlgorithm *QgsExportLayerMetadataAlgorithm::createInstance() const
236{
237 return new QgsExportLayerMetadataAlgorithm();
238}
239
240void QgsExportLayerMetadataAlgorithm::initAlgorithm( const QVariantMap & )
241{
242 addParameter( new QgsProcessingParameterMapLayer( QStringLiteral( "INPUT" ), QObject::tr( "Layer" ) ) );
243 addParameter( new QgsProcessingParameterFileDestination( QStringLiteral( "OUTPUT" ), QObject::tr( "Output" ), QObject::tr( "QGIS Metadata File" ) + QStringLiteral( " (*.qmd *.QMD)" ) ) );
244}
245
246QVariantMap QgsExportLayerMetadataAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
247{
248 QgsMapLayer *layer = parameterAsLayer( parameters, QStringLiteral( "INPUT" ), context );
249 const QString outputFile = parameterAsString( parameters, QStringLiteral( "OUTPUT" ), context );
250
251 if ( !layer )
252 throw QgsProcessingException( QObject::tr( "Invalid input layer" ) );
253
254 bool ok = false;
255 const QString message = layer->saveNamedMetadata( outputFile, ok );
256 if ( !ok )
257 {
258 throw QgsProcessingException( QObject::tr( "Failed to save metadata. Error: %1" ).arg( message ) );
259 }
260
261 QVariantMap results;
262 results.insert( QStringLiteral( "OUTPUT" ), outputFile );
263 return results;
264}
265
267
268QString QgsAddHistoryMetadataAlgorithm::name() const
269{
270 return QStringLiteral( "addhistorymetadata" );
271}
272
273QString QgsAddHistoryMetadataAlgorithm::displayName() const
274{
275 return QObject::tr( "Add history metadata" );
276}
277
278QStringList QgsAddHistoryMetadataAlgorithm::tags() const
279{
280 return QObject::tr( "add,history,metadata" ).split( ',' );
281}
282
283QString QgsAddHistoryMetadataAlgorithm::group() const
284{
285 return QObject::tr( "Metadata tools" );
286}
287
288QString QgsAddHistoryMetadataAlgorithm::groupId() const
289{
290 return QStringLiteral( "metadatatools" );
291}
292
293QString QgsAddHistoryMetadataAlgorithm::shortHelpString() const
294{
295 return QObject::tr( "This algorithm adds a new history entry to the layer's metadata." );
296}
297
298QString QgsAddHistoryMetadataAlgorithm::shortDescription() const
299{
300 return QObject::tr( "Adds a new history entry to the layer's metadata." );
301}
302
303QgsAddHistoryMetadataAlgorithm *QgsAddHistoryMetadataAlgorithm::createInstance() const
304{
305 return new QgsAddHistoryMetadataAlgorithm();
306}
307
308void QgsAddHistoryMetadataAlgorithm::initAlgorithm( const QVariantMap & )
309{
310 addParameter( new QgsProcessingParameterMapLayer( QStringLiteral( "INPUT" ), QObject::tr( "Layer" ) ) );
311 addParameter( new QgsProcessingParameterString( QStringLiteral( "HISTORY" ), QObject::tr( "History entry" ) ) );
312 addOutput( new QgsProcessingOutputMapLayer( QStringLiteral( "OUTPUT" ), QObject::tr( "Updated" ) ) );
313}
314
315bool QgsAddHistoryMetadataAlgorithm::prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
316{
317 QgsMapLayer *layer = parameterAsLayer( parameters, QStringLiteral( "INPUT" ), context );
318 const QString history = parameterAsString( parameters, QStringLiteral( "HISTORY" ), context );
319
320 if ( !layer )
321 throw QgsProcessingException( QObject::tr( "Invalid input layer" ) );
322
323 mLayerId = layer->id();
324
325 std::unique_ptr<QgsLayerMetadata> md( layer->metadata().clone() );
326 md->addHistoryItem( history );
327 layer->setMetadata( *md.get() );
328
329 return true;
330}
331
332QVariantMap QgsAddHistoryMetadataAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
333{
334 Q_UNUSED( parameters );
335 Q_UNUSED( context );
336
337 QVariantMap results;
338 results.insert( QStringLiteral( "OUTPUT" ), mLayerId );
339 return results;
340}
341
343
344QString QgsUpdateLayerMetadataAlgorithm::name() const
345{
346 return QStringLiteral( "updatelayermetadata" );
347}
348
349QString QgsUpdateLayerMetadataAlgorithm::displayName() const
350{
351 return QObject::tr( "Update layer metadata" );
352}
353
354QStringList QgsUpdateLayerMetadataAlgorithm::tags() const
355{
356 return QObject::tr( "change,update,layer,metadata,qmd" ).split( ',' );
357}
358
359QString QgsUpdateLayerMetadataAlgorithm::group() const
360{
361 return QObject::tr( "Metadata tools" );
362}
363
364QString QgsUpdateLayerMetadataAlgorithm::groupId() const
365{
366 return QStringLiteral( "metadatatools" );
367}
368
369QString QgsUpdateLayerMetadataAlgorithm::shortHelpString() const
370{
371 return QObject::tr( "This algorithm copies all non-empty metadata fields from a source layer to a target layer.\n\nLeaves empty input fields unchanged in the target." );
372}
373
374QString QgsUpdateLayerMetadataAlgorithm::shortDescription() const
375{
376 return QObject::tr( "Copies all non-empty metadata fields from one layer to another." );
377}
378
379QgsUpdateLayerMetadataAlgorithm *QgsUpdateLayerMetadataAlgorithm::createInstance() const
380{
381 return new QgsUpdateLayerMetadataAlgorithm();
382}
383
384void QgsUpdateLayerMetadataAlgorithm::initAlgorithm( const QVariantMap & )
385{
386 addParameter( new QgsProcessingParameterMapLayer( QStringLiteral( "SOURCE" ), QObject::tr( "Source layer" ) ) );
387 addParameter( new QgsProcessingParameterMapLayer( QStringLiteral( "TARGET" ), QObject::tr( "Target layer" ) ) );
388 addOutput( new QgsProcessingOutputMapLayer( QStringLiteral( "OUTPUT" ), QObject::tr( "Updated layer" ) ) );
389}
390
391bool QgsUpdateLayerMetadataAlgorithm::prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
392{
393 QgsMapLayer *sourceLayer = parameterAsLayer( parameters, QStringLiteral( "SOURCE" ), context );
394 QgsMapLayer *targetLayer = parameterAsLayer( parameters, QStringLiteral( "TARGET" ), context );
395
396 if ( !sourceLayer )
397 throw QgsProcessingException( QObject::tr( "Invalid source layer" ) );
398
399 if ( !targetLayer )
400 throw QgsProcessingException( QObject::tr( "Invalid target layer" ) );
401
402 mLayerId = targetLayer->id();
403
404 std::unique_ptr<QgsLayerMetadata> md( targetLayer->metadata().clone() );
405 md->combine( &sourceLayer->metadata() );
406 targetLayer->setMetadata( *md.get() );
407
408 return true;
409}
410
411QVariantMap QgsUpdateLayerMetadataAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
412{
413 Q_UNUSED( parameters );
414 Q_UNUSED( context );
415
416 QVariantMap results;
417 results.insert( QStringLiteral( "OUTPUT" ), mLayerId );
418 return results;
419}
420
422
423QString QgsSetMetadataFieldsAlgorithm::name() const
424{
425 return QStringLiteral( "setmetadatafields" );
426}
427
428QString QgsSetMetadataFieldsAlgorithm::displayName() const
429{
430 return QObject::tr( "Set metadata fields" );
431}
432
433QStringList QgsSetMetadataFieldsAlgorithm::tags() const
434{
435 return QObject::tr( "set,metadata,title,abstract,identifier" ).split( ',' );
436}
437
438QString QgsSetMetadataFieldsAlgorithm::group() const
439{
440 return QObject::tr( "Metadata tools" );
441}
442
443QString QgsSetMetadataFieldsAlgorithm::groupId() const
444{
445 return QStringLiteral( "metadatatools" );
446}
447
448QString QgsSetMetadataFieldsAlgorithm::shortHelpString() const
449{
450 return QObject::tr( "This algorithm sets various metadata fields for a layer." );
451}
452
453QString QgsSetMetadataFieldsAlgorithm::shortDescription() const
454{
455 return QObject::tr( "Sets various metadata fields for a layer." );
456}
457
458QgsSetMetadataFieldsAlgorithm *QgsSetMetadataFieldsAlgorithm::createInstance() const
459{
460 return new QgsSetMetadataFieldsAlgorithm();
461}
462
463void QgsSetMetadataFieldsAlgorithm::initAlgorithm( const QVariantMap & )
464{
465 addParameter( new QgsProcessingParameterMapLayer( QStringLiteral( "INPUT" ), QObject::tr( "Layer" ) ) );
466 addParameter( new QgsProcessingParameterString( QStringLiteral( "IDENTIFIER" ), QObject::tr( "Identifier" ), QVariant(), false, true ) );
467 addParameter( new QgsProcessingParameterString( QStringLiteral( "PARENT_IDENTIFIER" ), QObject::tr( "Parent identifier" ), QVariant(), false, true ) );
468 addParameter( new QgsProcessingParameterString( QStringLiteral( "TITLE" ), QObject::tr( "Title" ), QVariant(), false, true ) );
469 addParameter( new QgsProcessingParameterString( QStringLiteral( "TYPE" ), QObject::tr( "Type" ), QVariant(), false, true ) );
470 addParameter( new QgsProcessingParameterString( QStringLiteral( "LANGUAGE" ), QObject::tr( "Language" ), QVariant(), false, true ) );
471 addParameter( new QgsProcessingParameterString( QStringLiteral( "ENCODING" ), QObject::tr( "Encoding" ), QVariant(), false, true ) );
472 addParameter( new QgsProcessingParameterString( QStringLiteral( "ABSTRACT" ), QObject::tr( "Abstract" ), QVariant(), true, true ) );
473 addParameter( new QgsProcessingParameterCrs( QStringLiteral( "CRS" ), QObject::tr( "Coordinate reference system" ), QVariant(), true ) );
474 addParameter( new QgsProcessingParameterString( QStringLiteral( "FEES" ), QObject::tr( "Fees" ), QVariant(), false, true ) );
475 addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "IGNORE_EMPTY" ), QObject::tr( "Ignore empty fields" ), false ) );
476 addOutput( new QgsProcessingOutputMapLayer( QStringLiteral( "OUTPUT" ), QObject::tr( "Updated" ) ) );
477}
478
479bool QgsSetMetadataFieldsAlgorithm::prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
480{
481 QgsMapLayer *layer = parameterAsLayer( parameters, QStringLiteral( "INPUT" ), context );
482
483 if ( !layer )
484 throw QgsProcessingException( QObject::tr( "Invalid input layer" ) );
485
486 mLayerId = layer->id();
487
488 const bool ignoreEmpty = parameterAsBool( parameters, QStringLiteral( "IGNORE_EMPTY" ), context );
489
490 std::unique_ptr<QgsLayerMetadata> md( layer->metadata().clone() );
491
492 if ( parameters.value( QStringLiteral( "IDENTIFIER" ) ).isValid() )
493 {
494 const QString identifier = parameterAsString( parameters, QStringLiteral( "IDENTIFIER" ), context );
495 if ( !identifier.isEmpty() || !ignoreEmpty )
496 {
497 md->setIdentifier( identifier );
498 }
499 }
500
501 if ( parameters.value( QStringLiteral( "PARENT_IDENTIFIER" ) ).isValid() )
502 {
503 const QString parentIdentifier = parameterAsString( parameters, QStringLiteral( "PARENT_IDENTIFIER" ), context );
504 if ( !parentIdentifier.isEmpty() || !ignoreEmpty )
505 {
506 md->setParentIdentifier( parentIdentifier );
507 }
508 }
509
510 if ( parameters.value( QStringLiteral( "TITLE" ) ).isValid() )
511 {
512 const QString title = parameterAsString( parameters, QStringLiteral( "TITLE" ), context );
513 if ( !title.isEmpty() || !ignoreEmpty )
514 {
515 md->setTitle( title );
516 }
517 }
518
519 if ( parameters.value( QStringLiteral( "TYPE" ) ).isValid() )
520 {
521 const QString type = parameterAsString( parameters, QStringLiteral( "TYPE" ), context );
522 if ( !type.isEmpty() || !ignoreEmpty )
523 {
524 md->setType( type );
525 }
526 }
527
528 if ( parameters.value( QStringLiteral( "LANGUAGE" ) ).isValid() )
529 {
530 const QString language = parameterAsString( parameters, QStringLiteral( "LANGUAGE" ), context );
531 if ( !language.isEmpty() || !ignoreEmpty )
532 {
533 md->setLanguage( language );
534 }
535 }
536
537 if ( parameters.value( QStringLiteral( "ENCODING" ) ).isValid() )
538 {
539 const QString encoding = parameterAsString( parameters, QStringLiteral( "ENCODING" ), context );
540 if ( !encoding.isEmpty() || !ignoreEmpty )
541 {
542 md->setEncoding( encoding );
543 }
544 }
545
546 if ( parameters.value( QStringLiteral( "ABSTRACT" ) ).isValid() )
547 {
548 const QString abstract = parameterAsString( parameters, QStringLiteral( "ABSTRACT" ), context );
549 if ( !abstract.isEmpty() || !ignoreEmpty )
550 {
551 md->setAbstract( abstract );
552 }
553 }
554
555 if ( parameters.value( QStringLiteral( "CRS" ) ).isValid() )
556 {
557 const QgsCoordinateReferenceSystem crs = parameterAsCrs( parameters, QStringLiteral( "CRS" ), context );
558 if ( crs.isValid() || !ignoreEmpty )
559 {
560 md->setCrs( crs );
561 }
562 }
563
564 if ( parameters.value( QStringLiteral( "FEES" ) ).isValid() )
565 {
566 const QString fees = parameterAsString( parameters, QStringLiteral( "FEES" ), context );
567 if ( !fees.isEmpty() || !ignoreEmpty )
568 {
569 md->setFees( fees );
570 }
571 }
572
573 layer->setMetadata( *md.get() );
574
575 return true;
576}
577
578QVariantMap QgsSetMetadataFieldsAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
579{
580 Q_UNUSED( parameters );
581 Q_UNUSED( context );
582
583 QVariantMap results;
584 results.insert( QStringLiteral( "OUTPUT" ), mLayerId );
585 return results;
586}
587
@ File
Parameter is a single file.
Represents a coordinate reference system (CRS).
bool isValid() const
Returns whether this CRS is correctly initialized and usable.
QgsLayerMetadata * clone() const override
Clones the metadata object.
Base class for all map layer types.
Definition qgsmaplayer.h:77
virtual QString loadNamedMetadata(const QString &uri, bool &resultFlag)
Retrieve a named metadata for this layer if one exists (either as a .qmd file on disk or as a record ...
QString id
Definition qgsmaplayer.h:80
QgsLayerMetadata metadata
Definition qgsmaplayer.h:83
virtual void setMetadata(const QgsLayerMetadata &metadata)
Sets the layer's metadata store.
virtual QString saveDefaultMetadata(bool &resultFlag)
Save the current metadata of this layer as the default metadata (either as a .qmd file on disk or as ...
QString saveNamedMetadata(const QString &uri, bool &resultFlag)
Save the current metadata of this layer as a named metadata (either as a .qmd file on disk or as a re...
Contains information about the context in which a processing algorithm is executed.
Custom exception class for processing related exceptions.
Base class for providing feedback from a processing algorithm.
A map layer output for processing algorithms, where layers may be either vector or raster.
A boolean parameter for processing algorithms.
A coordinate reference system parameter for processing algorithms.
A generic file based destination parameter, for specifying the destination path for a file (non-map l...
An input file or folder parameter for processing algorithms.
A map layer parameter for processing algorithms.
A string parameter for processing algorithms.
const QgsCoordinateReferenceSystem & crs