[QGIS Commit] r11918 - in branches/symbology-ng-branch/src:
core/symbology-ng gui/symbology-ng
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Wed Nov 4 09:04:15 EST 2009
Author: wonder
Date: 2009-11-04 09:04:14 -0500 (Wed, 04 Nov 2009)
New Revision: 11918
Modified:
branches/symbology-ng-branch/src/core/symbology-ng/qgscategorizedsymbolrendererv2.cpp
branches/symbology-ng-branch/src/core/symbology-ng/qgscategorizedsymbolrendererv2.h
branches/symbology-ng-branch/src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp
branches/symbology-ng-branch/src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h
branches/symbology-ng-branch/src/core/symbology-ng/qgssinglesymbolrendererv2.cpp
branches/symbology-ng-branch/src/core/symbology-ng/qgsstylev2.cpp
branches/symbology-ng-branch/src/core/symbology-ng/qgsstylev2.h
branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2utils.cpp
branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2utils.h
branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
Log:
categorized and graduated renderers remember their source symbol and color ramp
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgscategorizedsymbolrendererv2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgscategorizedsymbolrendererv2.cpp 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgscategorizedsymbolrendererv2.cpp 2009-11-04 14:04:14 UTC (rev 11918)
@@ -3,6 +3,7 @@
#include "qgssymbolv2.h"
#include "qgssymbollayerv2utils.h"
+#include "qgsvectorcolorrampv2.h"
#include "qgsfeature.h"
#include "qgslogger.h"
@@ -63,7 +64,11 @@
///////////////////
QgsCategorizedSymbolRendererV2::QgsCategorizedSymbolRendererV2(QString attrName, QgsCategoryList categories)
- : QgsFeatureRendererV2(RendererCategorizedSymbol), mAttrName(attrName), mCategories(categories)
+ : QgsFeatureRendererV2(RendererCategorizedSymbol),
+ mAttrName(attrName),
+ mCategories(categories),
+ mSourceSymbol(NULL),
+ mSourceColorRamp(NULL)
{
for (int i = 0; i < mCategories.count(); ++i)
{
@@ -80,6 +85,8 @@
QgsCategorizedSymbolRendererV2::~QgsCategorizedSymbolRendererV2()
{
mCategories.clear(); // this should also call destructors of symbols
+ delete mSourceSymbol;
+ delete mSourceColorRamp;
}
void QgsCategorizedSymbolRendererV2::rebuildHash()
@@ -202,6 +209,10 @@
QgsFeatureRendererV2* QgsCategorizedSymbolRendererV2::clone()
{
QgsCategorizedSymbolRendererV2* r = new QgsCategorizedSymbolRendererV2( mAttrName, mCategories );
+ if (mSourceSymbol)
+ r->setSourceSymbol(mSourceSymbol->clone());
+ if (mSourceColorRamp)
+ r->setSourceColorRamp(mSourceColorRamp->clone());
r->setUsingSymbolLevels( usingSymbolLevels() );
return r;
}
@@ -251,6 +262,25 @@
// delete symbols if there are any more
QgsSymbolLayerV2Utils::clearSymbolMap(symbolMap);
+ // try to load source symbol (optional)
+ QDomElement sourceSymbolElem = element.firstChildElement("source-symbol");
+ if (!sourceSymbolElem.isNull())
+ {
+ QgsSymbolV2Map sourceSymbolMap = QgsSymbolLayerV2Utils::loadSymbols(sourceSymbolElem);
+ if (sourceSymbolMap.contains("0"))
+ {
+ r->setSourceSymbol( sourceSymbolMap.take("0") );
+ }
+ QgsSymbolLayerV2Utils::clearSymbolMap(sourceSymbolMap);
+ }
+
+ // try to load color ramp (optional)
+ QDomElement sourceColorRampElem = element.firstChildElement("colorramp");
+ if (!sourceColorRampElem.isNull() && sourceColorRampElem.attribute("name") == "[source]")
+ {
+ r->setSourceColorRamp( QgsSymbolLayerV2Utils::loadColorRamp(sourceColorRampElem) );
+ }
+
// TODO: symbol levels
return r;
}
@@ -283,8 +313,44 @@
rendererElem.appendChild(catsElem);
// save symbols
- QDomElement symbolsElem = QgsSymbolLayerV2Utils::saveSymbols(symbols, doc);
+ QDomElement symbolsElem = QgsSymbolLayerV2Utils::saveSymbols(symbols, "symbols", doc);
rendererElem.appendChild(symbolsElem);
+ // save source symbol
+ if (mSourceSymbol)
+ {
+ QgsSymbolV2Map sourceSymbols;
+ sourceSymbols.insert("0", mSourceSymbol);
+ QDomElement sourceSymbolElem = QgsSymbolLayerV2Utils::saveSymbols(sourceSymbols, "source-symbol", doc);
+ rendererElem.appendChild(sourceSymbolElem);
+ }
+
+ // save source color ramp
+ if (mSourceColorRamp)
+ {
+ QDomElement colorRampElem = QgsSymbolLayerV2Utils::saveColorRamp("[source]", mSourceColorRamp, doc);
+ rendererElem.appendChild(colorRampElem);
+ }
+
return rendererElem;
}
+
+QgsSymbolV2* QgsCategorizedSymbolRendererV2::sourceSymbol()
+{
+ return mSourceSymbol;
+}
+void QgsCategorizedSymbolRendererV2::setSourceSymbol(QgsSymbolV2* sym)
+{
+ delete mSourceSymbol;
+ mSourceSymbol = sym;
+}
+
+QgsVectorColorRampV2* QgsCategorizedSymbolRendererV2::sourceColorRamp()
+{
+ return mSourceColorRamp;
+}
+void QgsCategorizedSymbolRendererV2::setSourceColorRamp(QgsVectorColorRampV2* ramp)
+{
+ delete mSourceColorRamp;
+ mSourceColorRamp = ramp;
+}
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgscategorizedsymbolrendererv2.h
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgscategorizedsymbolrendererv2.h 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgscategorizedsymbolrendererv2.h 2009-11-04 14:04:14 UTC (rev 11918)
@@ -5,6 +5,7 @@
#include <QHash>
+class QgsVectorColorRampV2;
class QgsRendererCategoryV2
{
@@ -78,9 +79,17 @@
//! store renderer info to XML element
virtual QDomElement save(QDomDocument& doc);
+ QgsSymbolV2* sourceSymbol();
+ void setSourceSymbol(QgsSymbolV2* sym);
+
+ QgsVectorColorRampV2* sourceColorRamp();
+ void setSourceColorRamp(QgsVectorColorRampV2* ramp);
+
protected:
QgsCategoryList mCategories;
QString mAttrName;
+ QgsSymbolV2* mSourceSymbol;
+ QgsVectorColorRampV2* mSourceColorRamp;
//! attribute index (derived from attribute name in startRender)
int mAttrNum;
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp 2009-11-04 14:04:14 UTC (rev 11918)
@@ -3,6 +3,7 @@
#include "qgssymbolv2.h"
#include "qgssymbollayerv2utils.h"
+#include "qgsvectorcolorrampv2.h"
#include "qgsfeature.h"
#include "qgslogger.h"
@@ -68,7 +69,12 @@
QgsGraduatedSymbolRendererV2::QgsGraduatedSymbolRendererV2(QString attrName, QgsRangeList ranges)
- : QgsFeatureRendererV2(RendererGraduatedSymbol), mAttrName(attrName), mRanges(ranges), mMode(Custom)
+ : QgsFeatureRendererV2(RendererGraduatedSymbol),
+ mAttrName(attrName),
+ mRanges(ranges),
+ mMode(Custom),
+ mSourceSymbol(NULL),
+ mSourceColorRamp(NULL)
{
// TODO: check ranges for sanity (NULL symbols, invalid ranges)
}
@@ -76,6 +82,8 @@
QgsGraduatedSymbolRendererV2::~QgsGraduatedSymbolRendererV2()
{
mRanges.clear(); // should delete all the symbols
+ delete mSourceSymbol;
+ delete mSourceColorRamp;
}
QgsSymbolV2* QgsGraduatedSymbolRendererV2::symbolForValue(double value)
@@ -155,6 +163,10 @@
QgsFeatureRendererV2* QgsGraduatedSymbolRendererV2::clone()
{
QgsGraduatedSymbolRendererV2* r = new QgsGraduatedSymbolRendererV2( mAttrName, mRanges );
+ if (mSourceSymbol)
+ r->setSourceSymbol(mSourceSymbol->clone());
+ if (mSourceColorRamp)
+ r->setSourceColorRamp(mSourceColorRamp->clone());
r->setUsingSymbolLevels( usingSymbolLevels() );
return r;
}
@@ -275,7 +287,11 @@
ranges.append( QgsRendererRangeV2(lower, upper, newSymbol, label) );
}
- return new QgsGraduatedSymbolRendererV2( attrName, ranges );
+ QgsGraduatedSymbolRendererV2* r = new QgsGraduatedSymbolRendererV2( attrName, ranges );
+ r->setSourceSymbol( symbol->clone() );
+ r->setSourceColorRamp( ramp->clone() );
+ r->setMode(mode);
+ return r;
}
@@ -318,6 +334,36 @@
// delete symbols if there are any more
QgsSymbolLayerV2Utils::clearSymbolMap(symbolMap);
+ // try to load source symbol (optional)
+ QDomElement sourceSymbolElem = element.firstChildElement("source-symbol");
+ if (!sourceSymbolElem.isNull())
+ {
+ QgsSymbolV2Map sourceSymbolMap = QgsSymbolLayerV2Utils::loadSymbols(sourceSymbolElem);
+ if (sourceSymbolMap.contains("0"))
+ {
+ r->setSourceSymbol( sourceSymbolMap.take("0") );
+ }
+ QgsSymbolLayerV2Utils::clearSymbolMap(sourceSymbolMap);
+ }
+
+ // try to load color ramp (optional)
+ QDomElement sourceColorRampElem = element.firstChildElement("colorramp");
+ if (!sourceColorRampElem.isNull() && sourceColorRampElem.attribute("name") == "[source]")
+ {
+ r->setSourceColorRamp( QgsSymbolLayerV2Utils::loadColorRamp(sourceColorRampElem) );
+ }
+
+ // try to load mode
+ QDomElement modeElem = element.firstChildElement("mode");
+ if (!modeElem.isNull())
+ {
+ QString modeString = modeElem.attribute("name");
+ if (modeString == "equal")
+ r->setMode(EqualInterval);
+ else if (modeString == "quantile")
+ r->setMode(Quantile);
+ }
+
// TODO: symbol levels
return r;
}
@@ -351,8 +397,57 @@
rendererElem.appendChild(rangesElem);
// save symbols
- QDomElement symbolsElem = QgsSymbolLayerV2Utils::saveSymbols(symbols, doc);
+ QDomElement symbolsElem = QgsSymbolLayerV2Utils::saveSymbols(symbols, "symbols", doc);
rendererElem.appendChild(symbolsElem);
+ // save source symbol
+ if (mSourceSymbol)
+ {
+ QgsSymbolV2Map sourceSymbols;
+ sourceSymbols.insert("0", mSourceSymbol);
+ QDomElement sourceSymbolElem = QgsSymbolLayerV2Utils::saveSymbols(sourceSymbols, "source-symbol", doc);
+ rendererElem.appendChild(sourceSymbolElem);
+ }
+
+ // save source color ramp
+ if (mSourceColorRamp)
+ {
+ QDomElement colorRampElem = QgsSymbolLayerV2Utils::saveColorRamp("[source]", mSourceColorRamp, doc);
+ rendererElem.appendChild(colorRampElem);
+ }
+
+ // save mode
+ QString modeString;
+ if (mMode == EqualInterval)
+ modeString = "equal";
+ else if (mMode == Quantile)
+ modeString = "quantile";
+ if (!modeString.isEmpty())
+ {
+ QDomElement modeElem = doc.createElement("mode");
+ modeElem.setAttribute("name", modeString);
+ rendererElem.appendChild(modeElem);
+ }
+
return rendererElem;
}
+
+QgsSymbolV2* QgsGraduatedSymbolRendererV2::sourceSymbol()
+{
+ return mSourceSymbol;
+}
+void QgsGraduatedSymbolRendererV2::setSourceSymbol(QgsSymbolV2* sym)
+{
+ delete mSourceSymbol;
+ mSourceSymbol = sym;
+}
+
+QgsVectorColorRampV2* QgsGraduatedSymbolRendererV2::sourceColorRamp()
+{
+ return mSourceColorRamp;
+}
+void QgsGraduatedSymbolRendererV2::setSourceColorRamp(QgsVectorColorRampV2* ramp)
+{
+ delete mSourceColorRamp;
+ mSourceColorRamp = ramp;
+}
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h 2009-11-04 14:04:14 UTC (rev 11918)
@@ -87,10 +87,18 @@
//! store renderer info to XML element
virtual QDomElement save(QDomDocument& doc);
+ QgsSymbolV2* sourceSymbol();
+ void setSourceSymbol(QgsSymbolV2* sym);
+
+ QgsVectorColorRampV2* sourceColorRamp();
+ void setSourceColorRamp(QgsVectorColorRampV2* ramp);
+
protected:
QgsRangeList mRanges;
QString mAttrName;
Mode mMode;
+ QgsSymbolV2* mSourceSymbol;
+ QgsVectorColorRampV2* mSourceColorRamp;
//! attribute index (derived from attribute name in startRender)
int mAttrNum;
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgssinglesymbolrendererv2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgssinglesymbolrendererv2.cpp 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgssinglesymbolrendererv2.cpp 2009-11-04 14:04:14 UTC (rev 11918)
@@ -95,7 +95,7 @@
QgsSymbolV2Map symbols;
symbols["0"] = mSymbol;
- QDomElement symbolsElem = QgsSymbolLayerV2Utils::saveSymbols(symbols, doc);
+ QDomElement symbolsElem = QgsSymbolLayerV2Utils::saveSymbols(symbols, "symbols", doc);
rendererElem.appendChild(symbolsElem);
return rendererElem;
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsstylev2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsstylev2.cpp 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsstylev2.cpp 2009-11-04 14:04:14 UTC (rev 11918)
@@ -205,7 +205,7 @@
{
if (e.tagName() == "colorramp")
{
- QgsVectorColorRampV2* ramp = loadColorRamp(e);
+ QgsVectorColorRampV2* ramp = QgsSymbolLayerV2Utils::loadColorRamp(e);
if (ramp != NULL)
addColorRamp(e.attribute("name"), ramp);
}
@@ -220,26 +220,7 @@
}
-QgsVectorColorRampV2* QgsStyleV2::loadColorRamp(QDomElement& element)
-{
- QString rampType = element.attribute("type");
-
- // parse properties
- QgsStringMap props = QgsSymbolLayerV2Utils::parseProperties(element);
-
- if (rampType == "gradient")
- return QgsVectorGradientColorRampV2::create(props);
- else if (rampType == "random")
- return QgsVectorRandomColorRampV2::create(props);
- else
- {
- QgsDebugMsg("unknown colorramp type " + rampType);
- return NULL;
- }
-}
-
-
bool QgsStyleV2::save(QString filename)
{
mErrorString = QString();
@@ -251,14 +232,14 @@
root.setAttribute("version", STYLE_CURRENT_VERSION);
doc.appendChild(root);
- QDomElement symbolsElem = QgsSymbolLayerV2Utils::saveSymbols(mSymbols, doc);
+ QDomElement symbolsElem = QgsSymbolLayerV2Utils::saveSymbols(mSymbols, "symbols", doc);
QDomElement rampsElem = doc.createElement("colorramps");
// save color ramps
for (QMap<QString, QgsVectorColorRampV2*>::iterator itr = mColorRamps.begin(); itr != mColorRamps.end(); ++itr)
{
- QDomElement rampEl = saveColorRamp(itr.key(), itr.value(), doc);
+ QDomElement rampEl = QgsSymbolLayerV2Utils::saveColorRamp(itr.key(), itr.value(), doc);
rampsElem.appendChild(rampEl);
}
@@ -278,13 +259,3 @@
return true;
}
-
-QDomElement QgsStyleV2::saveColorRamp(QString name, QgsVectorColorRampV2* ramp, QDomDocument& doc)
-{
- QDomElement rampEl = doc.createElement("colorramp");
- rampEl.setAttribute("type", ramp->type());
- rampEl.setAttribute("name", name);
-
- QgsSymbolLayerV2Utils::saveProperties(ramp->properties(), doc, rampEl);
- return rampEl;
-}
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsstylev2.h
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsstylev2.h 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsstylev2.h 2009-11-04 14:04:14 UTC (rev 11918)
@@ -78,10 +78,6 @@
protected:
- QgsVectorColorRampV2* loadColorRamp(QDomElement& element);
-
- QDomElement saveColorRamp(QString name, QgsVectorColorRampV2* ramp, QDomDocument& doc);
-
QgsSymbolV2Map mSymbols;
QgsVectorColorRampV2Map mColorRamps;
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2utils.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2utils.cpp 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2utils.cpp 2009-11-04 14:04:14 UTC (rev 11918)
@@ -515,9 +515,9 @@
return symbols;
}
-QDomElement QgsSymbolLayerV2Utils::saveSymbols(QgsSymbolV2Map& symbols, QDomDocument& doc)
+QDomElement QgsSymbolLayerV2Utils::saveSymbols(QgsSymbolV2Map& symbols, QString tagName, QDomDocument& doc)
{
- QDomElement symbolsElem = doc.createElement("symbols");
+ QDomElement symbolsElem = doc.createElement(tagName);
QMap<QString, QgsSymbolV2*> subSymbols;
@@ -544,3 +544,33 @@
delete symbols.value(name);
symbols.clear();
}
+
+
+QgsVectorColorRampV2* QgsSymbolLayerV2Utils::loadColorRamp(QDomElement& element)
+{
+ QString rampType = element.attribute("type");
+
+ // parse properties
+ QgsStringMap props = QgsSymbolLayerV2Utils::parseProperties(element);
+
+ if (rampType == "gradient")
+ return QgsVectorGradientColorRampV2::create(props);
+ else if (rampType == "random")
+ return QgsVectorRandomColorRampV2::create(props);
+ else
+ {
+ QgsDebugMsg("unknown colorramp type " + rampType);
+ return NULL;
+ }
+}
+
+
+QDomElement QgsSymbolLayerV2Utils::saveColorRamp(QString name, QgsVectorColorRampV2* ramp, QDomDocument& doc)
+{
+ QDomElement rampEl = doc.createElement("colorramp");
+ rampEl.setAttribute("type", ramp->type());
+ rampEl.setAttribute("name", name);
+
+ QgsSymbolLayerV2Utils::saveProperties(ramp->properties(), doc, rampEl);
+ return rampEl;
+}
Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2utils.h
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2utils.h 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2utils.h 2009-11-04 14:04:14 UTC (rev 11918)
@@ -57,9 +57,12 @@
static void saveProperties(QgsStringMap props, QDomDocument& doc, QDomElement& element);
static QgsSymbolV2Map loadSymbols(QDomElement& element);
- static QDomElement saveSymbols(QgsSymbolV2Map& symbols, QDomDocument& doc);
+ static QDomElement saveSymbols(QgsSymbolV2Map& symbols, QString tagName, QDomDocument& doc);
static void clearSymbolMap(QgsSymbolV2Map& symbols);
+
+ static QgsVectorColorRampV2* loadColorRamp(QDomElement& element);
+ static QDomElement saveColorRamp(QString name, QgsVectorColorRampV2* ramp, QDomDocument& doc);
};
class QPolygonF;
Modified: branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
===================================================================
--- branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp 2009-11-04 09:08:34 UTC (rev 11917)
+++ branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp 2009-11-04 14:04:14 UTC (rev 11918)
@@ -181,15 +181,39 @@
stackedWidget->setCurrentWidget(pageCategorized);
updateCategorizedSymbolIcon();
+ populateCategories();
- disconnect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
{
- QString attrName = rendererCategorized()->classAttribute();
+ QgsCategorizedSymbolRendererV2* r = rendererCategorized();
+
+ // set column
+ disconnect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
+ QString attrName = r->classAttribute();
int idx = cboCategorizedColumn->findText(attrName, Qt::MatchExactly);
cboCategorizedColumn->setCurrentIndex(idx >= 0 ? idx : 0);
+ connect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
+
+ // set source symbol
+ if (r->sourceSymbol())
+ {
+ delete mCategorizedSymbol;
+ mCategorizedSymbol = r->sourceSymbol()->clone();
+ updateCategorizedSymbolIcon();
+ }
+
+ // set source color ramp
+ if (r->sourceColorRamp())
+ {
+ QSize rampIconSize(50,16);
+ QIcon icon = QgsSymbolLayerV2Utils::colorRampPreviewIcon(r->sourceColorRamp(), rampIconSize);
+ if (cboCategorizedColorRamp->itemText(0) == "[source]")
+ cboCategorizedColorRamp->setItemIcon(0, icon);
+ else
+ cboCategorizedColorRamp->insertItem(0, icon, "[source]");
+ cboCategorizedColorRamp->setCurrentIndex(0);
+ }
}
- connect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
- populateCategories();
+
break;
case QgsFeatureRendererV2::RendererGraduatedSymbol:
@@ -213,6 +237,26 @@
int idx = cboGraduatedColumn->findText(attrName, Qt::MatchExactly);
cboGraduatedColumn->setCurrentIndex(idx >= 0 ? idx : 0);
//connect(cboGraduatedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(graduatedColumnChanged()));
+
+ // set source symbol
+ if (r->sourceSymbol())
+ {
+ delete mGraduatedSymbol;
+ mGraduatedSymbol = r->sourceSymbol()->clone();
+ updateGraduatedSymbolIcon();
+ }
+
+ // set source color ramp
+ if (r->sourceColorRamp())
+ {
+ QSize rampIconSize(50,16);
+ QIcon icon = QgsSymbolLayerV2Utils::colorRampPreviewIcon(r->sourceColorRamp(), rampIconSize);
+ if (cboGraduatedColorRamp->itemText(0) == "[source]")
+ cboGraduatedColorRamp->setItemIcon(0, icon);
+ else
+ cboGraduatedColorRamp->insertItem(0, icon, "[source]");
+ cboGraduatedColorRamp->setCurrentIndex(0);
+ }
}
break;
@@ -346,9 +390,14 @@
//DlgAddCategories dlg(mStyle, createDefaultSymbol(), unique_vals, this);
//if (!dlg.exec())
// return;
+
+ QgsVectorColorRampV2* ramp = NULL;
+ QString rampName = cboCategorizedColorRamp->currentText();
+ if (rampName == "[source]" && rendererCategorized())
+ ramp = rendererCategorized()->sourceColorRamp()->clone();
+ else
+ ramp = mStyle->colorRamp( rampName );
- QgsVectorColorRampV2* ramp = mStyle->colorRamp( cboCategorizedColorRamp->currentText() );
-
QgsCategoryList cats;
::createCategories(cats, unique_vals, mCategorizedSymbol, ramp );
@@ -368,8 +417,11 @@
// recreate renderer
delete mRenderer;
- mRenderer = new QgsCategorizedSymbolRendererV2(attrName, cats);
-
+ QgsCategorizedSymbolRendererV2* r = new QgsCategorizedSymbolRendererV2(attrName, cats);
+ r->setSourceSymbol(mCategorizedSymbol->clone());
+ r->setSourceColorRamp(ramp->clone());
+ mRenderer = r;
+
populateCategories();
}
@@ -444,8 +496,13 @@
int classes = spinGraduatedClasses->value();
- QgsVectorColorRampV2* ramp = mStyle->colorRamp( cboGraduatedColorRamp->currentText() );
-
+ QgsVectorColorRampV2* ramp = NULL;
+ QString rampName = cboGraduatedColorRamp->currentText();
+ if (rampName == "[source]" && rendererGraduated())
+ ramp = rendererGraduated()->sourceColorRamp()->clone();
+ else
+ ramp = mStyle->colorRamp( rampName );
+
QgsGraduatedSymbolRendererV2::Mode mode;
if (cboGraduatedMode->currentIndex() == 0)
mode = QgsGraduatedSymbolRendererV2::EqualInterval;
@@ -455,7 +512,6 @@
// create and set new renderer
QgsGraduatedSymbolRendererV2* r = QgsGraduatedSymbolRendererV2::createRenderer(
mLayer, attrName, classes, mode, mGraduatedSymbol, ramp);
- r->setMode(mode);
delete mRenderer;
mRenderer = r;
More information about the QGIS-commit
mailing list