Skip to content

Commit ae7b657

Browse files
committedMar 29, 2016
Add a new filter for WritableLayers to QgsMapLayerProxyModel
1 parent 93e73ac commit ae7b657

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed
 

‎python/gui/qgsmaplayerproxymodel.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class QgsMapLayerProxyModel : QSortFilterProxyModel
2020
HasGeometry,
2121
VectorLayer,
2222
PluginLayer,
23+
WritableLayer,
2324
All
2425
};
2526
typedef QFlags<QgsMapLayerProxyModel::Filter> Filters;

‎src/gui/qgsmaplayerproxymodel.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ bool QgsMapLayerProxyModel::filterAcceptsRow( int source_row, const QModelIndex
8484
if ( mExceptList.contains( layer ) )
8585
return false;
8686

87+
QgsVectorLayer* vl = qobject_cast<QgsVectorLayer*>( layer );
88+
89+
if ( mFilters.testFlag( WritableLayer ) && layer->readOnly() )
90+
return false;
91+
8792
// layer type
8893
if (( mFilters.testFlag( RasterLayer ) && layer->type() == QgsMapLayer::RasterLayer ) ||
8994
( mFilters.testFlag( VectorLayer ) && layer->type() == QgsMapLayer::VectorLayer ) ||
@@ -98,7 +103,6 @@ bool QgsMapLayerProxyModel::filterAcceptsRow( int source_row, const QModelIndex
98103
mFilters.testFlag( HasGeometry );
99104
if ( detectGeometry && layer->type() == QgsMapLayer::VectorLayer )
100105
{
101-
QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( layer );
102106
if ( vl )
103107
{
104108
if ( mFilters.testFlag( HasGeometry ) && vl->hasGeometryType() )

‎src/gui/qgsmaplayerproxymodel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class GUI_EXPORT QgsMapLayerProxyModel : public QSortFilterProxyModel
4646
HasGeometry = PointLayer | LineLayer | PolygonLayer,
4747
VectorLayer = NoGeometry | HasGeometry,
4848
PluginLayer = 32,
49+
WritableLayer = 64,
4950
All = RasterLayer | VectorLayer | PluginLayer
5051
};
5152
Q_DECLARE_FLAGS( Filters, Filter )

0 commit comments

Comments
 (0)
Please sign in to comment.