QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
qgscolorrampbutton.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgscolorrampbutton.cpp - Color ramp button
3  --------------------------------------
4  Date : November 27, 2016
5  Copyright : (C) 2016 by Mathieu Pellerin
6  Email : nirvn dot asia 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 "qgscolorrampbutton.h"
17 #include "qgscolorramp.h"
18 #include "qgsapplication.h"
19 #include "qgslogger.h"
20 #include "qgssymbollayerutils.h"
21 #include "qgsstyle.h"
22 
23 #include "qgsstylesavedialog.h"
29 
30 #include <QAction>
31 #include <QInputDialog>
32 #include <QMessageBox>
33 #include <QMouseEvent>
34 #include <QMenu>
35 #include <QPainter>
36 #include <QPushButton>
37 
38 QgsColorRampButton::QgsColorRampButton( QWidget *parent, const QString &dialogTitle )
39  : QToolButton( parent )
40  , mColorRampDialogTitle( dialogTitle.isEmpty() ? tr( "Select Color Ramp" ) : dialogTitle )
41 {
42  setAcceptDrops( true );
43  setMinimumSize( QSize( 24, 16 ) );
44  connect( this, &QPushButton::clicked, this, &QgsColorRampButton::buttonClicked );
45 
46  //setup drop-down menu
47  mMenu = new QMenu( this );
48  connect( mMenu, &QMenu::aboutToShow, this, &QgsColorRampButton::prepareMenu );
49  setMenu( mMenu );
50 
51  mAllRampsMenu = new QMenu( mMenu );
52  mAllRampsMenu->setTitle( tr( "All Color Ramps" ) );
53 
54  setPopupMode( QToolButton::MenuButtonPopup );
55 
56  mStyle = QgsStyle::defaultStyle();
57 }
58 
60 
62 {
63  //make sure height of button looks good under different platforms
64 #ifdef Q_OS_WIN
65  return QSize( 120, static_cast<int>( std::max( Qgis::UI_SCALE_FACTOR * fontMetrics().height( ), 22.0 ) ) );
66 #else
67  // Adjust height for HiDPI screens
68  return QSize( 120, static_cast<int>( std::max( Qgis::UI_SCALE_FACTOR * fontMetrics().height( ) * 1.4, 28.0 ) ) );
69 #endif
70 }
71 
72 void QgsColorRampButton::showColorRampDialog()
73 {
75  bool panelMode = panel && panel->dockMode();
76 
77  std::unique_ptr< QgsColorRamp > currentRamp( colorRamp() );
78  if ( !currentRamp )
79  return;
80 
81  setColorRampName( QString() );
82 
83  if ( currentRamp->type() == QgsGradientColorRamp::typeString() )
84  {
85  QgsGradientColorRamp *gradRamp = static_cast<QgsGradientColorRamp *>( currentRamp.get() );
86  QgsGradientColorRampDialog dlg( *gradRamp, this );
87  dlg.setWindowTitle( mColorRampDialogTitle );
88  if ( dlg.exec() )
89  {
90  setColorRamp( dlg.ramp().clone() );
91  }
92  }
93  else if ( currentRamp->type() == QgsLimitedRandomColorRamp::typeString() )
94  {
95  QgsLimitedRandomColorRamp *randRamp = static_cast<QgsLimitedRandomColorRamp *>( currentRamp.get() );
96  if ( panelMode )
97  {
99  widget->setPanelTitle( tr( "Edit Ramp" ) );
100  connect( widget, &QgsLimitedRandomColorRampWidget::changed, this, &QgsColorRampButton::rampWidgetUpdated );
101  panel->openPanel( widget );
102  }
103  else
104  {
105  QgsLimitedRandomColorRampDialog dlg( *randRamp, this );
106  if ( dlg.exec() )
107  {
108  setColorRamp( dlg.ramp().clone() );
109  }
110  }
111  }
112  else if ( currentRamp->type() == QgsPresetSchemeColorRamp::typeString() )
113  {
114  QgsPresetSchemeColorRamp *presetRamp = static_cast<QgsPresetSchemeColorRamp *>( currentRamp.get() );
115  if ( panelMode )
116  {
117  QgsPresetColorRampWidget *widget = new QgsPresetColorRampWidget( *presetRamp, this );
118  widget->setPanelTitle( tr( "Edit Ramp" ) );
119  connect( widget, &QgsPresetColorRampWidget::changed, this, &QgsColorRampButton::rampWidgetUpdated );
120  panel->openPanel( widget );
121  }
122  else
123  {
124  QgsPresetColorRampDialog dlg( *presetRamp, this );
125  if ( dlg.exec() )
126  {
127  setColorRamp( dlg.ramp().clone() );
128  }
129  }
130  }
131  else if ( currentRamp->type() == QgsColorBrewerColorRamp::typeString() )
132  {
133  QgsColorBrewerColorRamp *brewerRamp = static_cast<QgsColorBrewerColorRamp *>( currentRamp.get() );
134  if ( panelMode )
135  {
136  QgsColorBrewerColorRampWidget *widget = new QgsColorBrewerColorRampWidget( *brewerRamp, this );
137  widget->setPanelTitle( tr( "Edit Ramp" ) );
138  connect( widget, &QgsColorBrewerColorRampWidget::changed, this, &QgsColorRampButton::rampWidgetUpdated );
139  panel->openPanel( widget );
140  }
141  else
142  {
143  QgsColorBrewerColorRampDialog dlg( *brewerRamp, this );
144  if ( dlg.exec() )
145  {
146  setColorRamp( dlg.ramp().clone() );
147  }
148  }
149  }
150  else if ( currentRamp->type() == QgsCptCityColorRamp::typeString() )
151  {
152  QgsCptCityColorRamp *cptCityRamp = static_cast<QgsCptCityColorRamp *>( currentRamp.get() );
153  QgsCptCityColorRampDialog dlg( *cptCityRamp, this );
154  if ( dlg.exec() )
155  {
156  if ( dlg.saveAsGradientRamp() )
157  {
158  setColorRamp( dlg.ramp().cloneGradientRamp() );
159  }
160  else
161  {
162  setColorRamp( dlg.ramp().clone() );
163  }
164  }
165  }
166 }
167 
169 {
170  if ( !mDefaultColorRamp )
171  {
172  return;
173  }
174 
175  setColorRamp( mDefaultColorRamp.get() );
176 }
177 
179 {
180  setColorRamp( nullptr );
181 }
182 
183 bool QgsColorRampButton::event( QEvent *e )
184 {
185  if ( e->type() == QEvent::ToolTip )
186  {
187  if ( !colorRampName().isEmpty() )
188  {
189  setToolTip( colorRampName() );
190  }
191  }
192  return QToolButton::event( e );
193 }
194 
196 {
197  if ( e->button() == Qt::RightButton )
198  {
199  QToolButton::showMenu();
200  return;
201  }
202  QToolButton::mousePressEvent( e );
203 }
204 
205 QPixmap QgsColorRampButton::createMenuIcon( QgsColorRamp *colorramp )
206 {
207  //create an icon pixmap
208  const int iconSize = QgsGuiUtils::scaleIconSize( 16 );
209  QPixmap pixmap = QgsSymbolLayerUtils::colorRampPreviewPixmap( colorramp, QSize( iconSize, iconSize ) );
210  return pixmap;
211 }
212 
213 void QgsColorRampButton::buttonClicked()
214 {
215  if ( !isRandomColorRamp() && !isNull() )
216  {
217  showColorRampDialog();
218  }
219  else
220  {
221  QToolButton::showMenu();
222  }
223 }
224 
225 void QgsColorRampButton::prepareMenu()
226 {
227  mMenu->clear();
228 
229  QAction *invertAction = new QAction( tr( "Invert Color Ramp" ), this );
230  invertAction->setEnabled( !isNull() && !isRandomColorRamp() );
231  mMenu->addAction( invertAction );
232  connect( invertAction, &QAction::triggered, this, &QgsColorRampButton::invertColorRamp );
233 
234  if ( mShowNull )
235  {
236  QAction *nullAction = new QAction( tr( "Clear Current Ramp" ), this );
237  mMenu->addAction( nullAction );
238  connect( nullAction, &QAction::triggered, this, &QgsColorRampButton::setToNull );
239  }
240 
241  mMenu->addSeparator();
242 
243  //show default color option if set
244  if ( mDefaultColorRamp )
245  {
246  QAction *defaultColorRampAction = new QAction( tr( "Default Color Ramp" ), this );
247  defaultColorRampAction->setIcon( createMenuIcon( mDefaultColorRamp.get() ) );
248  mMenu->addAction( defaultColorRampAction );
249  connect( defaultColorRampAction, &QAction::triggered, this, &QgsColorRampButton::setToDefaultColorRamp );
250  }
251 
252  if ( mShowRandomColorRamp )
253  {
254  QAction *randomColorRampAction = new QAction( tr( "Random Color Ramp" ), this );
255  randomColorRampAction->setCheckable( true );
256  randomColorRampAction->setChecked( isRandomColorRamp() );
257  mMenu->addAction( randomColorRampAction );
258  connect( randomColorRampAction, &QAction::triggered, this, &QgsColorRampButton::setRandomColorRamp );
259 
260  if ( isRandomColorRamp() || dynamic_cast<QgsLimitedRandomColorRamp *>( mColorRamp.get() ) )
261  {
262  QAction *shuffleRandomColorRampAction = new QAction( tr( "Shuffle Random Colors" ), this );
263  mMenu->addAction( shuffleRandomColorRampAction );
264  connect( shuffleRandomColorRampAction, &QAction::triggered, this, &QgsColorRampButton::colorRampChanged );
265  }
266  }
267 
268  mMenu->addSeparator();
269 
270  QStringList rampNames = mStyle->symbolsOfFavorite( QgsStyle::ColorrampEntity );
271  rampNames.sort();
272  const int iconSize = QgsGuiUtils::scaleIconSize( 16 );
273  for ( QStringList::iterator it = rampNames.begin(); it != rampNames.end(); ++it )
274  {
275  std::unique_ptr< QgsColorRamp > ramp( mStyle->colorRamp( *it ) );
276 
277  if ( !mShowGradientOnly || ( ramp->type() == QgsGradientColorRamp::typeString() || ramp->type() == QgsCptCityColorRamp::typeString() ) )
278  {
279  QIcon icon = QgsSymbolLayerUtils::colorRampPreviewIcon( ramp.get(), QSize( iconSize, iconSize ) );
280  QAction *ra = new QAction( *it, this );
281  ra->setIcon( icon );
282  connect( ra, &QAction::triggered, this, &QgsColorRampButton::loadColorRamp );
283  mMenu->addAction( ra );
284  }
285  }
286 
287  mMenu->addSeparator();
288 
289  mAllRampsMenu->clear();
290  mMenu->addMenu( mAllRampsMenu );
291  rampNames = mStyle->colorRampNames();
292  rampNames.sort();
293  for ( QStringList::iterator it = rampNames.begin(); it != rampNames.end(); ++it )
294  {
295  std::unique_ptr< QgsColorRamp > ramp( mStyle->colorRamp( *it ) );
296 
297  if ( !mShowGradientOnly || ( ramp->type() == QgsGradientColorRamp::typeString() || ramp->type() == QgsCptCityColorRamp::typeString() ) )
298  {
299  QIcon icon = QgsSymbolLayerUtils::colorRampPreviewIcon( ramp.get(), QSize( iconSize, iconSize ) );
300  QAction *ra = new QAction( *it, this );
301  ra->setIcon( icon );
302  connect( ra, &QAction::triggered, this, &QgsColorRampButton::loadColorRamp );
303  mAllRampsMenu->addAction( ra );
304  }
305  }
306 
307  mMenu->addSeparator();
308 
309  QAction *newColorRampAction = new QAction( tr( "Create New Color Ramp…" ), this );
310  connect( newColorRampAction, &QAction::triggered, this, &QgsColorRampButton::createColorRamp );
311  mMenu->addAction( newColorRampAction );
312 
313  QAction *editColorRampAction = new QAction( tr( "Edit Color Ramp…" ), this );
314  editColorRampAction->setEnabled( !isNull() && !isRandomColorRamp() );
315  connect( editColorRampAction, &QAction::triggered, this, &QgsColorRampButton::showColorRampDialog );
316  mMenu->addAction( editColorRampAction );
317 
318  QAction *saveColorRampAction = new QAction( tr( "Save Color Ramp…" ), this );
319  saveColorRampAction->setEnabled( !isNull() && !isRandomColorRamp() );
320  connect( saveColorRampAction, &QAction::triggered, this, &QgsColorRampButton::saveColorRamp );
321  mMenu->addAction( saveColorRampAction );
322 }
323 
324 void QgsColorRampButton::loadColorRamp()
325 {
326  QAction *selectedItem = qobject_cast<QAction *>( sender() );
327  if ( selectedItem )
328  {
329  QString name = selectedItem->iconText();
330  setColorRampName( name );
331  setColorRampFromName( name );
332  }
333 }
334 
335 void QgsColorRampButton::createColorRamp()
336 {
337 
338  bool ok = true;
339 
340  QList< QPair< QString, QString > > rampTypes = QgsColorRamp::rampTypes();
341  QStringList rampTypeNames;
342  rampTypeNames.reserve( rampTypes.size() );
343  if ( mShowGradientOnly )
344  {
345  rampTypes.erase( std::remove_if( rampTypes.begin(), rampTypes.end(), []( const QPair< QString, QString > &type )
346  {
347  return type.first != QgsGradientColorRamp::typeString() && type.first != QgsCptCityColorRamp::typeString();
348  } ), rampTypes.end() );
349  }
350 
351  for ( const QPair< QString, QString > &type : rampTypes )
352  rampTypeNames << type.second;
353 
354  const QString selectedRampTypeName = QInputDialog::getItem( this, tr( "Color ramp type" ),
355  tr( "Please select color ramp type:" ), rampTypeNames, 0, false, &ok );
356 
357  if ( !ok || selectedRampTypeName.isEmpty() )
358  return;
359 
360  const QString rampType = rampTypes.value( rampTypeNames.indexOf( selectedRampTypeName ) ).first;
361 
362  QgsColorRamp *ramp = nullptr;
363  if ( rampType == QgsGradientColorRamp::typeString() )
364  {
365  ramp = new QgsGradientColorRamp();
366  }
367  else if ( rampType == QgsLimitedRandomColorRamp::typeString() )
368  {
369  ramp = new QgsLimitedRandomColorRamp();
370  }
371  else if ( rampType == QgsColorBrewerColorRamp::typeString() )
372  {
373  ramp = new QgsColorBrewerColorRamp();
374  }
375  else if ( rampType == QgsPresetSchemeColorRamp::typeString() )
376  {
377  ramp = new QgsPresetSchemeColorRamp();
378  }
379  else if ( rampType == QgsCptCityColorRamp::typeString() )
380  {
381  ramp = new QgsCptCityColorRamp( QString(), QString() );
382  }
383  else
384  {
385  QgsDebugMsg( "invalid ramp type " + rampType );
386  return;
387  }
388 
389  setColorRamp( ramp );
390  delete ramp;
391 
392  showColorRampDialog();
393 }
394 
395 void QgsColorRampButton::saveColorRamp()
396 {
397  QgsStyleSaveDialog saveDlg( this, QgsStyle::ColorrampEntity );
398  if ( !saveDlg.exec() || saveDlg.name().isEmpty() )
399  {
400  return;
401  }
402 
403  // check if there is no symbol with same name
404  if ( mStyle->symbolNames().contains( saveDlg.name() ) )
405  {
406  int res = QMessageBox::warning( this, tr( "Save Color Ramp" ),
407  tr( "Color ramp with name '%1' already exists. Overwrite?" )
408  .arg( saveDlg.name() ),
409  QMessageBox::Yes | QMessageBox::No );
410  if ( res != QMessageBox::Yes )
411  {
412  return;
413  }
414  mStyle->removeColorRamp( saveDlg.name() );
415  }
416 
417  QStringList colorRampTags = saveDlg.tags().split( ',' );
418 
419  // add new symbol to style and re-populate the list
420  QgsColorRamp *ramp = colorRamp();
421  mStyle->addColorRamp( saveDlg.name(), ramp );
422  mStyle->saveColorRamp( saveDlg.name(), ramp, saveDlg.isFavorite(), colorRampTags );
423 
424  setColorRampName( saveDlg.name() );
425 }
426 
427 void QgsColorRampButton::invertColorRamp()
428 {
429  mColorRamp->invert();
431  emit colorRampChanged();
432 }
433 
435 {
436  if ( e->type() == QEvent::EnabledChange )
437  {
439  }
440  QToolButton::changeEvent( e );
441 }
442 
443 #if 0 // causes too many cyclical updates, but may be needed on some platforms
444 void QgsColorRampButton::paintEvent( QPaintEvent *e )
445 {
446  QToolButton::paintEvent( e );
447 
448  if ( !mBackgroundSet )
449  {
451  }
452 }
453 #endif
454 
455 void QgsColorRampButton::showEvent( QShowEvent *e )
456 {
458  QToolButton::showEvent( e );
459 }
460 
461 void QgsColorRampButton::resizeEvent( QResizeEvent *event )
462 {
463  QToolButton::resizeEvent( event );
464  //recalculate icon size and redraw icon
465  mIconSize = QSize();
466  setButtonBackground( mColorRamp.get() );
467 }
468 
470 {
471  if ( colorramp == mColorRamp.get() )
472  return;
473 
474  mColorRamp.reset( colorramp ? colorramp->clone() : nullptr );
475 
477  if ( isEnabled() )
478  {
479  emit colorRampChanged();
480  }
481 }
482 
483 void QgsColorRampButton::setColorRampFromName( const QString &name )
484 {
485  if ( !name.isEmpty() )
486  {
487  std::unique_ptr< QgsColorRamp > ramp( mStyle->colorRamp( name ) );
488  if ( ramp )
489  {
490  setColorRamp( ramp.get() );
491  }
492  }
493 }
494 
496 {
497  if ( !isRandomColorRamp() )
498  {
499  std::unique_ptr< QgsRandomColorRamp > newRamp( new QgsRandomColorRamp() );
500  setColorRamp( newRamp.get() );
501  }
502 }
503 
505 {
506  QgsColorRamp *backgroundColorRamp = colorramp;
507  if ( !colorramp )
508  {
509  backgroundColorRamp = mColorRamp.get();
510  }
511 
512  QSize currentIconSize;
513  //icon size is button size with a small margin
514  if ( menu() )
515  {
516  if ( !mIconSize.isValid() )
517  {
518  //calculate size of push button part of widget (ie, without the menu drop-down button part)
519  QStyleOptionToolButton opt;
520  initStyleOption( &opt );
521  QRect buttonSize = QApplication::style()->subControlRect( QStyle::CC_ToolButton, &opt, QStyle::SC_ToolButton,
522  this );
523  //make sure height of icon looks good under different platforms
524 #ifdef Q_OS_WIN
525  mIconSize = QSize( buttonSize.width() - 10, height() - 6 );
526 #else
527  mIconSize = QSize( buttonSize.width() - 10, height() - 12 );
528 #endif
529  }
530  currentIconSize = mIconSize;
531  }
532  else
533  {
534  //no menu
535 #ifdef Q_OS_WIN
536  currentIconSize = QSize( width() - 10, height() - 6 );
537 #else
538  currentIconSize = QSize( width() - 10, height() - 12 );
539 #endif
540  }
541 
542  if ( !currentIconSize.isValid() || currentIconSize.width() <= 0 || currentIconSize.height() <= 0 )
543  {
544  return;
545  }
546 
547  QPixmap pm;
548  if ( isRandomColorRamp() )
549  {
550  //create a "random colors" label
551  pm = QPixmap( currentIconSize );
552  pm.fill( Qt::transparent );
553 
554  QPainter painter;
555  QPen pen = ( palette().buttonText().color() );
556 
557  painter.begin( &pm );
558  painter.setPen( pen );
559  painter.drawText( QRect( 0, 0, currentIconSize.width(), currentIconSize.height() ), Qt::AlignCenter, QStringLiteral( "Random colors" ) );
560  painter.end();
561  }
562  else
563  {
564  //create an icon pixmap
565  if ( backgroundColorRamp )
566  {
567  pm = QgsSymbolLayerUtils::colorRampPreviewPixmap( backgroundColorRamp, currentIconSize );
568  }
569  }
570 
571  setIconSize( currentIconSize );
572  setIcon( pm );
573 }
574 
576 {
577  return mColorRamp ? mColorRamp->clone() : nullptr;
578 }
579 
581 {
582  mColorRampDialogTitle = title;
583 }
584 
586 {
587  return mColorRampDialogTitle;
588 }
589 
590 void QgsColorRampButton::setShowMenu( const bool showMenu )
591 {
592  setMenu( showMenu ? mMenu : nullptr );
593  setPopupMode( showMenu ? QToolButton::MenuButtonPopup : QToolButton::DelayedPopup );
594  //force recalculation of icon size
595  mIconSize = QSize();
596  setButtonBackground( mColorRamp.get() );
597 }
598 
600 {
601  return menu() ? true : false;
602 }
603 
605 {
606  mDefaultColorRamp.reset( colorramp ? colorramp->clone() : nullptr );
607 }
608 
610 {
611  return mDefaultColorRamp ? mDefaultColorRamp->clone() : nullptr;
612 }
613 
615 {
616  return dynamic_cast<QgsRandomColorRamp *>( mColorRamp.get() );
617 }
618 
619 void QgsColorRampButton::setShowNull( bool showNull )
620 {
621  mShowNull = showNull;
622 }
623 
625 {
626  return mShowNull;
627 }
628 
630 {
631  return !mColorRamp;
632 }
633 
634 void QgsColorRampButton::rampWidgetUpdated()
635 {
636  QgsLimitedRandomColorRampWidget *limitedRampWidget = qobject_cast< QgsLimitedRandomColorRampWidget * >( sender() );
637  if ( limitedRampWidget )
638  {
639  setColorRamp( limitedRampWidget->ramp().clone() );
640  emit colorRampChanged();
641  return;
642  }
643  QgsColorBrewerColorRampWidget *colorBrewerRampWidget = qobject_cast< QgsColorBrewerColorRampWidget * >( sender() );
644  if ( colorBrewerRampWidget )
645  {
646  setColorRamp( colorBrewerRampWidget->ramp().clone() );
647  emit colorRampChanged();
648  return;
649  }
650  QgsPresetColorRampWidget *presetRampWidget = qobject_cast< QgsPresetColorRampWidget * >( sender() );
651  if ( presetRampWidget )
652  {
653  setColorRamp( presetRampWidget->ramp().clone() );
654  emit colorRampChanged();
655  return;
656  }
657 }
QgsColorRampButton::~QgsColorRampButton
~QgsColorRampButton() override
QgsColorRampButton::setDefaultColorRamp
void setDefaultColorRamp(QgsColorRamp *colorramp)
Sets the default color ramp for the button, which is shown in the button's drop-down menu for the "de...
Definition: qgscolorrampbutton.cpp:604
QgsColorRamp
Abstract base class for color ramps.
Definition: qgscolorramp.h:32
QgsPresetSchemeColorRamp::clone
QgsPresetSchemeColorRamp * clone() const override
Creates a clone of the color ramp.
Definition: qgscolorramp.cpp:912
QgsColorRampButton::setShowMenu
void setShowMenu(bool showMenu)
Sets whether the drop-down menu should be shown for the button.
Definition: qgscolorrampbutton.cpp:590
QgsPresetColorRampDialog
A dialog which allows users to modify the properties of a QgsPresetSchemeColorRamp.
Definition: qgspresetcolorrampdialog.h:87
QgsStyle::ColorrampEntity
@ ColorrampEntity
Color ramps.
Definition: qgsstyle.h:182
QgsGradientColorRamp
Gradient color ramp, which smoothly interpolates between two colors and also supports optional extra ...
Definition: qgscolorramp.h:151
QgsColorBrewerColorRamp::clone
QgsColorBrewerColorRamp * clone() const override
Creates a clone of the color ramp.
Definition: qgscolorramp.cpp:580
QgsPresetColorRampWidget::ramp
QgsPresetSchemeColorRamp ramp
Definition: qgspresetcolorrampdialog.h:37
QgsColorRamp::rampTypes
static QList< QPair< QString, QString > > rampTypes()
Returns a list of available ramp types, where the first value in each item is the QgsColorRamp::type(...
Definition: qgscolorramp.cpp:939
QgsPanelWidget::findParentPanel
static QgsPanelWidget * findParentPanel(QWidget *widget)
Traces through the parents of a widget to find if it is contained within a QgsPanelWidget widget.
Definition: qgspanelwidget.cpp:49
QgsStyle::symbolsOfFavorite
QStringList symbolsOfFavorite(StyleEntity type) const
Returns the symbol names which are flagged as favorite.
Definition: qgsstyle.cpp:1282
QgsColorRampButton::colorRamp
QgsColorRamp * colorRamp() const
Returns a copy of the current color ramp.
Definition: qgscolorrampbutton.cpp:575
QgsColorRampButton::isRandomColorRamp
bool isRandomColorRamp() const
Returns true if the current color is null.
Definition: qgscolorrampbutton.cpp:614
QgsColorRampButton::setColorRampName
void setColorRampName(const QString &name)
Sets the name of the current color ramp when it's available in the style manager.
Definition: qgscolorrampbutton.h:204
QgsPresetSchemeColorRamp
A scheme based color ramp consisting of a list of predefined colors.
Definition: qgscolorramp.h:506
qgssymbollayerutils.h
QgsGradientColorRampDialog
A dialog which allows users to modify the properties of a QgsGradientColorRamp.
Definition: qgsgradientcolorrampdialog.h:39
QgsLimitedRandomColorRampWidget::ramp
QgsLimitedRandomColorRamp ramp
Definition: qgslimitedrandomcolorrampdialog.h:37
QgsPanelWidget::openPanel
void openPanel(QgsPanelWidget *panel)
Open a panel or dialog depending on dock mode setting If dock mode is true this method will emit the ...
Definition: qgspanelwidget.cpp:79
QgsColorRampButton::sizeHint
QSize sizeHint() const override
Definition: qgscolorrampbutton.cpp:61
QgsColorRampButton::colorRampDialogTitle
QString colorRampDialogTitle
Definition: qgscolorrampbutton.h:39
QgsDebugMsg
#define QgsDebugMsg(str)
Definition: qgslogger.h:38
QgsStyle::saveColorRamp
bool saveColorRamp(const QString &name, QgsColorRamp *ramp, bool favorite, const QStringList &tags)
Adds the colorramp to the database.
Definition: qgsstyle.cpp:399
QgsPresetColorRampWidget
A widget which allows users to modify the properties of a QgsPresetSchemeColorRamp.
Definition: qgspresetcolorrampdialog.h:35
QgsColorRampButton::setButtonBackground
void setButtonBackground(QgsColorRamp *colorramp=nullptr)
Sets the background pixmap for the button based upon current color ramp.
Definition: qgscolorrampbutton.cpp:504
QgsColorBrewerColorRamp::typeString
static QString typeString()
Returns the string identifier for QgsColorBrewerColorRamp.
Definition: qgscolorramp.h:607
QgsLimitedRandomColorRamp
Constrained random color ramp, which returns random colors based on preset parameters.
Definition: qgscolorramp.h:303
QgsPanelWidget::dockMode
bool dockMode()
Returns the dock mode state.
Definition: qgspanelwidget.h:83
QgsColorRampButton::setRandomColorRamp
void setRandomColorRamp()
Sets the current color ramp for the button to random colors.
Definition: qgscolorrampbutton.cpp:495
qgsstylesavedialog.h
QgsColorBrewerColorRamp
Color ramp utilising "Color Brewer" preset color schemes.
Definition: qgscolorramp.h:578
QgsSymbolLayerUtils::colorRampPreviewPixmap
static QPixmap colorRampPreviewPixmap(QgsColorRamp *ramp, QSize size, int padding=0)
Returns a pixmap preview for a color ramp.
Definition: qgssymbollayerutils.cpp:877
QgsStyle::addColorRamp
bool addColorRamp(const QString &name, QgsColorRamp *colorRamp, bool update=false)
Adds a color ramp to the style.
Definition: qgsstyle.cpp:291
QgsGuiUtils::iconSize
QSize iconSize(bool dockableToolbar)
Returns the user-preferred size of a window's toolbar icons.
Definition: qgsguiutils.cpp:250
QgsColorBrewerColorRampWidget
A widget which allows users to modify the properties of a QgsColorBrewerColorRamp.
Definition: qgscolorbrewercolorrampdialog.h:36
QgsStyle::defaultStyle
static QgsStyle * defaultStyle()
Returns default application-wide style.
Definition: qgsstyle.cpp:127
QgsRandomColorRamp
Totally random color ramp.
Definition: qgscolorramp.h:455
qgsapplication.h
QgsCptCityColorRamp::typeString
static QString typeString()
Returns the string identifier for QgsCptCityColorRamp.
Definition: qgscolorramp.h:711
QgsGradientColorRamp::typeString
static QString typeString()
Returns the string identifier for QgsGradientColorRamp.
Definition: qgscolorramp.h:179
QgsPresetSchemeColorRamp::typeString
static QString typeString()
Returns the string identifier for QgsPresetSchemeColorRamp.
Definition: qgscolorramp.h:550
qgscolorbrewercolorrampdialog.h
QgsPresetColorRampWidget::changed
void changed()
Emitted when the dialog settings change.
QgsColorRampButton::event
bool event(QEvent *e) override
Definition: qgscolorrampbutton.cpp:183
QgsColorBrewerColorRampDialog
A dialog which allows users to modify the properties of a QgsColorBrewerColorRamp.
Definition: qgscolorbrewercolorrampdialog.h:87
QgsColorRampButton::setShowNull
void setShowNull(bool showNull)
Sets whether a set to null (clear) option is shown in the button's drop-down menu.
Definition: qgscolorrampbutton.cpp:619
QgsColorRampButton::setToDefaultColorRamp
void setToDefaultColorRamp()
Sets color ramp to the button's default color ramp, if set.
Definition: qgscolorrampbutton.cpp:168
QgsColorBrewerColorRampWidget::changed
void changed()
Emitted when the dialog settings change.
QgsLimitedRandomColorRamp::clone
QgsLimitedRandomColorRamp * clone() const override
Creates a clone of the color ramp.
Definition: qgscolorramp.cpp:367
QgsPanelWidget
Base class for any widget that can be shown as a inline panel.
Definition: qgspanelwidget.h:30
QgsColorRampButton::setToNull
void setToNull()
Sets color ramp to null.
Definition: qgscolorrampbutton.cpp:178
QgsCptCityColorRampDialog
A dialog which allows users to modify the properties of a QgsCptCityColorRamp.
Definition: qgscptcitycolorrampdialog.h:43
QgsColorRampButton::QgsColorRampButton
QgsColorRampButton(QWidget *parent=nullptr, const QString &dialogTitle=QString())
Construct a new color ramp button.
Definition: qgscolorrampbutton.cpp:38
qgscolorramp.h
QgsColorRampButton::isNull
bool isNull() const
Returns true if the current color is null.
Definition: qgscolorrampbutton.cpp:629
QgsColorRampButton::changeEvent
void changeEvent(QEvent *e) override
Definition: qgscolorrampbutton.cpp:434
QgsColorRampButton::showNull
bool showNull() const
Returns whether the set to null (clear) option is shown in the button's drop-down menu.
Definition: qgscolorrampbutton.cpp:624
QgsColorBrewerColorRampWidget::ramp
QgsColorBrewerColorRamp ramp
Definition: qgscolorbrewercolorrampdialog.h:38
Qgis::UI_SCALE_FACTOR
static const double UI_SCALE_FACTOR
UI scaling factor.
Definition: qgis.h:182
QgsLimitedRandomColorRampDialog
A dialog which allows users to modify the properties of a QgsLimitedRandomColorRamp.
Definition: qgslimitedrandomcolorrampdialog.h:99
QgsColorRampButton::defaultColorRamp
QgsColorRamp * defaultColorRamp
Definition: qgscolorrampbutton.h:42
QgsColorRampButton::setColorRampFromName
void setColorRampFromName(const QString &name=QString())
Sets the current color ramp for the button using a saved color ramp name.
Definition: qgscolorrampbutton.cpp:483
QgsPanelWidget::setPanelTitle
void setPanelTitle(const QString &panelTitle)
Set the title of the panel when shown in the interface.
Definition: qgspanelwidget.h:44
QgsColorRampButton::colorRampName
QString colorRampName() const
Returns the name of the current color ramp when it's available in the style manager.
Definition: qgscolorrampbutton.h:210
QgsColorRamp::clone
virtual QgsColorRamp * clone() const =0
Creates a clone of the color ramp.
qgsstyle.h
QgsStyle::symbolNames
QStringList symbolNames() const
Returns a list of names of symbols.
Definition: qgsstyle.cpp:285
QgsColorRampButton::mousePressEvent
void mousePressEvent(QMouseEvent *e) override
Reimplemented to detect right mouse button clicks on the color ramp button.
Definition: qgscolorrampbutton.cpp:195
QgsStyle::removeColorRamp
bool removeColorRamp(const QString &name)
Removes color ramp from style (and delete it)
Definition: qgsstyle.cpp:433
QgsColorRampButton::resizeEvent
void resizeEvent(QResizeEvent *event) override
Definition: qgscolorrampbutton.cpp:461
qgslimitedrandomcolorrampdialog.h
qgsgradientcolorrampdialog.h
QgsStyle::colorRampNames
QStringList colorRampNames() const
Returns a list of names of color ramps.
Definition: qgsstyle.cpp:454
QgsLimitedRandomColorRampWidget
A widget which allows users to modify the properties of a QgsLimitedRandomColorRamp.
Definition: qgslimitedrandomcolorrampdialog.h:35
QgsCptCityColorRamp
Definition: qgscolorramp.h:677
qgscolorrampbutton.h
qgslogger.h
qgscptcitycolorrampdialog.h
QgsGuiUtils::scaleIconSize
int scaleIconSize(int standardSize)
Scales an icon size to compensate for display pixel density, making the icon size hi-dpi friendly,...
Definition: qgsguiutils.cpp:245
qgspresetcolorrampdialog.h
QgsLimitedRandomColorRamp::typeString
static QString typeString()
Returns the string identifier for QgsLimitedRandomColorRamp.
Definition: qgscolorramp.h:337
QgsColorRampButton::showMenu
bool showMenu
Definition: qgscolorrampbutton.h:41
QgsStyle::colorRamp
QgsColorRamp * colorRamp(const QString &name) const
Returns a new copy of the specified color ramp.
Definition: qgsstyle.cpp:438
QgsLimitedRandomColorRampWidget::changed
void changed()
Emitted when the dialog settings change.
QgsColorRampButton::setColorRampDialogTitle
void setColorRampDialogTitle(const QString &title)
Set the title for the color ramp dialog window.
Definition: qgscolorrampbutton.cpp:580
QgsColorRampButton::setColorRamp
void setColorRamp(QgsColorRamp *colorramp)
Sets the current color ramp for the button.
Definition: qgscolorrampbutton.cpp:469
QgsSymbolLayerUtils::colorRampPreviewIcon
static QIcon colorRampPreviewIcon(QgsColorRamp *ramp, QSize size, int padding=0)
Returns an icon preview for a color ramp.
Definition: qgssymbollayerutils.cpp:872
QgsColorRampButton::colorRampChanged
void colorRampChanged()
Emitted whenever a new color ramp is set for the button.
QgsColorRampButton::showEvent
void showEvent(QShowEvent *e) override
Definition: qgscolorrampbutton.cpp:455