Index: src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.h =================================================================== --- src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.h (revisión: 12213) +++ src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.h (copia de trabajo) @@ -2,6 +2,7 @@ #define QGSGRADUATEDSYMBOLRENDERERV2WIDGET_H #include "qgsrendererv2widget.h" +#include class QgsGraduatedSymbolRendererV2; @@ -24,7 +25,14 @@ void changeGraduatedSymbol(); void classifyGraduated(); void rangesDoubleClicked( const QModelIndex & idx ); + void rangesClicked( const QModelIndex & idx ); + void changeCurrentValue( QStandardItem * item ); + /**Adds a class manually to the classification*/ + void addClass(); + /**Removes a class from the classification*/ + void deleteCurrentClass(); + protected: void updateUiFromRenderer(); @@ -39,12 +47,19 @@ void populateRanges(); void changeRangeSymbol( int rangeIdx ); + void changeRange( int rangeIdx); + + protected: QgsGraduatedSymbolRendererV2* mRenderer; QgsSymbolV2* mGraduatedSymbol; + + int mRowSelected; + + }; Index: src/gui/symbology-ng/qgsludialog.h =================================================================== --- src/gui/symbology-ng/qgsludialog.h (revisión: 0) +++ src/gui/symbology-ng/qgsludialog.h (revisión: 0) @@ -0,0 +1,38 @@ +/*************************************************************************** + qgsludialog.h - description + ------------------- + begin : September 2004 + copyright : (C) 2004 by Marco Hugentobler + email : marco.hugentobler@autoform.ch + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +/* $Id: qgsludialog.h 9138 2008-08-23 21:37:31Z jef $ */ + +#ifndef QGSLUDIALOG_H +#define QGSLUDIALOG_H + +#include "ui_qgsludialogbase.h" +#include "qgisgui.h" + + +class QgsLUDialog: public QDialog, private Ui::QgsLUDialogBase +{ + Q_OBJECT + public: + QgsLUDialog( QWidget *parent = 0, Qt::WFlags fl = QgisGui::ModalDialogFlags ); + ~QgsLUDialog(); + QString lowerValue() const; + void setLowerValue( QString val ); + QString upperValue() const; + void setUpperValue( QString val ); +}; + +#endif Index: src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp =================================================================== --- src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp (revisión: 12213) +++ src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp (copia de trabajo) @@ -11,6 +11,8 @@ #include "qgssymbolv2selectordialog.h" +#include "qgsludialog.h" + #include #include #include @@ -53,9 +55,14 @@ mGraduatedSymbol = QgsSymbolV2::defaultSymbol( mLayer->geometryType() ); connect( viewGraduated, SIGNAL( doubleClicked( const QModelIndex & ) ), this, SLOT( rangesDoubleClicked( const QModelIndex & ) ) ); - + connect( viewGraduated, SIGNAL( clicked( const QModelIndex & ) ), this, SLOT( rangesClicked( const QModelIndex & ) ) ); + connect( mg, SIGNAL( itemChanged ( QStandardItem * ) ), this, SLOT( changeCurrentValue( QStandardItem * ) ) ); connect( btnGraduatedClassify, SIGNAL( clicked() ), this, SLOT( classifyGraduated() ) ); connect( btnChangeGraduatedSymbol, SIGNAL( clicked() ), this, SLOT( changeGraduatedSymbol() ) ); + connect( btnGraduatedDelete, SIGNAL(clicked()), this, SLOT(deleteCurrentClass()) ); + connect( btnGraduatedAdd, SIGNAL(clicked()), this, SLOT(addClass()) ); + + // initialize from previously set renderer updateUiFromRenderer(); @@ -202,9 +209,10 @@ QStandardItemModel* m = qobject_cast( viewGraduated->model() ); m->clear(); + mRowSelected = -1; QStringList labels; - labels << "Range" << "Label"; + labels << "Symbol" << "Range" << "Label"; m->setHorizontalHeaderLabels( labels ); QSize iconSize( 16, 16 ); @@ -217,12 +225,16 @@ QString rangeStr = QString::number( range.lowerValue(), 'f', 4 ) + " - " + QString::number( range.upperValue(), 'f', 4 ); QIcon icon = QgsSymbolLayerV2Utils::symbolPreviewIcon( range.symbol(), iconSize ); - QStandardItem* item = new QStandardItem( icon, rangeStr ); + QStandardItem* item = new QStandardItem( icon, "" ); //item->setData(k); // set attribute value as user role item->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled ); + + QStandardItem* item2 = new QStandardItem(rangeStr); + item2->setEditable(0); QList list; - list << item << new QStandardItem( range.label() ); + list << item << item2 << new QStandardItem( range.label() ); + m->appendRow( list ); } @@ -245,11 +257,24 @@ { if ( idx.isValid() && idx.column() == 0 ) changeRangeSymbol( idx.row() ); + if (idx.isValid() && idx.column() == 1) + changeRange(idx.row()); } +void QgsGraduatedSymbolRendererV2Widget::rangesClicked(const QModelIndex & idx) +{ + if (!idx.isValid()) + mRowSelected = -1; + else + mRowSelected = idx.row(); +} + void QgsGraduatedSymbolRendererV2Widget::changeRangeSymbol( int rangeIdx ) { + /*gsSymbolV2* newSymbol = mRenderer->ranges()[rangeIdx].symbol()->clone() + QString* label = range.label()*/ + QgsSymbolV2* newSymbol = mRenderer->ranges()[rangeIdx].symbol()->clone(); QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, this ); @@ -264,3 +289,45 @@ populateRanges(); } +void QgsGraduatedSymbolRendererV2Widget::changeRange(int rangeIdx) +{ + QgsLUDialog dialog( this ); + + const QgsRendererRangeV2& range = mRenderer->ranges()[rangeIdx]; + dialog.setLowerValue( QString("%1").arg(range.lowerValue()) ); + dialog.setUpperValue( QString("%1").arg(range.upperValue()) ); + + if ( dialog.exec() == QDialog::Accepted ) + { + double lowerValue = dialog.lowerValue().toDouble(); + double upperValue = dialog.upperValue().toDouble(); + mRenderer->updateRangeUpperValue(rangeIdx, upperValue); + mRenderer->updateRangeLowerValue(rangeIdx, lowerValue); + populateRanges(); + + } + +} + +void QgsGraduatedSymbolRendererV2Widget::addClass() +{ + mRenderer->addClass(mGraduatedSymbol); + populateRanges(); +} + +void QgsGraduatedSymbolRendererV2Widget::deleteCurrentClass() +{ + + mRenderer->deleteClass(mRowSelected); + populateRanges(); +} + +void QgsGraduatedSymbolRendererV2Widget::changeCurrentValue( QStandardItem * item ) +{ + if (item->column() == 2) + { + QString label = item->text(); + int idx = item->row(); + mRenderer->updateRangeLabel(idx, label); + } +} Index: src/gui/symbology-ng/qgsludialog.cpp =================================================================== --- src/gui/symbology-ng/qgsludialog.cpp (revisión: 0) +++ src/gui/symbology-ng/qgsludialog.cpp (revisión: 0) @@ -0,0 +1,51 @@ +/*************************************************************************** + qgsludialog.cpp - description + ------------------- + begin : September 2004 + copyright : (C) 2004 by Marco Hugentobler + email : marco.hugentobler@autoform.ch + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +/* $Id: qgsludialog.cpp 9138 2008-08-23 21:37:31Z jef $ */ + +#include "qgsludialog.h" + + +QgsLUDialog::QgsLUDialog( QWidget *parent, Qt::WFlags fl ) + : QDialog( parent, fl ) +{ + setupUi( this ); +} + +QgsLUDialog::~QgsLUDialog() +{ + +} + +QString QgsLUDialog::lowerValue() const +{ + return mLowerEdit->text(); +} + +QString QgsLUDialog::upperValue() const +{ + return mUpperEdit->text(); +} + +void QgsLUDialog::setLowerValue( QString val ) +{ + mLowerEdit->setText( val ); +} + +void QgsLUDialog::setUpperValue( QString val ) +{ + mUpperEdit->setText( val ); +} Index: src/gui/CMakeLists.txt =================================================================== --- src/gui/CMakeLists.txt (revisión: 12213) +++ src/gui/CMakeLists.txt (copia de trabajo) @@ -16,6 +16,8 @@ symbology-ng/qgsvectorgradientcolorrampv2dialog.cpp symbology-ng/qgsvectorrandomcolorrampv2dialog.cpp symbology-ng/qgsvectorcolorbrewercolorrampv2dialog.cpp +symbology-ng/qgsludialog.cpp +symbology-ng/ qgisgui.cpp qgisinterface.cpp @@ -59,7 +61,9 @@ symbology-ng/qgsvectorgradientcolorrampv2dialog.h symbology-ng/qgsvectorrandomcolorrampv2dialog.h symbology-ng/qgsvectorcolorbrewercolorrampv2dialog.h +symbology-ng/qgsludialog.h + qgscomposerview.h qgsdetaileditemdelegate.h qgsdetaileditemwidget.h Index: src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp =================================================================== --- src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp (revisión: 12213) +++ src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp (copia de trabajo) @@ -12,6 +12,8 @@ #include #include // for legend +#include + QgsRendererRangeV2::QgsRendererRangeV2(double lowerValue, double upperValue, QgsSymbolV2* symbol, QString label) : mLowerValue(lowerValue), mUpperValue(upperValue), mSymbol(symbol), mLabel(label) { @@ -61,6 +63,16 @@ mLabel = label; } +void QgsRendererRangeV2::setUpperValue(double upperValue) +{ + mUpperValue = upperValue; +} + +void QgsRendererRangeV2::setLowerValue(double lowerValue) +{ + mLowerValue = lowerValue; +} + QString QgsRendererRangeV2::dump() { return QString("%1 - %2::%3::%4\n").arg(mLowerValue).arg(mUpperValue).arg(mLabel).arg(mSymbol->dump()); @@ -153,6 +165,22 @@ return true; } +bool QgsGraduatedSymbolRendererV2::updateRangeUpperValue(int rangeIndex, double value) +{ + if (rangeIndex < 0 || rangeIndex >= mRanges.size()) + return false; + mRanges[rangeIndex].setUpperValue(value); + return true; +} + +bool QgsGraduatedSymbolRendererV2::updateRangeLowerValue(int rangeIndex, double value) +{ + if (rangeIndex < 0 || rangeIndex >= mRanges.size()) + return false; + mRanges[rangeIndex].setLowerValue(value); + return true; +} + QString QgsGraduatedSymbolRendererV2::dump() { QString s = QString("GRADUATED: attr %1\n").arg(mAttrName); @@ -473,3 +501,16 @@ delete mSourceColorRamp; mSourceColorRamp = ramp; } + +void QgsGraduatedSymbolRendererV2::addClass( QgsSymbolV2* symbol ) +{ + QgsSymbolV2* newSymbol = symbol->clone(); + QString label = "0.0 - 0.0"; + mRanges.insert(0, QgsRendererRangeV2(0.0, 0.0, newSymbol, label ) ); + +} + +void QgsGraduatedSymbolRendererV2::deleteClass( int idx ) +{ + mRanges.removeAt(idx); +} Index: src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h =================================================================== --- src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h (revisión: 12213) +++ src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h (copia de trabajo) @@ -19,6 +19,8 @@ void setSymbol( QgsSymbolV2* s ); void setLabel( QString label ); + void setLowerValue(double lowerValue); + void setUpperValue(double upperValue); // debugging QString dump(); @@ -62,6 +64,11 @@ bool updateRangeSymbol( int rangeIndex, QgsSymbolV2* symbol ); bool updateRangeLabel( int rangeIndex, QString label ); + bool updateRangeUpperValue( int rangeIndex, double value); + bool updateRangeLowerValue( int rangeIndex, double value); + + void addClass( QgsSymbolV2* symbol ); + void deleteClass( int idx ); enum Mode { Index: src/ui/qgsgraduatedsymbolrendererv2widget.ui =================================================================== --- src/ui/qgsgraduatedsymbolrendererv2widget.ui (revisión: 12213) +++ src/ui/qgsgraduatedsymbolrendererv2widget.ui (copia de trabajo) @@ -132,6 +132,13 @@ + + + Add class + + + + Delete class