Skip to content

Commit 9856a4b

Browse files
author
jef
committedNov 21, 2009
apply patch #2133 by Mark Baas (slightly modified). Thanks
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@12219 c8812cc2-4d05-0410-92ff-de0c093fc19c

9 files changed

+288
-157
lines changed
 

‎src/app/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ SET(QGIS_APP_SRCS
2727
qgshelpviewer.cpp
2828
qgsidentifyresults.cpp
2929
qgslabeldialog.cpp
30-
qgsludialog.cpp
3130
qgsmaptooladdfeature.cpp
3231
qgsmaptooladdvertex.cpp
3332
qgsmaptooladdisland.cpp
@@ -132,7 +131,6 @@ SET (QGIS_APP_MOC_HDRS
132131
qgshelpviewer.h
133132
qgsidentifyresults.h
134133
qgslabeldialog.h
135-
qgsludialog.h
136134

137135
qgsmaptoolidentify.h
138136
qgsmaptoolsplitfeatures.h

‎src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp

Lines changed: 185 additions & 146 deletions
Large diffs are not rendered by default.

‎src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ class CORE_EXPORT QgsRendererRangeV2
1919

2020
void setSymbol( QgsSymbolV2* s );
2121
void setLabel( QString label );
22+
void setLowerValue( double lowerValue );
23+
void setUpperValue( double upperValue );
2224

2325
// debugging
2426
QString dump();
@@ -62,6 +64,11 @@ class CORE_EXPORT QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2
6264

6365
bool updateRangeSymbol( int rangeIndex, QgsSymbolV2* symbol );
6466
bool updateRangeLabel( int rangeIndex, QString label );
67+
bool updateRangeUpperValue( int rangeIndex, double value );
68+
bool updateRangeLowerValue( int rangeIndex, double value );
69+
70+
void addClass( QgsSymbolV2* symbol );
71+
void deleteClass( int idx );
6572

6673
enum Mode
6774
{

‎src/gui/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ qgsprojectionselector.cpp
4343
qgsquickprint.cpp
4444
qgsrubberband.cpp
4545
qgsvertexmarker.cpp
46+
qgsludialog.cpp
4647
)
4748

4849
SET(QGIS_GUI_MOC_HDRS
@@ -72,6 +73,7 @@ qgsmaptoolemitpoint.h
7273
qgsmessageviewer.h
7374
qgsprojectionselector.h
7475
qgsquickprint.h
76+
qgsludialog.h
7577
)
7678

7779
QT4_WRAP_CPP(QGIS_GUI_MOC_SRCS ${QGIS_GUI_MOC_HDRS})
File renamed without changes.

‎src/app/qgsludialog.h renamed to ‎src/gui/qgsludialog.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include "qgisgui.h"
2424

2525

26-
class QgsLUDialog: public QDialog, private Ui::QgsLUDialogBase
26+
class GUI_EXPORT QgsLUDialog: public QDialog, private Ui::QgsLUDialogBase
2727
{
2828
Q_OBJECT
2929
public:

‎src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp

Lines changed: 71 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
#include "qgssymbolv2selectordialog.h"
1313

14+
#include "qgsludialog.h"
15+
1416
#include <QMessageBox>
1517
#include <QStandardItemModel>
1618
#include <QStandardItem>
@@ -53,9 +55,14 @@ QgsGraduatedSymbolRendererV2Widget::QgsGraduatedSymbolRendererV2Widget( QgsVecto
5355
mGraduatedSymbol = QgsSymbolV2::defaultSymbol( mLayer->geometryType() );
5456

5557
connect( viewGraduated, SIGNAL( doubleClicked( const QModelIndex & ) ), this, SLOT( rangesDoubleClicked( const QModelIndex & ) ) );
56-
58+
connect( viewGraduated, SIGNAL( clicked( const QModelIndex & ) ), this, SLOT( rangesClicked( const QModelIndex & ) ) );
59+
connect( mg, SIGNAL( itemChanged( QStandardItem * ) ), this, SLOT( changeCurrentValue( QStandardItem * ) ) );
5760
connect( btnGraduatedClassify, SIGNAL( clicked() ), this, SLOT( classifyGraduated() ) );
5861
connect( btnChangeGraduatedSymbol, SIGNAL( clicked() ), this, SLOT( changeGraduatedSymbol() ) );
62+
connect( btnGraduatedDelete, SIGNAL( clicked() ), this, SLOT( deleteCurrentClass() ) );
63+
connect( btnGraduatedAdd, SIGNAL( clicked() ), this, SLOT( addClass() ) );
64+
65+
5966

6067
// initialize from previously set renderer
6168
updateUiFromRenderer();
@@ -202,9 +209,10 @@ void QgsGraduatedSymbolRendererV2Widget::populateRanges()
202209

203210
QStandardItemModel* m = qobject_cast<QStandardItemModel*>( viewGraduated->model() );
204211
m->clear();
212+
mRowSelected = -1;
205213

206214
QStringList labels;
207-
labels << "Range" << "Label";
215+
labels << "Symbol" << "Range" << "Label";
208216
m->setHorizontalHeaderLabels( labels );
209217

210218
QSize iconSize( 16, 16 );
@@ -217,12 +225,16 @@ void QgsGraduatedSymbolRendererV2Widget::populateRanges()
217225
QString rangeStr = QString::number( range.lowerValue(), 'f', 4 ) + " - " + QString::number( range.upperValue(), 'f', 4 );
218226

219227
QIcon icon = QgsSymbolLayerV2Utils::symbolPreviewIcon( range.symbol(), iconSize );
220-
QStandardItem* item = new QStandardItem( icon, rangeStr );
228+
QStandardItem* item = new QStandardItem( icon, "" );
221229
//item->setData(k); // set attribute value as user role
222230
item->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled );
223231

232+
QStandardItem* item2 = new QStandardItem( rangeStr );
233+
item2->setEditable( 0 );
234+
224235
QList<QStandardItem *> list;
225-
list << item << new QStandardItem( range.label() );
236+
list << item << item2 << new QStandardItem( range.label() );
237+
226238
m->appendRow( list );
227239
}
228240

@@ -231,25 +243,34 @@ void QgsGraduatedSymbolRendererV2Widget::populateRanges()
231243
}
232244

233245

234-
/*
246+
#if 0
235247
int QgsRendererV2PropertiesDialog::currentRangeRow()
236248
{
237249
QModelIndex idx = viewGraduated->selectionModel()->currentIndex();
238-
if (!idx.isValid())
250+
if ( !idx.isValid() )
239251
return -1;
240252
return idx.row();
241253
}
242-
*/
254+
#endif
243255

244256
void QgsGraduatedSymbolRendererV2Widget::rangesDoubleClicked( const QModelIndex & idx )
245257
{
246258
if ( idx.isValid() && idx.column() == 0 )
247259
changeRangeSymbol( idx.row() );
260+
if ( idx.isValid() && idx.column() == 1 )
261+
changeRange( idx.row() );
248262
}
249263

250-
void QgsGraduatedSymbolRendererV2Widget::changeRangeSymbol( int rangeIdx )
264+
void QgsGraduatedSymbolRendererV2Widget::rangesClicked( const QModelIndex & idx )
251265
{
266+
if ( !idx.isValid() )
267+
mRowSelected = -1;
268+
else
269+
mRowSelected = idx.row();
270+
}
252271

272+
void QgsGraduatedSymbolRendererV2Widget::changeRangeSymbol( int rangeIdx )
273+
{
253274
QgsSymbolV2* newSymbol = mRenderer->ranges()[rangeIdx].symbol()->clone();
254275

255276
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, this );
@@ -264,3 +285,45 @@ void QgsGraduatedSymbolRendererV2Widget::changeRangeSymbol( int rangeIdx )
264285
populateRanges();
265286
}
266287

288+
void QgsGraduatedSymbolRendererV2Widget::changeRange( int rangeIdx )
289+
{
290+
QgsLUDialog dialog( this );
291+
292+
const QgsRendererRangeV2& range = mRenderer->ranges()[rangeIdx];
293+
dialog.setLowerValue( QString( "%1" ).arg( range.lowerValue() ) );
294+
dialog.setUpperValue( QString( "%1" ).arg( range.upperValue() ) );
295+
296+
if ( dialog.exec() == QDialog::Accepted )
297+
{
298+
double lowerValue = dialog.lowerValue().toDouble();
299+
double upperValue = dialog.upperValue().toDouble();
300+
mRenderer->updateRangeUpperValue( rangeIdx, upperValue );
301+
mRenderer->updateRangeLowerValue( rangeIdx, lowerValue );
302+
populateRanges();
303+
304+
}
305+
306+
}
307+
308+
void QgsGraduatedSymbolRendererV2Widget::addClass()
309+
{
310+
mRenderer->addClass( mGraduatedSymbol );
311+
populateRanges();
312+
}
313+
314+
void QgsGraduatedSymbolRendererV2Widget::deleteCurrentClass()
315+
{
316+
317+
mRenderer->deleteClass( mRowSelected );
318+
populateRanges();
319+
}
320+
321+
void QgsGraduatedSymbolRendererV2Widget::changeCurrentValue( QStandardItem * item )
322+
{
323+
if ( item->column() == 2 )
324+
{
325+
QString label = item->text();
326+
int idx = item->row();
327+
mRenderer->updateRangeLabel( idx, label );
328+
}
329+
}

‎src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define QGSGRADUATEDSYMBOLRENDERERV2WIDGET_H
33

44
#include "qgsrendererv2widget.h"
5+
#include <QStandardItem>
56

67
class QgsGraduatedSymbolRendererV2;
78

@@ -24,6 +25,13 @@ class GUI_EXPORT QgsGraduatedSymbolRendererV2Widget : public QgsRendererV2Widget
2425
void changeGraduatedSymbol();
2526
void classifyGraduated();
2627
void rangesDoubleClicked( const QModelIndex & idx );
28+
void rangesClicked( const QModelIndex & idx );
29+
void changeCurrentValue( QStandardItem * item );
30+
31+
/**Adds a class manually to the classification*/
32+
void addClass();
33+
/**Removes a class from the classification*/
34+
void deleteCurrentClass();
2735

2836
protected:
2937
void updateUiFromRenderer();
@@ -39,12 +47,19 @@ class GUI_EXPORT QgsGraduatedSymbolRendererV2Widget : public QgsRendererV2Widget
3947
void populateRanges();
4048

4149
void changeRangeSymbol( int rangeIdx );
50+
void changeRange( int rangeIdx );
51+
52+
4253

4354

4455
protected:
4556
QgsGraduatedSymbolRendererV2* mRenderer;
4657

4758
QgsSymbolV2* mGraduatedSymbol;
59+
60+
int mRowSelected;
61+
62+
4863
};
4964

5065

‎src/ui/qgsgraduatedsymbolrendererv2widget.ui

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,13 @@
131131
</property>
132132
</widget>
133133
</item>
134+
<item>
135+
<widget class="QPushButton" name="btnGraduatedAdd">
136+
<property name="text">
137+
<string>Add class</string>
138+
</property>
139+
</widget>
140+
</item>
134141
<item>
135142
<widget class="QPushButton" name="btnGraduatedDelete">
136143
<property name="text">

0 commit comments

Comments
 (0)
Please sign in to comment.