From: <mco...@us...> - 2005-11-10 22:32:22
|
Update of /cvsroot/qgis/qgis/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8356/src Modified Files: Tag: multiple-layers-branch qgsdataprovider.h qgsvectordataprovider.h qgsvectorlayer.cpp Log Message: - data provider capabilities(), select(), getNextFeature(), and getProjectionWKT() now accept (or force) use of data provider layer number No loads all SDTS layers without bombing. Except it doesn't draw anything. And it _does_ bomb when you ask for layer properties. Index: qgsdataprovider.h =================================================================== RCS file: /cvsroot/qgis/qgis/src/qgsdataprovider.h,v retrieving revision 1.27.2.4 retrieving revision 1.27.2.5 diff -C2 -d -r1.27.2.4 -r1.27.2.5 *** qgsdataprovider.h 20 Oct 2005 21:13:45 -0000 1.27.2.4 --- qgsdataprovider.h 10 Nov 2005 22:32:14 -0000 1.27.2.5 *************** *** 92,96 **** * */ ! virtual QString getProjectionWKT() = 0 ; /** --- 92,96 ---- * */ ! virtual QString getProjectionWKT(size_t dataSourceLayerNum = 0) = 0 ; /** Index: qgsvectordataprovider.h =================================================================== RCS file: /cvsroot/qgis/qgis/src/qgsvectordataprovider.h,v retrieving revision 1.40.2.3 retrieving revision 1.40.2.4 diff -C2 -d -r1.40.2.3 -r1.40.2.4 *** qgsvectordataprovider.h 20 Oct 2005 21:13:45 -0000 1.40.2.3 --- qgsvectordataprovider.h 10 Nov 2005 22:32:14 -0000 1.40.2.4 *************** *** 77,81 **** * */ ! virtual void select(QgsRect *mbr, bool useIntersect=false, size_t dataSourceLayerNum = 0)=0; /** * Update the feature count based on current spatial filter. If not --- 77,81 ---- * */ ! virtual void select(QgsRect *mbr, bool useIntersect, size_t dataSourceLayerNum = 0)=0; /** * Update the feature count based on current spatial filter. If not *************** *** 223,234 **** } ! /**Creates a spatial index on the datasource (if supported by the provider type). Returns true in case of success*/ virtual bool createSpatialIndex(size_t dataSourceLayerNum = 0); ! /** Sets filter based on attribute values. Returns false when input string contains errors */ virtual bool setAttributeFilter(const QgsSearchString& attributeFilter, size_t dataSourceLayerNum = 0); /** Returns current attribute filter */ ! virtual QgsSearchString getAttributeFilter(size_t dataSourceLayerNum = 0) { return mAttributeFilter; } /** Returns a bitmask containing the supported capabilities --- 223,237 ---- } ! /**Creates a spatial index on the datasource (if supported by the ! * provider type). Returns true in case of success*/ virtual bool createSpatialIndex(size_t dataSourceLayerNum = 0); ! /** Sets filter based on attribute values. Returns false when input ! * string contains errors */ virtual bool setAttributeFilter(const QgsSearchString& attributeFilter, size_t dataSourceLayerNum = 0); /** Returns current attribute filter */ ! virtual QgsSearchString getAttributeFilter(size_t dataSourceLayerNum = 0) ! { return mAttributeFilter; } /** Returns a bitmask containing the supported capabilities *************** *** 237,241 **** be prudent to check this value per intended operation. */ ! virtual int capabilities() const {return QgsVectorDataProvider::NoCapabilities;} /** --- 240,245 ---- be prudent to check this value per intended operation. */ ! virtual int capabilities(size_t dataSourceLayerNum = 0) const ! { return QgsVectorDataProvider::NoCapabilities; } /** Index: qgsvectorlayer.cpp =================================================================== RCS file: /cvsroot/qgis/qgis/src/qgsvectorlayer.cpp,v retrieving revision 1.228.2.9 retrieving revision 1.228.2.10 diff -C2 -d -r1.228.2.9 -r1.228.2.10 *** qgsvectorlayer.cpp 9 Nov 2005 21:22:33 -0000 1.228.2.9 --- qgsvectorlayer.cpp 10 Nov 2005 22:32:14 -0000 1.228.2.10 *************** *** 257,261 **** if (valid) { ! return dataProvider()->getProjectionWKT(); } else --- 257,261 ---- if (valid) { ! return dataProvider()->getProjectionWKT(dataSourceLayerNum()); } else *************** *** 389,393 **** // and sets up the selection set for retrieval dataProvider()->reset(); ! getDataProvider()->select(viewExtent); try --- 389,393 ---- // and sets up the selection set for retrieval dataProvider()->reset(); ! getDataProvider()->select(viewExtent,false,dataSourceLayerNum()); try *************** *** 396,400 **** QgsFeature *fet; ! while((fet = getDataProvider()->getNextFeature(attributes))) { // Render label --- 396,400 ---- QgsFeature *fet; ! while((fet = getDataProvider()->getNextFeature(attributes,dataSourceLayerNum()))) { // Render label *************** *** 793,797 **** mCachedGeometries.clear(); ! getDataProvider()->select(viewExtent); int featureCount = 0; // QgsFeature *ftest = dataProvider()->getFirstFeature(); --- 793,797 ---- mCachedGeometries.clear(); ! getDataProvider()->select(viewExtent,false,dataSourceLayerNum()); int featureCount = 0; // QgsFeature *ftest = dataProvider()->getFirstFeature(); *************** *** 828,832 **** try { ! while (fet = getDataProvider()->getNextFeature(attributes, updateThreshold)) // while((fet = getDataProvider()->getNextFeature(attributes))) { --- 828,834 ---- try { ! while (fet = getDataProvider()->getNextFeature(attributes, ! updateThreshold, ! dataSourceLayerNum())) // while((fet = getDataProvider()->getNextFeature(attributes))) { *************** *** 1450,1454 **** popMenu->insertSeparator(); // XXX should this move to QgsMapLayer::initContextMenu()? ! int cap=getDataProvider()->capabilities(); if((cap&QgsVectorDataProvider::AddFeatures) --- 1452,1456 ---- popMenu->insertSeparator(); // XXX should this move to QgsMapLayer::initContextMenu()? ! int cap=getDataProvider()->capabilities(dataSourceLayerNum()); if((cap&QgsVectorDataProvider::AddFeatures) *************** *** 1771,1775 **** if(getDataProvider()) { ! if(!(getDataProvider()->capabilities() & QgsVectorDataProvider::AddFeatures)) { QMessageBox::information(0, tr("Layer cannot be added to"), --- 1773,1777 ---- if(getDataProvider()) { ! if(!(getDataProvider()->capabilities(dataSourceLayerNum()) & QgsVectorDataProvider::AddFeatures)) { QMessageBox::information(0, tr("Layer cannot be added to"), *************** *** 1979,1983 **** bool QgsVectorLayer::deleteSelectedFeatures() { ! if(!(getDataProvider()->capabilities() & QgsVectorDataProvider::DeleteFeatures)) { QMessageBox::information(0, tr("Provider does not support deletion"), --- 1981,1985 ---- bool QgsVectorLayer::deleteSelectedFeatures() { ! if(!(getDataProvider()->capabilities(dataSourceLayerNum()) & QgsVectorDataProvider::DeleteFeatures)) { QMessageBox::information(0, tr("Provider does not support deletion"), *************** *** 2069,2073 **** if(getDataProvider()) { ! if(!(getDataProvider()->capabilities()&QgsVectorDataProvider::AddFeatures)) { QMessageBox::information(0,"Start editing failed","Provider cannot be opened for editing",QMessageBox::Ok); --- 2071,2075 ---- if(getDataProvider()) { ! if(!(getDataProvider()->capabilities(dataSourceLayerNum())&QgsVectorDataProvider::AddFeatures)) { QMessageBox::information(0,"Start editing failed","Provider cannot be opened for editing",QMessageBox::Ok); *************** *** 2788,2792 **** if (getDataProvider()) { ! if(!(getDataProvider()->capabilities() & QgsVectorDataProvider::AddFeatures)) { QMessageBox::information(0, tr("Layer cannot be added to"), --- 2790,2794 ---- if (getDataProvider()) { ! if(!(getDataProvider()->capabilities(dataSourceLayerNum()) & QgsVectorDataProvider::AddFeatures)) { QMessageBox::information(0, tr("Layer cannot be added to"), *************** *** 2943,2947 **** selectrect = inverseProjectRect(selectrect); getDataProvider()->reset(dataSourceLayerNum()); ! getDataProvider()->select(&selectrect, dataSourceLayerNum()); while ((fet = getDataProvider()->getNextFeature(false, dataSourceLayerNum()))) { --- 2945,2949 ---- selectrect = inverseProjectRect(selectrect); getDataProvider()->reset(dataSourceLayerNum()); ! getDataProvider()->select(&selectrect, false, dataSourceLayerNum()); while ((fet = getDataProvider()->getNextFeature(false, dataSourceLayerNum()))) { *************** *** 3016,3020 **** getDataProvider()->reset(dataSourceLayerNum()); ! getDataProvider()->select(&selectrect, dataSourceLayerNum()); origPoint = point; --- 3018,3022 ---- getDataProvider()->reset(dataSourceLayerNum()); ! getDataProvider()->select(&selectrect, false, dataSourceLayerNum()); origPoint = point; *************** *** 3132,3136 **** getDataProvider()->reset(dataSourceLayerNum()); ! getDataProvider()->select(&selectrect, dataSourceLayerNum()); #ifdef QGISDEBUG --- 3134,3138 ---- getDataProvider()->reset(dataSourceLayerNum()); ! getDataProvider()->select(&selectrect, false, dataSourceLayerNum()); #ifdef QGISDEBUG *************** *** 3367,3371 **** #endif mCoordinateTransform->sourceSRS().createFromWkt(mySourceWKT); ! //mCoordinateTransform->sourceSRS()->createFromWkt(getProjectionWKT()); } else --- 3369,3373 ---- #endif mCoordinateTransform->sourceSRS().createFromWkt(mySourceWKT); ! //mCoordinateTransform->sourceSRS()->createFromWkt(getProjectionWKT(())); } else *************** *** 3436,3440 **** if(getDataProvider()) { ! if(getDataProvider()->capabilities()&QgsVectorDataProvider::DeleteAttributes) { //delete attributes in all not commited features --- 3438,3442 ---- if(getDataProvider()) { ! if(getDataProvider()->capabilities(dataSourceLayerNum())&QgsVectorDataProvider::DeleteAttributes) { //delete attributes in all not commited features *************** *** 3453,3457 **** } ! if(getDataProvider()->capabilities()&QgsVectorDataProvider::AddAttributes) { //add attributes in all not commited features --- 3455,3459 ---- } ! if(getDataProvider()->capabilities(dataSourceLayerNum())&QgsVectorDataProvider::AddAttributes) { //add attributes in all not commited features *************** *** 3470,3474 **** } ! if(getDataProvider()->capabilities()&QgsVectorDataProvider::ChangeAttributeValues) { //change values of the not commited features --- 3472,3476 ---- } ! if(getDataProvider()->capabilities(dataSourceLayerNum())&QgsVectorDataProvider::ChangeAttributeValues) { //change values of the not commited features |