[QGIS Commit] r11062 - in branches/symbology-ng-branch: python/core src/core/symbology-ng src/gui/symbology-ng

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Jul 13 16:58:53 EDT 2009


Author: wonder
Date: 2009-07-13 16:58:51 -0400 (Mon, 13 Jul 2009)
New Revision: 11062

Modified:
   branches/symbology-ng-branch/python/core/symbology-ng-core.sip
   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
   branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h
Log:
Fixed some bugs, change symbols for ranges in graduated renderer, update of bindings.


Modified: branches/symbology-ng-branch/python/core/symbology-ng-core.sip
===================================================================
--- branches/symbology-ng-branch/python/core/symbology-ng-core.sip	2009-07-13 20:23:55 UTC (rev 11061)
+++ branches/symbology-ng-branch/python/core/symbology-ng-core.sip	2009-07-13 20:58:51 UTC (rev 11062)
@@ -87,7 +87,7 @@
 	virtual QList<int> usedAttributes();
 
   QgsSymbolV2* symbol() const;
-  void setSymbol(QgsSymbolV2* s);
+  void setSymbol(QgsSymbolV2* s /Transfer/);
 };
 
 //////////
@@ -101,7 +101,7 @@
 public:
   
   //! takes ownership of symbol
-  QgsRendererCategoryV2(QVariant value, QgsSymbolV2* symbol, QString label);
+  QgsRendererCategoryV2(QVariant value, QgsSymbolV2* symbol /Transfer/, QString label);
   
   QgsRendererCategoryV2(const QgsRendererCategoryV2& cat);
   
@@ -111,7 +111,7 @@
   QgsSymbolV2* symbol();
   QString label() const;
   
-  void setSymbol(QgsSymbolV2* s);
+  void setSymbol(QgsSymbolV2* s /Transfer/);
   void setLabel(QString label);
   
 };
@@ -143,7 +143,7 @@
   //! return index of category with specified value (-1 if not found)
   int categoryIndexForValue(QVariant val);
   
-  bool updateCategorySymbol(int catIndex, QgsSymbolV2* symbol);
+  bool updateCategorySymbol(int catIndex, QgsSymbolV2* symbol /Transfer/);
   bool updateCategoryLabel(int catIndex, QString label);
   
   bool deleteCategory(int catIndex);
@@ -159,6 +159,81 @@
 
 //////////
 
+class QgsRendererRangeV2
+{
+%TypeHeaderCode
+#include <qgsrendererv2.h>
+%End
+
+public:
+  QgsRendererRangeV2(double lowerValue, double upperValue, QgsSymbolV2* symbol /Transfer/, QString label);
+  QgsRendererRangeV2(const QgsRendererRangeV2& range);
+
+  ~QgsRendererRangeV2();
+
+  double lowerValue() const;
+  double upperValue() const;
+
+  QgsSymbolV2* symbol() const;
+  QString label() const;
+
+  void setSymbol(QgsSymbolV2* s /Transfer/);
+  void setLabel(QString label);
+};
+
+typedef QList<QgsRendererRangeV2> QgsRangeList;
+
+class QgsGraduatedSymbolRendererV2 : QgsFeatureRendererV2
+{
+%TypeHeaderCode
+#include <qgsrendererv2.h>
+%End
+
+public:
+  QgsGraduatedSymbolRendererV2(int attrNum = -1, QgsRangeList ranges = QgsRangeList());
+
+  virtual ~QgsGraduatedSymbolRendererV2();
+
+  virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature);
+
+  virtual void startRender(QgsRenderContext& context);
+
+  virtual void stopRender(QgsRenderContext& context);
+
+  virtual QList<int> usedAttributes();
+
+  int attributeIndex() const;
+  void setAttributeIndex(int attr);
+
+  const QgsRangeList& ranges();
+
+  bool updateRangeSymbol(int rangeIndex, QgsSymbolV2* symbol /Transfer/);
+  bool updateRangeLabel(int rangeIndex, QString label);
+
+  enum Mode
+  {
+    EqualInterval,
+    Quantile,
+    Custom
+  };
+
+  Mode mode() const;
+  void setMode(Mode mode);
+
+  static QgsGraduatedSymbolRendererV2* createRenderer(
+                  QgsVectorLayer* vlayer,
+                  int attrNum,
+                  int classes,
+                  Mode mode,
+                  QgsSymbolV2* symbol,
+                  QgsVectorColorRampV2* ramp);
+
+protected:
+  QgsSymbolV2* symbolForValue(double value);
+};
+
+//////////
+
 class QgsSymbolLayerV2
 {
 %TypeHeaderCode

Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp	2009-07-13 20:23:55 UTC (rev 11061)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp	2009-07-13 20:58:51 UTC (rev 11062)
@@ -294,6 +294,11 @@
 
 ///////////////////
 
+QgsRendererCategoryV2::QgsRendererCategoryV2(QVariant value, QgsSymbolV2* symbol, QString label)
+  : mValue(value), mSymbol(symbol), mLabel(label)
+{
+}
+
 QgsRendererCategoryV2::QgsRendererCategoryV2(const QgsRendererCategoryV2& cat)
   : mValue(cat.mValue), mLabel(cat.mLabel)
 {
@@ -306,12 +311,34 @@
   delete mSymbol;
 }
 
+QVariant QgsRendererCategoryV2::value() const
+{
+  return mValue;
+}
+
+QgsSymbolV2* QgsRendererCategoryV2::symbol() const
+{
+  return mSymbol;
+}
+
+QString QgsRendererCategoryV2::label() const
+{
+  return mLabel;
+}
+
 void QgsRendererCategoryV2::setSymbol(QgsSymbolV2* s)
 {
+  if (mSymbol == s)
+    return;
   delete mSymbol;
   mSymbol = s;
 }
 
+void QgsRendererCategoryV2::setLabel(QString label)
+{
+  mLabel = label;
+}
+
 QString QgsRendererCategoryV2::dump()
 {
   return QString("%1::%2::%3\n").arg(mValue.toString()).arg(mLabel).arg(mSymbol->dump());
@@ -474,6 +501,40 @@
   delete mSymbol;
 }
 
+double QgsRendererRangeV2::lowerValue() const
+{
+  return mLowerValue;
+}
+
+double QgsRendererRangeV2::upperValue() const
+{
+  return mUpperValue;
+}
+
+QgsSymbolV2* QgsRendererRangeV2::symbol() const
+{
+  return mSymbol;
+}
+
+QString QgsRendererRangeV2::label() const
+{
+  return mLabel;
+}
+
+void QgsRendererRangeV2::setSymbol(QgsSymbolV2* s)
+{
+  if (mSymbol == s)
+    return;
+  delete mSymbol;
+  mSymbol = s;
+}
+
+void QgsRendererRangeV2::setLabel(QString label)
+{
+  mLabel = label;
+}
+
+
 ///////////
 
 
@@ -535,8 +596,23 @@
   return lst;
 }
 
+bool QgsGraduatedSymbolRendererV2::updateRangeSymbol(int rangeIndex, QgsSymbolV2* symbol)
+{
+  if (rangeIndex < 0 || rangeIndex >= mRanges.size())
+    return false;
+  mRanges[rangeIndex].setSymbol(symbol);
+  return true;
+}
 
+bool QgsGraduatedSymbolRendererV2::updateRangeLabel(int rangeIndex, QString label)
+{
+  if (rangeIndex < 0 || rangeIndex >= mRanges.size())
+    return false;
+  mRanges[rangeIndex].setLabel(label);
+  return true;
+}
 
+
 static QList<double> _calcEqualIntervalBreaks(double minimum, double maximum, int classes)
 {
   double step = (maximum - minimum) / classes;

Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h	2009-07-13 20:23:55 UTC (rev 11061)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h	2009-07-13 20:58:51 UTC (rev 11062)
@@ -111,20 +111,19 @@
 public:
   
   //! takes ownership of symbol
-  QgsRendererCategoryV2(QVariant value, QgsSymbolV2* symbol, QString label)
-  : mValue(value), mSymbol(symbol), mLabel(label) { }
+  QgsRendererCategoryV2(QVariant value, QgsSymbolV2* symbol, QString label);
   
   //! copy constructor
   QgsRendererCategoryV2(const QgsRendererCategoryV2& cat);
   
   ~QgsRendererCategoryV2();
   
-  QVariant value() const { return mValue; }
-  QgsSymbolV2* symbol() const { return mSymbol; }
-  QString label() const { return mLabel; }
+  QVariant value() const;
+  QgsSymbolV2* symbol() const;
+  QString label() const;
   
   void setSymbol(QgsSymbolV2* s);
-  void setLabel(QString label) { mLabel = label; }
+  void setLabel(QString label);
 
   // debugging
   QString dump();
@@ -192,12 +191,15 @@
   
   ~QgsRendererRangeV2();
   
-  double lowerValue() const { return mLowerValue; }
-  double upperValue() const { return mUpperValue; }
+  double lowerValue() const;
+  double upperValue() const;
   
-  QgsSymbolV2* symbol() const { return mSymbol; }
-  QString label() const { return mLabel; }
+  QgsSymbolV2* symbol() const;
+  QString label() const;
   
+  void setSymbol(QgsSymbolV2* s);
+  void setLabel(QString label);
+
 protected:
   double mLowerValue, mUpperValue;
   QgsSymbolV2* mSymbol;
@@ -229,6 +231,9 @@
   
   const QgsRangeList& ranges() { return mRanges; }
   
+  bool updateRangeSymbol(int rangeIndex, QgsSymbolV2* symbol);
+  bool updateRangeLabel(int rangeIndex, QString label);
+
   enum Mode
   {
     EqualInterval,

Modified: branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
===================================================================
--- branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp	2009-07-13 20:23:55 UTC (rev 11061)
+++ branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp	2009-07-13 20:58:51 UTC (rev 11062)
@@ -72,6 +72,8 @@
   
   mGraduatedSymbol = createDefaultSymbol();
   
+  connect(viewGraduated, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(rangesDoubleClicked(const QModelIndex &)));
+
   connect(btnGraduatedClassify, SIGNAL(clicked()), this, SLOT(classifyGraduated()));
   connect(btnChangeGraduatedSymbol, SIGNAL(clicked()), this, SLOT(changeGraduatedSymbol()));
 
@@ -152,11 +154,11 @@
       stackedWidget->setCurrentWidget(pageCategorized);
       updateCategorizedSymbolIcon();
 
+      disconnect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
       {
         int idx = rendererCategorized()->attributeIndex();
         cboCategorizedColumn->setCurrentIndex(idx >= 0 ? idx : 0);
       }
-      disconnect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
       connect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
       populateCategories();
       break;
@@ -495,6 +497,41 @@
   viewGraduated->resizeColumnToContents(0);
 }
 
+/*
+int QgsRendererV2PropertiesDialog::currentRangeRow()
+{
+  QModelIndex idx = viewGraduated->selectionModel()->currentIndex();
+  if (!idx.isValid())
+    return -1;
+  return idx.row();
+}
+*/
+
+void QgsRendererV2PropertiesDialog::rangesDoubleClicked(const QModelIndex & idx)
+{
+  if (idx.isValid() && idx.column() == 0)
+    changeRangeSymbol(idx.row());
+}
+
+void QgsRendererV2PropertiesDialog::changeRangeSymbol(int rangeIdx)
+{
+
+  QgsGraduatedSymbolRendererV2* r = rendererGraduated();
+  QgsSymbolV2* newSymbol = r->ranges()[rangeIdx].symbol()->clone();
+
+  QgsSymbolV2SelectorDialog dlg(newSymbol, mStyle, this);
+  if (!dlg.exec())
+  {
+    delete newSymbol;
+    return;
+  }
+
+  r->updateRangeSymbol(rangeIdx, newSymbol);
+
+  populateRanges();
+}
+
+
 void QgsRendererV2PropertiesDialog::symbolLevels()
 {
   QgsSymbolV2List symbols;

Modified: branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h
===================================================================
--- branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h	2009-07-13 20:23:55 UTC (rev 11061)
+++ branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h	2009-07-13 20:58:51 UTC (rev 11062)
@@ -32,6 +32,7 @@
 
   void changeGraduatedSymbol();
   void classifyGraduated();
+  void rangesDoubleClicked(const QModelIndex & idx);
 
   void symbolLevels();
 
@@ -65,7 +66,9 @@
   QVariant currentCategory();
   
   void changeCategorySymbol();
-  
+
+  void changeRangeSymbol(int rangeIdx);
+
   QgsSingleSymbolRendererV2* rendererSingle();
   QgsCategorizedSymbolRendererV2* rendererCategorized();
   QgsGraduatedSymbolRendererV2* rendererGraduated();



More information about the QGIS-commit mailing list