1 /***************************************************************************
2 qgslimitedrandomcolorrampdialog.cpp
3 ---------------------
4 begin : November 2009
5 copyright : (C) 2009 by Martin Dobias
6 email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16 #include "qgslimitedrandomcolorrampdialog.h"
17
18 #include "qgssymbollayerutils.h"
19 #include "qgscolorramp.h"
20 #include "qgshelp.h"
21
22 #include <QColorDialog>
23 #include <QDialogButtonBox>
24
25
QgsLimitedRandomColorRampWidget(const QgsLimitedRandomColorRamp & ramp,QWidget * parent)26 QgsLimitedRandomColorRampWidget::QgsLimitedRandomColorRampWidget( const QgsLimitedRandomColorRamp &ramp, QWidget *parent )
27 : QgsPanelWidget( parent )
28 , mRamp( ramp )
29 {
30 setupUi( this );
31 spinCount->setClearValue( 10 );
32 spinHue1->setClearValue( 0 );
33 spinHue2->setClearValue( 359 );
34 spinSat1->setClearValue( 100 );
35 spinSat2->setClearValue( 240 );
36 spinVal1->setClearValue( 200 );
37 spinVal2->setClearValue( 240 );
38
39 updateUi();
40
41 connect( spinCount, static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this, &QgsLimitedRandomColorRampWidget::setCount );
42 connect( spinHue1, static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this, &QgsLimitedRandomColorRampWidget::setHue1 );
43 connect( spinHue2, static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this, &QgsLimitedRandomColorRampWidget::setHue2 );
44 connect( spinSat1, static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this, &QgsLimitedRandomColorRampWidget::setSat1 );
45 connect( spinSat2, static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this, &QgsLimitedRandomColorRampWidget::setSat2 );
46 connect( spinVal1, static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this, &QgsLimitedRandomColorRampWidget::setVal1 );
47 connect( spinVal2, static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this, &QgsLimitedRandomColorRampWidget::setVal2 );
48 }
49
setRamp(const QgsLimitedRandomColorRamp & ramp)50 void QgsLimitedRandomColorRampWidget::setRamp( const QgsLimitedRandomColorRamp &ramp )
51 {
52 mRamp = ramp;
53 updateUi();
54 emit changed();
55 }
56
updatePreview()57 void QgsLimitedRandomColorRampWidget::updatePreview()
58 {
59 mRamp.updateColors();
60
61 const QSize size( 300, 40 );
62 lblPreview->setPixmap( QgsSymbolLayerUtils::colorRampPreviewPixmap( &mRamp, size ) );
63 }
64
updateUi()65 void QgsLimitedRandomColorRampWidget::updateUi()
66 {
67 spinCount->setValue( mRamp.count() );
68 spinHue1->setValue( mRamp.hueMin() );
69 spinHue2->setValue( mRamp.hueMax() );
70 spinSat1->setValue( mRamp.satMin() );
71 spinSat2->setValue( mRamp.satMax() );
72 spinVal1->setValue( mRamp.valMin() );
73 spinVal2->setValue( mRamp.valMax() );
74 updatePreview();
75 }
76
setCount(int val)77 void QgsLimitedRandomColorRampWidget::setCount( int val )
78 {
79 mRamp.setCount( val );
80 updatePreview();
81 emit changed();
82 }
83
setHue1(int val)84 void QgsLimitedRandomColorRampWidget::setHue1( int val )
85 {
86 mRamp.setHueMin( val );
87 updatePreview();
88 emit changed();
89 }
90
setHue2(int val)91 void QgsLimitedRandomColorRampWidget::setHue2( int val )
92 {
93 mRamp.setHueMax( val );
94 updatePreview();
95 emit changed();
96 }
97
setSat1(int val)98 void QgsLimitedRandomColorRampWidget::setSat1( int val )
99 {
100 mRamp.setSatMin( val );
101 updatePreview();
102 emit changed();
103 }
104
setSat2(int val)105 void QgsLimitedRandomColorRampWidget::setSat2( int val )
106 {
107 mRamp.setSatMax( val );
108 updatePreview();
109 emit changed();
110 }
111
setVal1(int val)112 void QgsLimitedRandomColorRampWidget::setVal1( int val )
113 {
114 mRamp.setValMin( val );
115 updatePreview();
116 emit changed();
117 }
118
setVal2(int val)119 void QgsLimitedRandomColorRampWidget::setVal2( int val )
120 {
121 mRamp.setValMax( val );
122 updatePreview();
123 emit changed();
124 }
125
QgsLimitedRandomColorRampDialog(const QgsLimitedRandomColorRamp & ramp,QWidget * parent)126 QgsLimitedRandomColorRampDialog::QgsLimitedRandomColorRampDialog( const QgsLimitedRandomColorRamp &ramp, QWidget *parent )
127 : QDialog( parent )
128 {
129 QVBoxLayout *vLayout = new QVBoxLayout();
130 mWidget = new QgsLimitedRandomColorRampWidget( ramp );
131
132 connect( mWidget, &QgsPanelWidget::panelAccepted, this, &QDialog::reject );
133
134 vLayout->addWidget( mWidget );
135 mButtonBox = new QDialogButtonBox( QDialogButtonBox::Cancel | QDialogButtonBox::Help | QDialogButtonBox::Ok, Qt::Horizontal );
136 connect( mButtonBox, &QDialogButtonBox::accepted, this, &QDialog::accept );
137 connect( mButtonBox, &QDialogButtonBox::rejected, this, &QDialog::reject );
138 connect( mButtonBox, &QDialogButtonBox::helpRequested, this, &QgsLimitedRandomColorRampDialog::showHelp );
139 vLayout->addWidget( mButtonBox );
140 setLayout( vLayout );
141 setWindowTitle( tr( "Random Color Ramp" ) );
142 connect( mWidget, &QgsLimitedRandomColorRampWidget::changed, this, &QgsLimitedRandomColorRampDialog::changed );
143 }
144
buttonBox() const145 QDialogButtonBox *QgsLimitedRandomColorRampDialog::buttonBox() const
146 {
147 return mButtonBox;
148 }
149
showHelp()150 void QgsLimitedRandomColorRampDialog::showHelp()
151 {
152 QgsHelp::openHelp( QStringLiteral( "style_library/style_manager.html#setting-a-color-ramp" ) );
153 }
154