[QGIS Commit] r14454 - in trunk/qgis/src: core gui/symbology-ng
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Oct 30 07:22:42 EDT 2010
Author: wonder
Date: 2010-10-30 04:22:42 -0700 (Sat, 30 Oct 2010)
New Revision: 14454
Modified:
trunk/qgis/src/core/qgsvectorlayer.cpp
trunk/qgis/src/gui/symbology-ng/qgssymbollevelsv2dialog.cpp
Log:
Fixed #3006 and added a convenience spin box for setting symbol levels (constrained to 0-999)
Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp 2010-10-30 10:00:31 UTC (rev 14453)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp 2010-10-30 11:22:42 UTC (rev 14454)
@@ -840,6 +840,8 @@
for ( int j = 0; j < sym->symbolLayerCount(); j++ )
{
int level = sym->symbolLayer( j )->renderingPass();
+ if ( level < 0 || level >= 1000 ) // ignore invalid levels
+ continue;
QgsSymbolV2LevelItem item( sym, j );
while ( level >= levels.count() ) // append new empty levels
levels.append( QgsSymbolV2Level() );
Modified: trunk/qgis/src/gui/symbology-ng/qgssymbollevelsv2dialog.cpp
===================================================================
--- trunk/qgis/src/gui/symbology-ng/qgssymbollevelsv2dialog.cpp 2010-10-30 10:00:31 UTC (rev 14453)
+++ trunk/qgis/src/gui/symbology-ng/qgssymbollevelsv2dialog.cpp 2010-10-30 11:22:42 UTC (rev 14454)
@@ -6,12 +6,55 @@
#include "qgssymbolv2.h"
#include <QTableWidgetItem>
+#include <QItemDelegate>
+#include <QSpinBox>
+// delegate used from Qt Spin Box example
+class SpinBoxDelegate : public QItemDelegate
+{
+public:
+ SpinBoxDelegate(QObject *parent = 0) : QItemDelegate(parent) {}
+
+ QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem & /*option*/, const QModelIndex &/*index*/) const
+ {
+ QSpinBox *editor = new QSpinBox(parent);
+ editor->setMinimum(0);
+ editor->setMaximum(999);
+ return editor;
+ }
+
+ void setEditorData(QWidget *editor, const QModelIndex &index) const
+ {
+ int value = index.model()->data(index, Qt::EditRole).toInt();
+ QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
+ spinBox->setValue(value);
+ }
+
+ void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
+ {
+ QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
+ spinBox->interpretText();
+ int value = spinBox->value();
+
+ model->setData(index, value, Qt::EditRole);
+ }
+
+ void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex & /*index*/) const
+ {
+ editor->setGeometry(option.rect);
+ }
+
+};
+
+////////////////
+
QgsSymbolLevelsV2Dialog::QgsSymbolLevelsV2Dialog( QgsSymbolV2List symbols, bool usingSymbolLevels, QWidget* parent )
: QDialog( parent ), mSymbols( symbols )
{
setupUi( this );
+ tableLevels->setItemDelegate( new SpinBoxDelegate(this) );
+
chkEnable->setChecked( usingSymbolLevels );
connect( chkEnable, SIGNAL( clicked() ), this, SLOT( updateUi() ) );
More information about the QGIS-commit
mailing list