[QGIS Commit] r11908 - in branches/symbology-ng-branch: python/core
src/app/legend src/core src/core/symbology-ng src/gui/symbology-ng
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Tue Nov 3 11:18:14 EST 2009
Author: wonder
Date: 2009-11-03 11:18:14 -0500 (Tue, 03 Nov 2009)
New Revision: 11908
Modified:
branches/symbology-ng-branch/python/core/symbology-ng-core.sip
branches/symbology-ng-branch/src/app/legend/qgslegendlayer.cpp
branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp
branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp
branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h
branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
Log:
Store in renderer classification attribute by its name, not by index
Modified: branches/symbology-ng-branch/python/core/symbology-ng-core.sip
===================================================================
--- branches/symbology-ng-branch/python/core/symbology-ng-core.sip 2009-11-03 16:11:23 UTC (rev 11907)
+++ branches/symbology-ng-branch/python/core/symbology-ng-core.sip 2009-11-03 16:18:14 UTC (rev 11908)
@@ -49,11 +49,11 @@
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature)=0;
- virtual void startRender(QgsRenderContext& context)=0;
+ virtual void startRender(QgsRenderContext& context, const QMap<int, QgsField>& fields)=0;
virtual void stopRender(QgsRenderContext& context)=0;
- virtual QList<int> usedAttributes()=0;
+ virtual QList<QString> usedAttributes()=0;
virtual ~QgsFeatureRendererV2();
@@ -89,11 +89,11 @@
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
- virtual void startRender(QgsRenderContext& context);
+ virtual void startRender(QgsRenderContext& context, const QMap<int, QgsField>& fields);
virtual void stopRender(QgsRenderContext& context);
- virtual QList<int> usedAttributes();
+ virtual QList<QString> usedAttributes();
QgsSymbolV2* symbol() const;
void setSymbol(QgsSymbolV2* s /Transfer/);
@@ -140,17 +140,17 @@
public:
- QgsCategorizedSymbolRendererV2(int attrNum = -1, QgsCategoryList categories = QgsCategoryList());
+ QgsCategorizedSymbolRendererV2(QString attrName = QString(), QgsCategoryList categories = QgsCategoryList());
virtual ~QgsCategorizedSymbolRendererV2();
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
- virtual void startRender(QgsRenderContext& context);
+ virtual void startRender(QgsRenderContext& context, const QMap<int, QgsField>& fields);
virtual void stopRender(QgsRenderContext& context);
- virtual QList<int> usedAttributes();
+ virtual QList<QString> usedAttributes();
virtual QString dump();
@@ -167,8 +167,8 @@
bool deleteCategory(int catIndex);
void deleteAllCategories();
- int attributeIndex() const;
- void setAttributeIndex(int attr);
+ QString classAttribute() const;
+ void setClassAttribute(QString attr);
protected:
@@ -210,24 +210,24 @@
%End
public:
- QgsGraduatedSymbolRendererV2(int attrNum = -1, QgsRangeList ranges = QgsRangeList());
+ QgsGraduatedSymbolRendererV2(QString attrNum = QString(), QgsRangeList ranges = QgsRangeList());
virtual ~QgsGraduatedSymbolRendererV2();
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
- virtual void startRender(QgsRenderContext& context);
+ virtual void startRender(QgsRenderContext& context, const QMap<int, QgsField>& fields);
virtual void stopRender(QgsRenderContext& context);
- virtual QList<int> usedAttributes();
+ virtual QList<QString> usedAttributes();
virtual QString dump();
virtual QgsFeatureRendererV2* clone() /Factory/;
- int attributeIndex() const;
- void setAttributeIndex(int attr);
+ QString classAttribute() const;
+ void setClassAttribute(QString attr);
const QgsRangeList& ranges();
@@ -246,7 +246,7 @@
static QgsGraduatedSymbolRendererV2* createRenderer(
QgsVectorLayer* vlayer,
- int attrNum,
+ QString attrName,
int classes,
Mode mode,
QgsSymbolV2* symbol,
Modified: branches/symbology-ng-branch/src/app/legend/qgslegendlayer.cpp
===================================================================
--- branches/symbology-ng-branch/src/app/legend/qgslegendlayer.cpp 2009-11-03 16:11:23 UTC (rev 11907)
+++ branches/symbology-ng-branch/src/app/legend/qgslegendlayer.cpp 2009-11-03 16:18:14 UTC (rev 11908)
@@ -428,9 +428,7 @@
QgsCategorizedSymbolRendererV2* r = static_cast<QgsCategorizedSymbolRendererV2*>(renderer);
if (showClassifiers)
{
- const QgsFieldMap& fields = layer->dataProvider()->fields();
- QString fieldName = fields[r->attributeIndex()].name();
- itemList.push_back( std::make_pair( fieldName, QPixmap() ) );
+ itemList.push_back( std::make_pair( r->classAttribute(), QPixmap() ) );
}
int count = r->categories().count();
@@ -447,9 +445,7 @@
QgsGraduatedSymbolRendererV2* r = static_cast<QgsGraduatedSymbolRendererV2*>(renderer);
if (showClassifiers)
{
- const QgsFieldMap& fields = layer->dataProvider()->fields();
- QString fieldName = fields[r->attributeIndex()].name();
- itemList.push_back( std::make_pair( fieldName, QPixmap() ) );
+ itemList.push_back( std::make_pair( r->classAttribute(), QPixmap() ) );
}
int count = r->ranges().count();
Modified: branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp 2009-11-03 16:11:23 UTC (rev 11907)
+++ branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp 2009-11-03 16:18:14 UTC (rev 11908)
@@ -666,7 +666,7 @@
void QgsVectorLayer::drawRendererV2( QgsRenderContext& rendererContext, bool labeling )
{
- mRendererV2->startRender(rendererContext);
+ mRendererV2->startRender(rendererContext, pendingFields());
QgsFeature fet;
while ( nextFeature( fet ) )
@@ -685,7 +685,7 @@
QHash< QgsSymbolV2*, QList<QgsFeature> > features; // key = symbol, value = array of features
// startRender must be called before symbolForFeature() calls to make sure renderer is ready
- mRendererV2->startRender(rendererContext);
+ mRendererV2->startRender(rendererContext, pendingFields());
// 1. fetch features
QgsFeature fet;
@@ -755,9 +755,13 @@
int totalFeatures = pendingFeatureCount();
int featureCount = 0;
- QgsAttributeList attributes = mRendererV2->usedAttributes();
- if (attributes.count() > 0)
- QgsDebugMsg("attrs: " + QString::number(attributes[0]));
+ QgsAttributeList attributes;
+ foreach (QString attrName, mRendererV2->usedAttributes())
+ {
+ int attrNum = QgsFeatureRendererV2::fieldNameIndex(pendingFields(), attrName);
+ attributes.append( attrNum );
+ QgsDebugMsg("attrs: "+ attrName + " - " + QString::number(attrNum));
+ }
bool labeling = FALSE;
if ( mLabelingEngine )
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp 2009-11-03 16:11:23 UTC (rev 11907)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp 2009-11-03 16:18:14 UTC (rev 11908)
@@ -285,6 +285,16 @@
return doc.createElement(RENDERER_TAG_NAME);
}
+int QgsFeatureRendererV2::fieldNameIndex( const QgsFieldMap& fields, const QString& fieldName )
+{
+ for ( QgsFieldMap::const_iterator it = fields.constBegin(); it != fields.constEnd(); ++it )
+ {
+ if ( it->name() == fieldName )
+ return it.key();
+ }
+ return -1;
+}
+
///////////////////
QgsSingleSymbolRendererV2::QgsSingleSymbolRendererV2(QgsSymbolV2* symbol)
@@ -303,7 +313,7 @@
return mSymbol;
}
-void QgsSingleSymbolRendererV2::startRender(QgsRenderContext& context)
+void QgsSingleSymbolRendererV2::startRender(QgsRenderContext& context, const QgsFieldMap& fields)
{
mSymbol->startRender(context);
}
@@ -313,9 +323,9 @@
mSymbol->stopRender(context);
}
-QList<int> QgsSingleSymbolRendererV2::usedAttributes()
+QList<QString> QgsSingleSymbolRendererV2::usedAttributes()
{
- return QList<int>();
+ return QList<QString>();
}
QgsSymbolV2* QgsSingleSymbolRendererV2::symbol() const
@@ -435,8 +445,8 @@
///////////////////
-QgsCategorizedSymbolRendererV2::QgsCategorizedSymbolRendererV2(int attrNum, QgsCategoryList categories)
- : QgsFeatureRendererV2(RendererCategorizedSymbol), mAttrNum(attrNum), mCategories(categories)
+QgsCategorizedSymbolRendererV2::QgsCategorizedSymbolRendererV2(QString attrName, QgsCategoryList categories)
+ : QgsFeatureRendererV2(RendererCategorizedSymbol), mAttrName(attrName), mCategories(categories)
{
for (int i = 0; i < mCategories.count(); ++i)
{
@@ -489,7 +499,7 @@
QgsAttributeMap::const_iterator ita = attrMap.find(mAttrNum);
if (ita == attrMap.end())
{
- QgsDebugMsg("attribute required by renderer not found: "+QString::number(mAttrNum));
+ QgsDebugMsg("attribute '"+mAttrName+"' (index "+QString::number(mAttrNum)+") required by renderer not found");
return NULL;
}
@@ -537,11 +547,14 @@
mCategories.clear();
}
-void QgsCategorizedSymbolRendererV2::startRender(QgsRenderContext& context)
+void QgsCategorizedSymbolRendererV2::startRender(QgsRenderContext& context, const QgsFieldMap& fields)
{
// make sure that the hash table is up to date
rebuildHash();
+ // find out classification attribute index from name
+ mAttrNum = fieldNameIndex(fields, mAttrName);
+
QgsCategoryList::iterator it = mCategories.begin();
for ( ; it != mCategories.end(); ++it)
it->symbol()->startRender(context);
@@ -554,16 +567,16 @@
it->symbol()->stopRender(context);
}
-QList<int> QgsCategorizedSymbolRendererV2::usedAttributes()
+QList<QString> QgsCategorizedSymbolRendererV2::usedAttributes()
{
- QList<int> lst;
- lst.append(mAttrNum);
+ QList<QString> lst;
+ lst.append(mAttrName);
return lst;
}
QString QgsCategorizedSymbolRendererV2::dump()
{
- QString s = QString("CATEGORIZED: idx %1\n").arg(mAttrNum);
+ QString s = QString("CATEGORIZED: idx %1\n").arg(mAttrName);
for (int i=0; i<mCategories.count();i++)
s += mCategories[i].dump();
return s;
@@ -571,7 +584,7 @@
QgsFeatureRendererV2* QgsCategorizedSymbolRendererV2::clone()
{
- QgsCategorizedSymbolRendererV2* r = new QgsCategorizedSymbolRendererV2( mAttrNum, mCategories );
+ QgsCategorizedSymbolRendererV2* r = new QgsCategorizedSymbolRendererV2( mAttrName, mCategories );
r->setUsingSymbolLevels( usingSymbolLevels() );
return r;
}
@@ -614,9 +627,9 @@
catElem = catElem.nextSiblingElement();
}
- int attrNum = element.attribute("attr").toInt();
+ QString attrName = element.attribute("attr");
- QgsCategorizedSymbolRendererV2* r = new QgsCategorizedSymbolRendererV2(attrNum, cats);
+ QgsCategorizedSymbolRendererV2* r = new QgsCategorizedSymbolRendererV2(attrName, cats);
// delete symbols if there are any more
QgsSymbolLayerV2Utils::clearSymbolMap(symbolMap);
@@ -629,7 +642,7 @@
{
QDomElement rendererElem = doc.createElement(RENDERER_TAG_NAME);
rendererElem.setAttribute("type", "categorizedSymbol");
- rendererElem.setAttribute("attr", mAttrNum);
+ rendererElem.setAttribute("attr", mAttrName);
// categories
int i = 0;
@@ -720,8 +733,8 @@
///////////
-QgsGraduatedSymbolRendererV2::QgsGraduatedSymbolRendererV2(int attrNum, QgsRangeList ranges)
- : QgsFeatureRendererV2(RendererGraduatedSymbol), mAttrNum(attrNum), mRanges(ranges), mMode(Custom)
+QgsGraduatedSymbolRendererV2::QgsGraduatedSymbolRendererV2(QString attrName, QgsRangeList ranges)
+ : QgsFeatureRendererV2(RendererGraduatedSymbol), mAttrName(attrName), mRanges(ranges), mMode(Custom)
{
// TODO: check ranges for sanity (NULL symbols, invalid ranges)
}
@@ -748,7 +761,7 @@
QgsAttributeMap::const_iterator ita = attrMap.find(mAttrNum);
if (ita == attrMap.end())
{
- QgsDebugMsg("attribute required by renderer not found: "+QString::number(mAttrNum));
+ QgsDebugMsg("attribute required by renderer not found: "+mAttrName+"(index "+QString::number(mAttrNum)+")");
return NULL;
}
@@ -757,8 +770,11 @@
}
-void QgsGraduatedSymbolRendererV2::startRender(QgsRenderContext& context)
+void QgsGraduatedSymbolRendererV2::startRender(QgsRenderContext& context, const QgsFieldMap& fields)
{
+ // find out classification attribute index from name
+ mAttrNum = fieldNameIndex(fields, mAttrName);
+
QgsRangeList::iterator it = mRanges.begin();
for ( ; it != mRanges.end(); ++it)
it->symbol()->startRender(context);
@@ -771,10 +787,10 @@
it->symbol()->startRender(context);
}
-QList<int> QgsGraduatedSymbolRendererV2::usedAttributes()
+QList<QString> QgsGraduatedSymbolRendererV2::usedAttributes()
{
- QList<int> lst;
- lst.append(mAttrNum);
+ QList<QString> lst;
+ lst.append( mAttrName );
return lst;
}
@@ -796,7 +812,7 @@
QString QgsGraduatedSymbolRendererV2::dump()
{
- QString s = QString("GRADUATED: idx %1\n").arg(mAttrNum);
+ QString s = QString("GRADUATED: attr %1\n").arg(mAttrName);
for (int i=0; i<mRanges.count();i++)
s += mRanges[i].dump();
return s;
@@ -804,7 +820,7 @@
QgsFeatureRendererV2* QgsGraduatedSymbolRendererV2::clone()
{
- QgsGraduatedSymbolRendererV2* r = new QgsGraduatedSymbolRendererV2( mAttrNum, mRanges );
+ QgsGraduatedSymbolRendererV2* r = new QgsGraduatedSymbolRendererV2( mAttrName, mRanges );
r->setUsingSymbolLevels( usingSymbolLevels() );
return r;
}
@@ -870,7 +886,7 @@
QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
QgsVectorLayer* vlayer,
- int attrNum,
+ QString attrName,
int classes,
Mode mode,
QgsSymbolV2* symbol,
@@ -878,8 +894,11 @@
{
QgsVectorDataProvider* provider = vlayer->dataProvider();
+ int attrNum = fieldNameIndex(vlayer->pendingFields(), attrName);
+
double minimum = provider->minimumValue( attrNum ).toDouble();
double maximum = provider->maximumValue( attrNum ).toDouble();
+ QgsDebugMsg(QString("min %1 // max %2").arg(minimum).arg(maximum));
QList<double> breaks;
if (mode == EqualInterval)
@@ -922,7 +941,7 @@
ranges.append( QgsRendererRangeV2(lower, upper, newSymbol, label) );
}
- return new QgsGraduatedSymbolRendererV2( attrNum, ranges );
+ return new QgsGraduatedSymbolRendererV2( attrName, ranges );
}
@@ -958,9 +977,9 @@
rangeElem = rangeElem.nextSiblingElement();
}
- int attrNum = element.attribute("attr").toInt();
+ QString attrName = element.attribute("attr");
- QgsGraduatedSymbolRendererV2* r = new QgsGraduatedSymbolRendererV2(attrNum, ranges);
+ QgsGraduatedSymbolRendererV2* r = new QgsGraduatedSymbolRendererV2(attrName, ranges);
// delete symbols if there are any more
QgsSymbolLayerV2Utils::clearSymbolMap(symbolMap);
@@ -973,7 +992,7 @@
{
QDomElement rendererElem = doc.createElement(RENDERER_TAG_NAME);
rendererElem.setAttribute("type", "graduatedSymbol");
- rendererElem.setAttribute("attr", mAttrNum);
+ rendererElem.setAttribute("attr", mAttrName);
// ranges
int i = 0;
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h 2009-11-03 16:11:23 UTC (rev 11907)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h 2009-11-03 16:18:14 UTC (rev 11908)
@@ -3,6 +3,7 @@
#define QGSRENDERERV2_H
#include "qgis.h"
+#include "qgsfield.h" // for QgsFieldMap
#include <QList>
#include <QHash>
@@ -66,11 +67,11 @@
// to be overridden
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature)=0;
- virtual void startRender(QgsRenderContext& context)=0;
+ virtual void startRender(QgsRenderContext& context, const QgsFieldMap& fields)=0;
virtual void stopRender(QgsRenderContext& context)=0;
- virtual QList<int> usedAttributes()=0;
+ virtual QList<QString> usedAttributes()=0;
virtual ~QgsFeatureRendererV2() {}
@@ -93,9 +94,15 @@
//! store renderer info to XML element
virtual QDomElement save(QDomDocument& doc);
+ /** Returns the index of a field name or -1 if the field does not exist
+ * copied from QgsVectorDataProvider... d'oh... probably should be elsewhere
+ */
+ static int fieldNameIndex( const QgsFieldMap& fields, const QString& fieldName );
+
+
protected:
QgsFeatureRendererV2(RendererType type);
-
+
RendererType mType;
bool mUsingSymbolLevels;
@@ -111,11 +118,11 @@
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
- virtual void startRender(QgsRenderContext& context);
+ virtual void startRender(QgsRenderContext& context, const QgsFieldMap& fields);
virtual void stopRender(QgsRenderContext& context);
- virtual QList<int> usedAttributes();
+ virtual QList<QString> usedAttributes();
QgsSymbolV2* symbol() const;
void setSymbol(QgsSymbolV2* s);
@@ -171,17 +178,17 @@
{
public:
- QgsCategorizedSymbolRendererV2(int attrNum = -1, QgsCategoryList categories = QgsCategoryList());
+ QgsCategorizedSymbolRendererV2(QString attrName = QString(), QgsCategoryList categories = QgsCategoryList());
virtual ~QgsCategorizedSymbolRendererV2();
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
- virtual void startRender(QgsRenderContext& context);
+ virtual void startRender(QgsRenderContext& context, const QgsFieldMap& fields);
virtual void stopRender(QgsRenderContext& context);
- virtual QList<int> usedAttributes();
+ virtual QList<QString> usedAttributes();
virtual QString dump();
@@ -200,8 +207,8 @@
bool deleteCategory(int catIndex);
void deleteAllCategories();
- int attributeIndex() const { return mAttrNum; }
- void setAttributeIndex(int attr) { mAttrNum = attr; }
+ QString classAttribute() const { return mAttrName; }
+ void setClassAttribute(QString attr) { mAttrName = attr; }
//! create renderer from XML element
static QgsFeatureRendererV2* create(QDomElement& element);
@@ -211,6 +218,9 @@
protected:
QgsCategoryList mCategories;
+ QString mAttrName;
+
+ //! attribute index (derived from attribute name in startRender)
int mAttrNum;
//! hashtable for faster access to symbols
@@ -258,17 +268,17 @@
class QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2
{
public:
- QgsGraduatedSymbolRendererV2(int attrNum = -1, QgsRangeList ranges = QgsRangeList());
+ QgsGraduatedSymbolRendererV2(QString attrName = QString(), QgsRangeList ranges = QgsRangeList());
virtual ~QgsGraduatedSymbolRendererV2();
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
- virtual void startRender(QgsRenderContext& context);
+ virtual void startRender(QgsRenderContext& context, const QgsFieldMap& fields);
virtual void stopRender(QgsRenderContext& context);
- virtual QList<int> usedAttributes();
+ virtual QList<QString> usedAttributes();
virtual QString dump();
@@ -276,9 +286,9 @@
virtual QgsSymbolV2List symbols();
- int attributeIndex() const { return mAttrNum; }
- void setAttributeIndex(int attr) { mAttrNum = attr; }
-
+ QString classAttribute() const { return mAttrName; }
+ void setClassAttribute(QString attr) { mAttrName = attr; }
+
const QgsRangeList& ranges() { return mRanges; }
bool updateRangeSymbol(int rangeIndex, QgsSymbolV2* symbol);
@@ -296,7 +306,7 @@
static QgsGraduatedSymbolRendererV2* createRenderer(
QgsVectorLayer* vlayer,
- int attrNum,
+ QString attrName,
int classes,
Mode mode,
QgsSymbolV2* symbol,
@@ -310,8 +320,11 @@
protected:
QgsRangeList mRanges;
+ QString mAttrName;
+ Mode mMode;
+
+ //! attribute index (derived from attribute name in startRender)
int mAttrNum;
- Mode mMode;
QgsSymbolV2* symbolForValue(double value);
};
Modified: branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
===================================================================
--- branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp 2009-11-03 16:11:23 UTC (rev 11907)
+++ branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp 2009-11-03 16:18:14 UTC (rev 11908)
@@ -150,9 +150,9 @@
if (radSingleSymbol->isChecked())
mRenderer = new QgsSingleSymbolRendererV2( mSingleSymbol->clone() );
else if (radCategorized->isChecked())
- mRenderer = new QgsCategorizedSymbolRendererV2(-1, QgsCategoryList());
+ mRenderer = new QgsCategorizedSymbolRendererV2(QString(), QgsCategoryList());
else if (radGraduated->isChecked())
- mRenderer = new QgsGraduatedSymbolRendererV2(-1, QgsRangeList());
+ mRenderer = new QgsGraduatedSymbolRendererV2(QString(), QgsRangeList());
else
Q_ASSERT(false);
@@ -178,7 +178,8 @@
disconnect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
{
- int idx = rendererCategorized()->attributeIndex();
+ QString attrName = rendererCategorized()->classAttribute();
+ int idx = cboCategorizedColumn->findText(attrName, Qt::MatchExactly);
cboCategorizedColumn->setCurrentIndex(idx >= 0 ? idx : 0);
}
connect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
@@ -201,17 +202,11 @@
spinGraduatedClasses->setValue( r->ranges().count() );
// set column
- int attrNum = r->attributeIndex();
- const QgsFieldMap& flds = mLayer->dataProvider()->fields();
- if (flds.contains(attrNum))
- {
- QString fldName = flds[ attrNum ].name();
- for (int i=0; i < cboGraduatedColumn->count(); i++)
- {
- if (cboGraduatedColumn->itemText(i) == fldName)
- cboGraduatedColumn->setCurrentIndex(i);
- }
- }
+ //disconnect(cboGraduatedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(graduatedColumnChanged()));
+ QString attrName = r->classAttribute();
+ int idx = cboGraduatedColumn->findText(attrName, Qt::MatchExactly);
+ cboGraduatedColumn->setCurrentIndex(idx >= 0 ? idx : 0);
+ //connect(cboGraduatedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(graduatedColumnChanged()));
}
break;
@@ -337,7 +332,8 @@
void QgsRendererV2PropertiesDialog::addCategories()
{
- int idx = mLayer->dataProvider()->fieldNameIndex(cboCategorizedColumn->currentText());
+ QString attrName = cboCategorizedColumn->currentText();
+ int idx = QgsFeatureRendererV2::fieldNameIndex(mLayer->pendingFields(), attrName);
QList<QVariant> unique_vals;
mLayer->dataProvider()->uniqueValues(idx, unique_vals);
@@ -366,7 +362,7 @@
// recreate renderer
delete mRenderer;
- mRenderer = new QgsCategorizedSymbolRendererV2(idx, cats);
+ mRenderer = new QgsCategorizedSymbolRendererV2(attrName, cats);
populateCategories();
}
@@ -438,7 +434,7 @@
void QgsRendererV2PropertiesDialog::classifyGraduated()
{
- int idx = mLayer->dataProvider()->fieldNameIndex(cboGraduatedColumn->currentText());
+ QString attrName = cboGraduatedColumn->currentText();
int classes = spinGraduatedClasses->value();
@@ -452,7 +448,7 @@
// create and set new renderer
QgsGraduatedSymbolRendererV2* r = QgsGraduatedSymbolRendererV2::createRenderer(
- mLayer, idx, classes, mode, mGraduatedSymbol, ramp);
+ mLayer, attrName, classes, mode, mGraduatedSymbol, ramp);
r->setMode(mode);
delete mRenderer;
More information about the QGIS-commit
mailing list