/
qgsvectorcolorbrewercolorrampv2dialog.cpp
91 lines (71 loc) · 2.48 KB
/
qgsvectorcolorbrewercolorrampv2dialog.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "qgsvectorcolorbrewercolorrampv2dialog.h"
#include "qgsvectorcolorrampv2.h"
#include <QAbstractButton>
#if 0 // unused
static void updateColorButton( QAbstractButton* button, QColor color )
{
QPixmap p( 20, 20 );
p.fill( color );
button->setIcon( QIcon( p ) );
}
#endif
/////////
QgsVectorColorBrewerColorRampV2Dialog::QgsVectorColorBrewerColorRampV2Dialog( QgsVectorColorBrewerColorRampV2* ramp, QWidget* parent )
: QDialog( parent ), mRamp( ramp )
{
setupUi( this );
QSize iconSize( 50, 16 );
cboSchemeName->setIconSize( iconSize );
QStringList schemes = QgsVectorColorBrewerColorRampV2::listSchemeNames();
foreach( QString schemeName, schemes )
{
// create a preview icon using five color variant
QgsVectorColorBrewerColorRampV2* r = new QgsVectorColorBrewerColorRampV2( schemeName, 5 );
QIcon icon = QgsSymbolLayerV2Utils::colorRampPreviewIcon( r, iconSize );
delete r;
cboSchemeName->addItem( icon, schemeName );
}
cboSchemeName->setCurrentIndex( cboSchemeName->findText( ramp->schemeName() ) );
populateVariants();
cboColors->setCurrentIndex( cboColors->findText( QString::number( ramp->colors() ) ) );
connect( cboSchemeName, SIGNAL( currentIndexChanged( int ) ), this, SLOT( setSchemeName() ) );
connect( cboColors, SIGNAL( currentIndexChanged( int ) ), this, SLOT( setColors() ) );
updatePreview();
}
void QgsVectorColorBrewerColorRampV2Dialog::populateVariants()
{
QString oldVariant = cboColors->currentText();
cboColors->clear();
QString schemeName = cboSchemeName->currentText();
QList<int> variants = QgsVectorColorBrewerColorRampV2::listSchemeVariants( schemeName );
foreach( int variant, variants )
{
cboColors->addItem( QString::number( variant ) );
}
// try to set the original variant again (if exists)
int idx = cboColors->findText( oldVariant );
if ( idx == -1 ) // not found?
{
// use the last item
idx = cboColors->count() - 1;
}
cboColors->setCurrentIndex( idx );
}
void QgsVectorColorBrewerColorRampV2Dialog::updatePreview()
{
QSize size( 300, 40 );
lblPreview->setPixmap( QgsSymbolLayerV2Utils::colorRampPreviewPixmap( mRamp, size ) );
}
void QgsVectorColorBrewerColorRampV2Dialog::setSchemeName()
{
// populate list of variants
populateVariants();
mRamp->setSchemeName( cboSchemeName->currentText() );
updatePreview();
}
void QgsVectorColorBrewerColorRampV2Dialog::setColors()
{
int num = cboColors->currentText().toInt();
mRamp->setColors( num );
updatePreview();
}