Skip to content

Commit 7ae1ee9

Browse files
committed
Add sourceName() method to QgsFeatureSource
Sometimes it's necessary to retrieve the name of a source...
1 parent d88d52b commit 7ae1ee9

13 files changed

+56
-11
lines changed

python/core/qgsfeaturesource.sip

+6
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ class QgsFeatureSource
3333
:rtype: QgsFeatureIterator
3434
%End
3535

36+
virtual QString sourceName() const = 0;
37+
%Docstring
38+
Returns a friendly display name for the source. The returned value can be an empty string.
39+
:rtype: str
40+
%End
41+
3642
virtual QgsCoordinateReferenceSystem sourceCrs() const = 0;
3743
%Docstring
3844
Returns the coordinate reference system for features in the source.

python/core/qgsvectordataprovider.sip

+1
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ Bitmask of all provider's editing capabilities
128128

129129
virtual QgsRectangle sourceExtent() const;
130130

131+
virtual QString sourceName() const;
131132

132133
virtual QString dataComment() const;
133134
%Docstring

python/core/qgsvectorlayer.sip

+2
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,8 @@ Return the provider type for this layer
700700

701701
virtual QgsCoordinateReferenceSystem sourceCrs() const;
702702

703+
virtual QString sourceName() const;
704+
703705

704706
virtual bool readXml( const QDomNode &layer_node, const QgsReadWriteContext &context );
705707
%Docstring

python/core/qgsvectorlayerfeatureiterator.sip

+8
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,19 @@ class QgsVectorLayerSelectedFeatureSource : QgsFeatureSource
168168
%End
169169

170170
virtual QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const;
171+
171172
virtual QgsCoordinateReferenceSystem sourceCrs() const;
173+
172174
virtual QgsFields fields() const;
175+
173176
virtual QgsWkbTypes::Type wkbType() const;
177+
174178
virtual long featureCount() const;
175179

180+
virtual QString sourceName() const;
181+
182+
183+
176184
};
177185

178186
/************************************************************************

python/plugins/processing/algs/qgis/ImportIntoPostGIS.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ def processAlgorithm(self, parameters, context, feedback):
137137
if table:
138138
table.strip()
139139
if not table or table == '':
140-
table = layer.name()
140+
table = source.name()
141141
table = table.replace('.', '_')
142142
table = table.replace(' ', '').lower()[0:62]
143143
providerName = 'postgres'

src/core/processing/qgsprocessingutils.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -508,3 +508,9 @@ long QgsProcessingFeatureSource::featureCount() const
508508
{
509509
return mSource->featureCount();
510510
}
511+
512+
QString QgsProcessingFeatureSource::sourceName() const
513+
{
514+
return mSource->sourceName();
515+
516+
}

src/core/processing/qgsprocessingutils.h

+6-5
Original file line numberDiff line numberDiff line change
@@ -244,11 +244,12 @@ class QgsProcessingFeatureSource : public QgsFeatureSource
244244

245245
~QgsProcessingFeatureSource();
246246

247-
virtual QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const override;
248-
virtual QgsCoordinateReferenceSystem sourceCrs() const override;
249-
virtual QgsFields fields() const override;
250-
virtual QgsWkbTypes::Type wkbType() const override;
251-
virtual long featureCount() const override;
247+
QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const override;
248+
QgsCoordinateReferenceSystem sourceCrs() const override;
249+
QgsFields fields() const override;
250+
QgsWkbTypes::Type wkbType() const override;
251+
long featureCount() const override;
252+
QString sourceName() const override;
252253

253254
private:
254255

src/core/qgsfeaturesource.h

+5
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ class CORE_EXPORT QgsFeatureSource
4646
*/
4747
virtual QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const = 0;
4848

49+
/**
50+
* Returns a friendly display name for the source. The returned value can be an empty string.
51+
*/
52+
virtual QString sourceName() const = 0;
53+
4954
/**
5055
* Returns the coordinate reference system for features in the source.
5156
*/

src/core/qgsvectordataprovider.h

+1
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ class CORE_EXPORT QgsVectorDataProvider : public QgsDataProvider, public QgsFeat
161161

162162
QgsCoordinateReferenceSystem sourceCrs() const override;
163163
QgsRectangle sourceExtent() const override;
164+
QString sourceName() const override { return QString(); }
164165

165166
/**
166167
* Return a short comment for the data that this provider is

src/core/qgsvectorlayer.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,11 @@ QgsCoordinateReferenceSystem QgsVectorLayer::sourceCrs() const
312312
return crs();
313313
}
314314

315+
QString QgsVectorLayer::sourceName() const
316+
{
317+
return name();
318+
}
319+
315320
void QgsVectorLayer::reload()
316321
{
317322
if ( mDataProvider )

src/core/qgsvectorlayer.h

+1
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,7 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte
698698
QString providerType() const;
699699

700700
QgsCoordinateReferenceSystem sourceCrs() const override;
701+
QString sourceName() const override;
701702

702703
/** Reads vector layer specific state from project file Dom node.
703704
* \note Called by QgsMapLayer::readXml().

src/core/qgsvectorlayerfeatureiterator.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,7 @@ QgsVectorLayerSelectedFeatureSource::QgsVectorLayerSelectedFeatureSource( QgsVec
10641064
: mSource( layer )
10651065
, mSelectedFeatureIds( layer->selectedFeatureIds() )
10661066
, mWkbType( layer->wkbType() )
1067+
, mName( layer->name() )
10671068
{}
10681069

10691070
QgsFeatureIterator QgsVectorLayerSelectedFeatureSource::getFeatures( const QgsFeatureRequest &request ) const
@@ -1103,3 +1104,8 @@ long QgsVectorLayerSelectedFeatureSource::featureCount() const
11031104
{
11041105
return mSelectedFeatureIds.count();
11051106
}
1107+
1108+
QString QgsVectorLayerSelectedFeatureSource::sourceName() const
1109+
{
1110+
return mName;
1111+
}

src/core/qgsvectorlayerfeatureiterator.h

+8-5
Original file line numberDiff line numberDiff line change
@@ -282,18 +282,21 @@ class CORE_EXPORT QgsVectorLayerSelectedFeatureSource : public QgsFeatureSource
282282
*/
283283
QgsVectorLayerSelectedFeatureSource( QgsVectorLayer *layer );
284284

285-
virtual QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const override;
286-
virtual QgsCoordinateReferenceSystem sourceCrs() const override;
287-
virtual QgsFields fields() const override;
288-
virtual QgsWkbTypes::Type wkbType() const override;
289-
virtual long featureCount() const override;
285+
QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const override;
286+
QgsCoordinateReferenceSystem sourceCrs() const override;
287+
QgsFields fields() const override;
288+
QgsWkbTypes::Type wkbType() const override;
289+
long featureCount() const override;
290+
QString sourceName() const override;
291+
290292

291293
private:
292294

293295
// ideally this wouldn't be mutable, but QgsVectorLayerFeatureSource has non-const getFeatures()
294296
mutable QgsVectorLayerFeatureSource mSource;
295297
QgsFeatureIds mSelectedFeatureIds;
296298
QgsWkbTypes::Type mWkbType = QgsWkbTypes::Unknown;
299+
QString mName;
297300

298301
};
299302

0 commit comments

Comments
 (0)