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

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sat May 16 10:25:37 EDT 2009


Author: wonder
Date: 2009-05-16 10:25:35 -0400 (Sat, 16 May 2009)
New Revision: 10805

Modified:
   branches/symbology-ng-branch/python/core/symbology-ng-core.sip
   branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp
   branches/symbology-ng-branch/src/core/qgsvectorlayer.h
   branches/symbology-ng-branch/src/core/symbology-ng/qgsmarkersymbollayerv2.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/core/symbology-ng/qgssymbollayerv2.cpp
   branches/symbology-ng-branch/src/core/symbology-ng/qgssymbolv2.cpp
   branches/symbology-ng-branch/src/core/symbology-ng/qgssymbolv2.h
   branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
   branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h
   branches/symbology-ng-branch/src/ui/qgsrendererv2propsdialogbase.ui
Log:
Improved categorized renderer settings in renderer dialog.
Fixed some bugs with marker cache image size, categorized renderer.
Added dump() functions for easier debugging.


Modified: branches/symbology-ng-branch/python/core/symbology-ng-core.sip
===================================================================
--- branches/symbology-ng-branch/python/core/symbology-ng-core.sip	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/python/core/symbology-ng-core.sip	2009-05-16 14:25:35 UTC (rev 10805)
@@ -29,6 +29,9 @@
 	
 	virtual ~QgsFeatureRendererV2();
 	
+	virtual QString dump();
+
+	
 	void renderFeature(QgsFeature& feature, QgsRenderContext& context);
 	
 protected:
@@ -304,7 +307,7 @@
   
   QImage bigSymbolPreviewImage();
 	
-	void dump();
+	QString dump();
   
   virtual QgsSymbolV2* clone() const = 0 /Factory/;
 	

Modified: branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp	2009-05-16 14:25:35 UTC (rev 10805)
@@ -684,6 +684,8 @@
   {
     if (mRendererV2 == NULL)
       return FALSE;
+
+    QgsDebugMsg("rendering v2:\n" + mRendererV2->dump());
     
     mRendererV2->startRender(rendererContext);
     
@@ -3714,3 +3716,22 @@
   }
   return 0; //not found
 }
+
+
+QgsFeatureRendererV2* QgsVectorLayer::rendererV2()
+{
+  return mRendererV2;
+}
+void QgsVectorLayer::setRendererV2(QgsFeatureRendererV2* r)
+{
+  delete mRendererV2;
+  mRendererV2 = r;
+}
+bool QgsVectorLayer::isUsingRendererV2()
+{
+  return mUsingRendererV2;
+}
+void QgsVectorLayer::setUsingRendererV2(bool usingRendererV2)
+{
+  mUsingRendererV2 = usingRendererV2;
+}

Modified: branches/symbology-ng-branch/src/core/qgsvectorlayer.h
===================================================================
--- branches/symbology-ng-branch/src/core/qgsvectorlayer.h	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/core/qgsvectorlayer.h	2009-05-16 14:25:35 UTC (rev 10805)
@@ -163,13 +163,13 @@
     void setRenderer( QgsRenderer * r );
     
     /** Return renderer V2. Added in QGIS 1.2 */
-    QgsFeatureRendererV2* rendererV2() { return mRendererV2; }
+    QgsFeatureRendererV2* rendererV2();
     /** Set renderer V2. Added in QGIS 1.2 */
-    void setRendererV2(QgsFeatureRendererV2* r) { mRendererV2 = r; }
+    void setRendererV2(QgsFeatureRendererV2* r);
     /** Return whether using renderer V2. Added in QGIS 1.2 */
-    bool isUsingRendererV2() { return mUsingRendererV2; }
+    bool isUsingRendererV2();
     /** set whether to use renderer V2 for drawing. Added in QGIS 1.2 */
-    void setUsingRendererV2(bool usingRendererV2) { mUsingRendererV2 = usingRendererV2; }
+    void setUsingRendererV2(bool usingRendererV2);
 
     /** Returns point, line or polygon */
     QGis::GeometryType geometryType() const;

Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp	2009-05-16 14:25:35 UTC (rev 10805)
@@ -148,8 +148,14 @@
   // cache the marker
   // TODO: use caching only when drawing to screen (not printer)
   // TODO: decide whether to use QImage or QPixmap - based on the render context
-  double s = mSize+2;
-  mCache = QImage(QSize(s,s), QImage::Format_ARGB32_Premultiplied);
+
+  // calculate necessary image size for the cache
+  int pw = (( mPen.width() == 0 ? 1 : mPen.width() ) + 1 ) / 2 * 2; // make even (round up); handle cosmetic pen
+  int imageSize = (( int ) mSize + pw ) / 2 * 2 + 1; //  make image width, height odd; account for pen width
+
+  double center = ((double) imageSize / 2) + 0.5; // add 1/2 pixel for proper rounding when the figure's coordinates are added
+
+  mCache = QImage(QSize(imageSize,imageSize), QImage::Format_ARGB32_Premultiplied);
   mCache.fill(0);
   
   QPainter p;
@@ -157,7 +163,7 @@
   p.setRenderHint( QPainter::Antialiasing );
   p.setBrush(mBrush);
   p.setPen(mPen);
-  p.translate(QPointF(s/2.0, s/2.0));
+  p.translate(QPointF(center, center));
   drawMarker(&p);
   p.end();
 }
@@ -176,13 +182,10 @@
   //p->translate(point);
   
   //drawMarker(p);
-  double s = mSize+2;
+  double s = mCache.width();
   //if (mCache.isValid())
     p->drawImage(point + QPointF(-s/2.0, -s/2.0), mCache);
-  //else
-    //qDebug("WTF!!!!!!!!!");
   
-  //p->translate(-point); // TODO: maybe save+restore is faster?
   //p->restore();
 }
 

Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.cpp	2009-05-16 14:25:35 UTC (rev 10805)
@@ -236,6 +236,12 @@
   }
 }
 
+QString QgsFeatureRendererV2::dump()
+{
+  return "UNKNOWN RENDERER\n";
+}
+
+
 ///////////////////
 
 QgsSingleSymbolRendererV2::QgsSingleSymbolRendererV2(QgsSymbolV2* symbol)
@@ -280,6 +286,12 @@
   mSymbol = s;
 }
 
+QString QgsSingleSymbolRendererV2::dump()
+{
+  return QString("SINGLE: %1").arg(mSymbol->dump());
+}
+
+
 ///////////////////
 
 QgsRendererCategoryV2::QgsRendererCategoryV2(const QgsRendererCategoryV2& cat)
@@ -300,6 +312,11 @@
   mSymbol = s;
 }
 
+QString QgsRendererCategoryV2::dump()
+{
+  return QString("%1::%2::%3\n").arg(mValue.toString()).arg(mLabel).arg(mSymbol->dump());
+}
+
 ///////////////////
 
 QgsCategorizedSymbolRendererV2::QgsCategorizedSymbolRendererV2(int attrNum, QgsCategoryList categories)
@@ -322,25 +339,23 @@
   mCategories.clear(); // this should also call destructors of symbols
 }
 
+void QgsCategorizedSymbolRendererV2::rebuildHash()
+{
+  mSymbolHash.clear();
+
+  for (int i = 0; i < mCategories.count(); ++i)
+  {
+    QgsRendererCategoryV2& cat = mCategories[i];
+    mSymbolHash.insert(cat.value().toString(), cat.symbol());
+  }
+}
+
 QgsSymbolV2* QgsCategorizedSymbolRendererV2::symbolForValue(QVariant value)
 {
-  static QHash<QString, QgsSymbolV2*> symbolHash;
-  static bool first = true;
-  
-  // init the hash table if not yet filled
   // TODO: special case for int, double
-  if (first)
-  {
-    for (int i = 0; i < mCategories.count(); ++i)
-    {
-      QgsRendererCategoryV2& cat = mCategories[i];
-      symbolHash.insert(cat.value().toString(), cat.symbol());
-    }
-    first = false;
-  }
   
-  QHash<QString, QgsSymbolV2*>::iterator it = symbolHash.find(value.toString());
-  if (it == symbolHash.end())
+  QHash<QString, QgsSymbolV2*>::iterator it = mSymbolHash.find(value.toString());
+  if (it == mSymbolHash.end())
   {
     QgsDebugMsg("attribute value not found: " + value.toString());
     return NULL;
@@ -405,6 +420,9 @@
 
 void QgsCategorizedSymbolRendererV2::startRender(QgsRenderContext& context)
 {
+  // make sure that the hash table is up to date
+  rebuildHash();
+
   QgsCategoryList::iterator it = mCategories.begin();
   for ( ; it != mCategories.end(); ++it)
     it->symbol()->startRender(context);
@@ -424,7 +442,15 @@
   return lst;
 }
 
+QString QgsCategorizedSymbolRendererV2::dump()
+{
+  QString s = QString("CATEGORIZED: idx %1\n").arg(mAttrNum);
+  for (int i=0; i<mCategories.count();i++)
+    s += mCategories[i].dump();
+  return s;
+}
 
+
 /////////////////////////
 // graduated
 

Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgsrendererv2.h	2009-05-16 14:25:35 UTC (rev 10805)
@@ -38,6 +38,9 @@
 	virtual ~QgsFeatureRendererV2() {}
 	
 	void renderFeature(QgsFeature& feature, QgsRenderContext& context);
+
+  //! for debugging
+  virtual QString dump();
 	
 	//TODO: symbols() for symbol levels
   
@@ -66,6 +69,8 @@
   QgsSymbolV2* symbol() const;
   void setSymbol(QgsSymbolV2* s);
 
+  virtual QString dump();
+
 protected:
 	QgsSymbolV2* mSymbol;
 };
@@ -90,6 +95,9 @@
   
   void setSymbol(QgsSymbolV2* s);
   void setLabel(QString label) { mLabel = label; }
+
+  // debugging
+  QString dump();
   
 protected:
   QVariant mValue;
@@ -115,6 +123,8 @@
 	
 	virtual QList<int> usedAttributes();
   
+  virtual QString dump();
+
   const QgsCategoryList& categories() { return mCategories; }
   
   //! return index of category with specified value (-1 if not found)
@@ -132,7 +142,12 @@
 protected:
   QgsCategoryList mCategories;
   int mAttrNum;
-  
+
+  //! hashtable for faster access to symbols
+  QHash<QString, QgsSymbolV2*> mSymbolHash;
+
+  void rebuildHash();
+
   QgsSymbolV2* symbolForValue(QVariant value);
 };
 

Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2.cpp	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgssymbollayerv2.cpp	2009-05-16 14:25:35 UTC (rev 10805)
@@ -29,7 +29,7 @@
   context.setPainter(painter);
   
   startRender(context);
-  renderPoint(QPointF(size.width()/2 + 0.5, size.height()/2 + 0.5), context);
+  renderPoint(QPointF(size.width()/2, size.height()/2), context);
   stopRender(context);
 }
 

Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgssymbolv2.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgssymbolv2.cpp	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgssymbolv2.cpp	2009-05-16 14:25:35 UTC (rev 10805)
@@ -190,12 +190,23 @@
 }
 
 	
-void QgsSymbolV2::dump()
+QString QgsSymbolV2::dump()
 {
+  QString t;
+  switch (type())
+  {
+    case QgsSymbolV2::Marker: t = "MARKER"; break;
+    case QgsSymbolV2::Line: t = "LINE"; break;
+    case QgsSymbolV2::Fill: t = "FILL"; break;
+    default: Q_ASSERT(0 && "unknown symbol type");
+  }
+  QString s = QString("%1 SYMBOL (%2 layers) color %3").arg(t).arg(mLayers.count()).arg(QgsSymbolLayerV2Utils::encodeColor(color()));
+
   for (QgsSymbolLayerV2List::iterator it = mLayers.begin(); it != mLayers.end(); ++it)
   {
     // TODO:
   }
+  return s;
 }
 
 QgsSymbolLayerV2List QgsSymbolV2::cloneLayers() const

Modified: branches/symbology-ng-branch/src/core/symbology-ng/qgssymbolv2.h
===================================================================
--- branches/symbology-ng-branch/src/core/symbology-ng/qgssymbolv2.h	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/core/symbology-ng/qgssymbolv2.h	2009-05-16 14:25:35 UTC (rev 10805)
@@ -64,7 +64,7 @@
   
   QImage bigSymbolPreviewImage();
 	
-	void dump();
+  QString dump();
   
   virtual QgsSymbolV2* clone() const = 0;
 	

Modified: branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
===================================================================
--- branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp	2009-05-16 14:25:35 UTC (rev 10805)
@@ -47,11 +47,14 @@
   labels << "Value" << "Label";
   m->setHorizontalHeaderLabels(labels);
   viewCategories->setModel(m);
-  
+
+  mCategorizedSymbol = createDefaultSymbol();
+
   connect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
   
   connect(viewCategories, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(categoriesDoubleClicked(const QModelIndex &)));
   
+  connect(btnChangeCategorizedSymbol, SIGNAL(clicked()), this, SLOT(changeCategorizedSymbol()));
   connect(btnAddCategories, SIGNAL(clicked()), this, SLOT(addCategories()));
   connect(btnDeleteCategory, SIGNAL(clicked()), this, SLOT(deleteCategory()));
   connect(btnDeleteAllCategories, SIGNAL(clicked()), this, SLOT(deleteAllCategories()));
@@ -144,7 +147,8 @@
       radCategorized->setChecked(true);
     
       stackedWidget->setCurrentWidget(pageCategorized);
-      
+      updateCategorizedSymbolIcon();
+
       {
         int idx = rendererCategorized()->attributeIndex();
         cboCategorizedColumn->setCurrentIndex(idx >= 0 ? idx : 0);
@@ -201,6 +205,21 @@
   }
 }
 
+void QgsRendererV2PropertiesDialog::changeCategorizedSymbol()
+{
+  QgsSymbolV2SelectorDialog dlg(mCategorizedSymbol, mStyle, this);
+  if (!dlg.exec())
+    return;
+
+  updateCategorizedSymbolIcon();
+}
+
+void QgsRendererV2PropertiesDialog::updateCategorizedSymbolIcon()
+{
+  QIcon icon = QgsSymbolLayerV2Utils::symbolPreviewIcon(mCategorizedSymbol, btnChangeCategorizedSymbol->iconSize());
+  btnChangeCategorizedSymbol->setIcon(icon);
+}
+
 void QgsRendererV2PropertiesDialog::populateCategories()
 {
   QStandardItemModel* m = qobject_cast<QStandardItemModel*>(viewCategories->model());
@@ -310,16 +329,10 @@
   //if (!dlg.exec())
   //  return;
   
-  QgsSymbolV2* newSymbol = createDefaultSymbol();
-  QgsSymbolV2SelectorDialog dlg(newSymbol, mStyle, this);
-  if (!dlg.exec())
-  {
-    delete newSymbol;
-    return;
-  }
+  QgsVectorColorRampV2* ramp = mStyle->colorRamp( cboCategorizedColorRamp->currentText() );
   
   QgsCategoryList cats;
-  ::createCategories(cats, unique_vals, newSymbol, new QgsVectorGradientColorRampV2()); // dlg.activeRamp());
+  ::createCategories(cats, unique_vals, mCategorizedSymbol, ramp );
   
   // TODO: if not all categories are desired, delete some!
   /*
@@ -393,11 +406,15 @@
 {
   QSize rampIconSize(50,16);
   cboGraduatedColorRamp->setIconSize(rampIconSize);
+  cboCategorizedColorRamp->setIconSize(rampIconSize);
+
   QStringList rampNames = mStyle->colorRampNames();
   for (QStringList::iterator it = rampNames.begin(); it != rampNames.end(); ++it)
   {
     QgsVectorColorRampV2* ramp = mStyle->colorRamp(*it);
-    cboGraduatedColorRamp->addItem( QgsSymbolLayerV2Utils::colorRampPreviewIcon(ramp, rampIconSize), *it);
+    QIcon icon = QgsSymbolLayerV2Utils::colorRampPreviewIcon(ramp, rampIconSize);
+    cboGraduatedColorRamp->addItem(icon, *it);
+    cboCategorizedColorRamp->addItem(icon, *it);
     delete ramp;
   }
 }

Modified: branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h
===================================================================
--- branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h	2009-05-16 14:25:35 UTC (rev 10805)
@@ -23,6 +23,7 @@
   void changeSingleSymbol();
   void updateRenderer();
   
+  void changeCategorizedSymbol();
   void categoryColumnChanged();
   void categoriesDoubleClicked(const QModelIndex & idx);
   void addCategories();
@@ -38,6 +39,7 @@
   void updateUiFromRenderer();
   
   void updateSingleSymbolIcon();
+  void updateCategorizedSymbolIcon();
   void updateGraduatedSymbolIcon();
  
   //! create default symbol for the layer's geometry type (point/line/polygon)
@@ -71,6 +73,7 @@
   QgsStyleV2* mStyle;
   
   QgsSymbolV2* mGraduatedSymbol;
+  QgsSymbolV2* mCategorizedSymbol;
 };
 
 #endif

Modified: branches/symbology-ng-branch/src/ui/qgsrendererv2propsdialogbase.ui
===================================================================
--- branches/symbology-ng-branch/src/ui/qgsrendererv2propsdialogbase.ui	2009-05-16 11:32:16 UTC (rev 10804)
+++ branches/symbology-ng-branch/src/ui/qgsrendererv2propsdialogbase.ui	2009-05-16 14:25:35 UTC (rev 10805)
@@ -1,7 +1,8 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
  <class>QgsRendererV2PropsDialogBase</class>
- <widget class="QDialog" name="QgsRendererV2PropsDialogBase" >
-  <property name="geometry" >
+ <widget class="QDialog" name="QgsRendererV2PropsDialogBase">
+  <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
@@ -9,52 +10,52 @@
     <height>398</height>
    </rect>
   </property>
-  <property name="windowTitle" >
+  <property name="windowTitle">
    <string>Renderer V2 properties</string>
   </property>
-  <layout class="QGridLayout" >
-   <item row="0" column="0" >
-    <layout class="QVBoxLayout" >
+  <layout class="QGridLayout">
+   <item row="0" column="0">
+    <layout class="QVBoxLayout">
      <item>
-      <widget class="QLabel" name="label" >
-       <property name="text" >
+      <widget class="QLabel" name="label">
+       <property name="text">
         <string>Renderer:</string>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QRadioButton" name="radSingleSymbol" >
-       <property name="text" >
+      <widget class="QRadioButton" name="radSingleSymbol">
+       <property name="text">
         <string>single symbol</string>
        </property>
-       <property name="checked" >
+       <property name="checked">
         <bool>true</bool>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QRadioButton" name="radCategorized" >
-       <property name="text" >
+      <widget class="QRadioButton" name="radCategorized">
+       <property name="text">
         <string>categorized</string>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QRadioButton" name="radGraduated" >
-       <property name="enabled" >
+      <widget class="QRadioButton" name="radGraduated">
+       <property name="enabled">
         <bool>true</bool>
        </property>
-       <property name="text" >
+       <property name="text">
         <string>graduated</string>
        </property>
       </widget>
      </item>
      <item>
       <spacer>
-       <property name="orientation" >
+       <property name="orientation">
         <enum>Qt::Vertical</enum>
        </property>
-       <property name="sizeHint" >
+       <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>111</height>
@@ -63,51 +64,61 @@
       </spacer>
      </item>
      <item>
-      <widget class="QPushButton" name="btnSymbolLevels" >
-       <property name="enabled" >
+      <widget class="QPushButton" name="btnSymbolLevels">
+       <property name="enabled">
         <bool>false</bool>
        </property>
-       <property name="text" >
+       <property name="text">
         <string>Symbol levels...</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
-   <item row="0" column="1" >
-    <widget class="Line" name="line" >
-     <property name="orientation" >
+   <item row="0" column="1">
+    <widget class="Line" name="line">
+     <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
     </widget>
    </item>
-   <item row="0" column="2" >
-    <widget class="QStackedWidget" name="stackedWidget" >
-     <property name="currentIndex" >
-      <number>0</number>
+   <item row="1" column="0" colspan="3">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
      </property>
-     <widget class="QWidget" name="pageSingleSymbol" >
-      <layout class="QGridLayout" >
-       <item row="0" column="0" >
-        <widget class="QLabel" name="label_2" >
-         <property name="text" >
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="2">
+    <widget class="QStackedWidget" name="stackedWidget">
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
+     <widget class="QWidget" name="pageSingleSymbol">
+      <layout class="QGridLayout">
+       <item row="0" column="0">
+        <widget class="QLabel" name="label_2">
+         <property name="text">
           <string>Symbol:</string>
          </property>
         </widget>
        </item>
-       <item row="0" column="1" >
-        <widget class="QPushButton" name="btnChangeSingleSymbol" >
-         <property name="text" >
+       <item row="0" column="1">
+        <widget class="QPushButton" name="btnChangeSingleSymbol">
+         <property name="text">
           <string>Change</string>
          </property>
         </widget>
        </item>
-       <item row="0" column="2" >
+       <item row="0" column="2">
         <spacer>
-         <property name="orientation" >
+         <property name="orientation">
           <enum>Qt::Horizontal</enum>
          </property>
-         <property name="sizeHint" >
+         <property name="sizeHint" stdset="0">
           <size>
            <width>40</width>
            <height>20</height>
@@ -115,12 +126,12 @@
          </property>
         </spacer>
        </item>
-       <item row="1" column="0" colspan="2" >
+       <item row="1" column="0" colspan="2">
         <spacer>
-         <property name="orientation" >
+         <property name="orientation">
           <enum>Qt::Vertical</enum>
          </property>
-         <property name="sizeHint" >
+         <property name="sizeHint" stdset="0">
           <size>
            <width>271</width>
            <height>181</height>
@@ -130,177 +141,249 @@
        </item>
       </layout>
      </widget>
-     <widget class="QWidget" name="pageCategorized" >
-      <layout class="QGridLayout" >
-       <item row="0" column="0" >
-        <widget class="QLabel" name="label_3" >
-         <property name="text" >
-          <string>Column:</string>
-         </property>
-        </widget>
+     <widget class="QWidget" name="pageCategorized">
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <widget class="QLabel" name="label_3">
+           <property name="text">
+            <string>Column:</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QComboBox" name="cboCategorizedColumn">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Expanding</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
        </item>
-       <item row="0" column="1" colspan="2" >
-        <widget class="QComboBox" name="cboCategorizedColumn" />
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <item>
+          <widget class="QLabel" name="label_9">
+           <property name="text">
+            <string>Symbol:</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="btnChangeCategorizedSymbol">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+             <horstretch>1</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>change</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_10">
+           <property name="text">
+            <string>Color ramp:</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QComboBox" name="cboCategorizedColorRamp">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+             <horstretch>1</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </item>
-       <item row="1" column="0" colspan="6" >
-        <widget class="QTreeView" name="viewCategories" >
-         <property name="iconSize" >
+       <item>
+        <widget class="QTreeView" name="viewCategories">
+         <property name="iconSize">
           <size>
            <width>16</width>
            <height>16</height>
           </size>
          </property>
-         <property name="rootIsDecorated" >
+         <property name="rootIsDecorated">
           <bool>false</bool>
          </property>
-         <property name="allColumnsShowFocus" >
+         <property name="allColumnsShowFocus">
           <bool>true</bool>
          </property>
         </widget>
        </item>
-       <item row="2" column="1" >
-        <widget class="QPushButton" name="btnAddCategories" >
-         <property name="text" >
-          <string>Add</string>
-         </property>
-        </widget>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_3">
+         <item>
+          <widget class="QPushButton" name="btnAddCategories">
+           <property name="text">
+            <string>Classify</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="btnDeleteCategory">
+           <property name="text">
+            <string>Delete</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="btnDeleteAllCategories">
+           <property name="text">
+            <string>Delete all</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer>
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="btnJoinCategories">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="text">
+            <string>Join</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </item>
-       <item row="2" column="2" >
-        <widget class="QPushButton" name="btnDeleteCategory" >
-         <property name="text" >
-          <string>Delete</string>
-         </property>
-        </widget>
-       </item>
-       <item row="2" column="3" >
-        <widget class="QPushButton" name="btnDeleteAllCategories" >
-         <property name="text" >
-          <string>Delete all</string>
-         </property>
-        </widget>
-       </item>
-       <item row="2" column="4" >
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="2" column="5" >
-        <widget class="QPushButton" name="btnJoinCategories" >
-         <property name="enabled" >
-          <bool>false</bool>
-         </property>
-         <property name="text" >
-          <string>Join</string>
-         </property>
-        </widget>
-       </item>
       </layout>
      </widget>
-     <widget class="QWidget" name="pageGraduated" >
-      <layout class="QVBoxLayout" >
+     <widget class="QWidget" name="pageGraduated">
+      <layout class="QVBoxLayout">
        <item>
-        <layout class="QGridLayout" >
-         <item row="0" column="0" >
-          <widget class="QLabel" name="label_4" >
-           <property name="text" >
+        <layout class="QGridLayout">
+         <item row="0" column="0">
+          <widget class="QLabel" name="label_4">
+           <property name="text">
             <string>Column:</string>
            </property>
           </widget>
          </item>
-         <item row="0" column="1" colspan="2" >
-          <widget class="QComboBox" name="cboGraduatedColumn" />
+         <item row="0" column="1" colspan="2">
+          <widget class="QComboBox" name="cboGraduatedColumn"/>
          </item>
-         <item row="1" column="0" >
-          <widget class="QLabel" name="label_6" >
-           <property name="text" >
+         <item row="1" column="0">
+          <widget class="QLabel" name="label_6">
+           <property name="text">
             <string>Symbol:</string>
            </property>
           </widget>
          </item>
-         <item row="1" column="1" >
-          <widget class="QPushButton" name="btnChangeGraduatedSymbol" >
-           <property name="sizePolicy" >
-            <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+         <item row="1" column="1">
+          <widget class="QPushButton" name="btnChangeGraduatedSymbol">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
              <horstretch>1</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
-           <property name="text" >
+           <property name="text">
             <string>change</string>
            </property>
           </widget>
          </item>
-         <item row="1" column="3" >
-          <widget class="QLabel" name="label_5" >
-           <property name="text" >
+         <item row="1" column="3">
+          <widget class="QLabel" name="label_5">
+           <property name="text">
             <string>Classes:</string>
            </property>
-           <property name="alignment" >
+           <property name="alignment">
             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
            </property>
           </widget>
          </item>
-         <item row="1" column="4" >
-          <widget class="QSpinBox" name="spinGraduatedClasses" >
-           <property name="sizePolicy" >
-            <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+         <item row="1" column="4">
+          <widget class="QSpinBox" name="spinGraduatedClasses">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
              <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
-           <property name="value" >
+           <property name="value">
             <number>5</number>
            </property>
           </widget>
          </item>
-         <item row="2" column="0" >
-          <widget class="QLabel" name="label_7" >
-           <property name="text" >
+         <item row="2" column="0">
+          <widget class="QLabel" name="label_7">
+           <property name="text">
             <string>Color ramp:</string>
            </property>
           </widget>
          </item>
-         <item row="2" column="1" >
-          <widget class="QComboBox" name="cboGraduatedColorRamp" />
+         <item row="2" column="1">
+          <widget class="QComboBox" name="cboGraduatedColorRamp"/>
          </item>
-         <item row="2" column="3" >
-          <widget class="QLabel" name="label_8" >
-           <property name="text" >
+         <item row="2" column="3">
+          <widget class="QLabel" name="label_8">
+           <property name="text">
             <string>Mode:</string>
            </property>
-           <property name="alignment" >
+           <property name="alignment">
             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
            </property>
           </widget>
          </item>
-         <item row="2" column="4" >
-          <widget class="QComboBox" name="cboGraduatedMode" >
+         <item row="2" column="4">
+          <widget class="QComboBox" name="cboGraduatedMode">
            <item>
-            <property name="text" >
+            <property name="text">
              <string>Equal Interval</string>
             </property>
            </item>
            <item>
-            <property name="text" >
+            <property name="text">
              <string>Quantile</string>
             </property>
            </item>
           </widget>
          </item>
-         <item rowspan="2" row="1" column="2" >
+         <item row="1" column="2" rowspan="2">
           <spacer>
-           <property name="orientation" >
+           <property name="orientation">
             <enum>Qt::Horizontal</enum>
            </property>
-           <property name="sizeHint" >
+           <property name="sizeHint" stdset="0">
             <size>
              <width>20</width>
              <height>20</height>
@@ -311,30 +394,30 @@
         </layout>
        </item>
        <item>
-        <widget class="QTreeView" name="viewGraduated" />
+        <widget class="QTreeView" name="viewGraduated"/>
        </item>
        <item>
-        <layout class="QHBoxLayout" >
+        <layout class="QHBoxLayout">
          <item>
-          <widget class="QPushButton" name="btnGraduatedClassify" >
-           <property name="text" >
+          <widget class="QPushButton" name="btnGraduatedClassify">
+           <property name="text">
             <string>Classify</string>
            </property>
           </widget>
          </item>
          <item>
-          <widget class="QPushButton" name="btnGraduatedDelete" >
-           <property name="text" >
+          <widget class="QPushButton" name="btnGraduatedDelete">
+           <property name="text">
             <string>Delete class</string>
            </property>
           </widget>
          </item>
          <item>
           <spacer>
-           <property name="orientation" >
+           <property name="orientation">
             <enum>Qt::Horizontal</enum>
            </property>
-           <property name="sizeHint" >
+           <property name="sizeHint" stdset="0">
             <size>
              <width>40</width>
              <height>20</height>
@@ -348,18 +431,32 @@
      </widget>
     </widget>
    </item>
-   <item row="1" column="0" colspan="3" >
-    <widget class="QDialogButtonBox" name="buttonBox" >
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons" >
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
   </layout>
  </widget>
+ <tabstops>
+  <tabstop>buttonBox</tabstop>
+  <tabstop>radSingleSymbol</tabstop>
+  <tabstop>radCategorized</tabstop>
+  <tabstop>radGraduated</tabstop>
+  <tabstop>btnChangeSingleSymbol</tabstop>
+  <tabstop>cboCategorizedColumn</tabstop>
+  <tabstop>btnChangeCategorizedSymbol</tabstop>
+  <tabstop>cboCategorizedColorRamp</tabstop>
+  <tabstop>viewCategories</tabstop>
+  <tabstop>btnAddCategories</tabstop>
+  <tabstop>btnDeleteCategory</tabstop>
+  <tabstop>btnDeleteAllCategories</tabstop>
+  <tabstop>btnJoinCategories</tabstop>
+  <tabstop>cboGraduatedColumn</tabstop>
+  <tabstop>btnChangeGraduatedSymbol</tabstop>
+  <tabstop>spinGraduatedClasses</tabstop>
+  <tabstop>cboGraduatedColorRamp</tabstop>
+  <tabstop>cboGraduatedMode</tabstop>
+  <tabstop>viewGraduated</tabstop>
+  <tabstop>btnGraduatedClassify</tabstop>
+  <tabstop>btnGraduatedDelete</tabstop>
+  <tabstop>btnSymbolLevels</tabstop>
+ </tabstops>
  <resources/>
  <connections>
   <connection>
@@ -368,11 +465,11 @@
    <receiver>QgsRendererV2PropsDialogBase</receiver>
    <slot>accept()</slot>
    <hints>
-    <hint type="sourcelabel" >
+    <hint type="sourcelabel">
      <x>248</x>
      <y>254</y>
     </hint>
-    <hint type="destinationlabel" >
+    <hint type="destinationlabel">
      <x>157</x>
      <y>274</y>
     </hint>
@@ -384,11 +481,11 @@
    <receiver>QgsRendererV2PropsDialogBase</receiver>
    <slot>reject()</slot>
    <hints>
-    <hint type="sourcelabel" >
+    <hint type="sourcelabel">
      <x>316</x>
      <y>260</y>
     </hint>
-    <hint type="destinationlabel" >
+    <hint type="destinationlabel">
      <x>286</x>
      <y>274</y>
     </hint>



More information about the QGIS-commit mailing list