22#include <QAbstractButton>
23#include <QDialogButtonBox>
26#include "moc_qgscolorbrewercolorrampdialog.cpp"
28using namespace Qt::StringLiterals;
31static void updateColorButton( QAbstractButton *button, QColor color )
35 button->setIcon( QIcon( p ) );
48 const QSize iconSize( 50, 16 );
49 cboSchemeName->setIconSize( iconSize );
52 const auto constSchemes = schemes;
53 for (
const QString &schemeName : constSchemes )
59 cboSchemeName->addItem( icon, schemeName );
63 connect( cboSchemeName,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsColorBrewerColorRampWidget::setSchemeName );
64 connect( cboColors,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsColorBrewerColorRampWidget::setColors );
74void QgsColorBrewerColorRampWidget::populateVariants()
76 const QString oldVariant = cboColors->currentText();
79 const QString schemeName = cboSchemeName->currentText();
81 const auto constVariants = variants;
82 for (
const int variant : constVariants )
84 cboColors->addItem( QString::number( variant ) );
88 int idx = cboColors->findText( oldVariant );
92 idx = cboColors->count() - 1;
94 cboColors->setCurrentIndex( idx );
97void QgsColorBrewerColorRampWidget::updatePreview()
99 const QSize size( 300, 40 );
103void QgsColorBrewerColorRampWidget::updateUi()
105 whileBlocking( cboSchemeName )->setCurrentIndex( cboSchemeName->findText( mRamp.schemeName() ) );
107 whileBlocking( cboColors )->setCurrentIndex( cboColors->findText( QString::number( mRamp.colors() ) ) );
111void QgsColorBrewerColorRampWidget::setSchemeName()
116 mRamp.setSchemeName( cboSchemeName->currentText() );
121void QgsColorBrewerColorRampWidget::setColors()
123 const int num = cboColors->currentText().toInt();
124 mRamp.setColors( num );
132 QVBoxLayout *vLayout =
new QVBoxLayout();
135 vLayout->addWidget( mWidget );
136 mButtonBox =
new QDialogButtonBox( QDialogButtonBox::Cancel | QDialogButtonBox::Help | QDialogButtonBox::Ok, Qt::Horizontal );
137 connect( mButtonBox, &QDialogButtonBox::accepted,
this, &QDialog::accept );
138 connect( mButtonBox, &QDialogButtonBox::rejected,
this, &QDialog::reject );
139 connect( mButtonBox, &QDialogButtonBox::helpRequested,
this, &QgsColorBrewerColorRampDialog::showHelp );
140 vLayout->addWidget( mButtonBox );
141 setLayout( vLayout );
142 setWindowTitle( tr(
"ColorBrewer Ramp" ) );
151void QgsColorBrewerColorRampDialog::showHelp()
QgsColorBrewerColorRamp ramp
QgsColorBrewerColorRampDialog(const QgsColorBrewerColorRamp &ramp, QWidget *parent=nullptr)
Constructor for QgsColorBrewerColorRampDialog.
void changed()
Emitted when the dialog settings change.
QDialogButtonBox * buttonBox() const
Returns a reference to the dialog's button box.
Color ramp utilising "Color Brewer" preset color schemes.
static QList< int > listSchemeVariants(const QString &schemeName)
Returns a list of the valid variants (numbers of colors) for a specified color brewer scheme name.
static QStringList listSchemeNames()
Returns a list of all valid color brewer scheme names.
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
static QIcon colorRampPreviewIcon(QgsColorRamp *ramp, QSize size, int padding=0)
Returns an icon preview for a color ramp.
static QPixmap colorRampPreviewPixmap(QgsColorRamp *ramp, QSize size, int padding=0, Qt::Orientation direction=Qt::Horizontal, bool flipDirection=false, bool drawTransparentBackground=true)
Returns a pixmap preview for a color ramp.
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.