From f130f103c71beaa45da4f9c98923a497de90756a Mon Sep 17 00:00:00 2001 From: jef Date: Wed, 28 Oct 2009 00:51:34 +0000 Subject: [PATCH] fix #2036 git-svn-id: http://svn.osgeo.org/qgis/trunk@11861 c8812cc2-4d05-0410-92ff-de0c093fc19c --- python/core/qgsdataprovider.sip | 5 +++++ src/app/qgsvectorlayerproperties.cpp | 2 +- src/core/qgsdataprovider.h | 6 ++++++ src/providers/ogr/qgsogrprovider.h | 2 ++ src/providers/postgres/qgspostgresprovider.h | 2 ++ src/providers/spatialite/qgsspatialiteprovider.h | 2 ++ 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/python/core/qgsdataprovider.sip b/python/core/qgsdataprovider.sip index 6d27f0ae090..2770cb62a63 100644 --- a/python/core/qgsdataprovider.sip +++ b/python/core/qgsdataprovider.sip @@ -66,6 +66,11 @@ class QgsDataProvider : QObject */ virtual bool setSubsetString(QString subset); + /** + * provider supports setting of subset strings + * @note added in 1.4 + */ + virtual bool supportsSubsetString(); /** * Returns the subset definition string (typically sql) currently in diff --git a/src/app/qgsvectorlayerproperties.cpp b/src/app/qgsvectorlayerproperties.cpp index 2c2f5a96833..2c1719bc263 100644 --- a/src/app/qgsvectorlayerproperties.cpp +++ b/src/app/qgsvectorlayerproperties.cpp @@ -438,7 +438,7 @@ void QgsVectorLayerProperties::reset( void ) // on the builder. If the ability to enter a query directly into the box is required, // a mechanism to check it must be implemented. txtSubsetSQL->setEnabled( false ); - pbnQueryBuilder->setEnabled( true ); + pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() ); //get field list for display field combo const QgsFieldMap& myFields = layer->pendingFields(); diff --git a/src/core/qgsdataprovider.h b/src/core/qgsdataprovider.h index a6c940e07b7..c083e2d6f93 100644 --- a/src/core/qgsdataprovider.h +++ b/src/core/qgsdataprovider.h @@ -121,6 +121,12 @@ class CORE_EXPORT QgsDataProvider : public QObject } + /** + * provider supports setting of subset strings + * @note added in 1.4 + */ + virtual bool supportsSubsetString() { return false; } + /** * Returns the subset definition string (typically sql) currently in * use by the layer and used by the provider to limit the feature set. diff --git a/src/providers/ogr/qgsogrprovider.h b/src/providers/ogr/qgsogrprovider.h index 6b2ee10ee5e..c60453b805c 100644 --- a/src/providers/ogr/qgsogrprovider.h +++ b/src/providers/ogr/qgsogrprovider.h @@ -95,6 +95,8 @@ class QgsOgrProvider : public QgsVectorDataProvider /** Accessor for sql where clause used to limit dataset */ virtual QString subsetString(); + virtual bool supportsSubsetString() { return true; } + /** mutator for sql where clause used to limit dataset size */ virtual bool setSubsetString( QString theSQL ); diff --git a/src/providers/postgres/qgspostgresprovider.h b/src/providers/postgres/qgspostgresprovider.h index a840a9559e6..de312776007 100644 --- a/src/providers/postgres/qgspostgresprovider.h +++ b/src/providers/postgres/qgspostgresprovider.h @@ -255,6 +255,8 @@ class QgsPostgresProvider : public QgsVectorDataProvider /** mutator for sql where clause used to limit dataset size */ bool setSubsetString( QString theSQL ); + virtual bool supportsSubsetString() { return true; } + /**Returns a bitmask containing the supported capabilities*/ int capabilities() const; diff --git a/src/providers/spatialite/qgsspatialiteprovider.h b/src/providers/spatialite/qgsspatialiteprovider.h index 224ae1d9a4f..fb6c57d9ac6 100644 --- a/src/providers/spatialite/qgsspatialiteprovider.h +++ b/src/providers/spatialite/qgsspatialiteprovider.h @@ -81,6 +81,8 @@ class QgsSpatiaLiteProvider: public QgsVectorDataProvider /** mutator for sql where clause used to limit dataset size */ virtual bool setSubsetString( QString theSQL ); + virtual bool supportsSubsetString() { return true; } + /** Select features based on a bounding rectangle. Features can be retrieved with calls to nextFeature. * @param fetchAttributes list of attributes which should be fetched * @param rect spatial filter