QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
qgscolorrampbutton.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscolorrampbutton.h - 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 #ifndef QGSCOLORRAMPBUTTON_H
16 #define QGSCOLORRAMPBUTTON_H
17 
18 #include "qgis_gui.h"
19 #include "qgis_sip.h"
20 
21 #include <QToolButton>
22 #include <memory>
23 
24 class QgsPanelWidget;
25 class QgsColorRamp;
26 class QgsStyle;
27 
36 class GUI_EXPORT QgsColorRampButton : public QToolButton
37 {
38  Q_OBJECT
39  Q_PROPERTY( QString colorRampDialogTitle READ colorRampDialogTitle WRITE setColorRampDialogTitle )
40  Q_PROPERTY( bool acceptLiveUpdates READ acceptLiveUpdates WRITE setAcceptLiveUpdates )
41  Q_PROPERTY( bool showMenu READ showMenu WRITE setShowMenu )
42  Q_PROPERTY( QgsColorRamp *defaultColorRamp READ defaultColorRamp WRITE setDefaultColorRamp )
43  Q_PROPERTY( QString context READ context WRITE setContext )
44 
45  public:
46 
52  QgsColorRampButton( QWidget *parent SIP_TRANSFERTHIS = nullptr, const QString &dialogTitle = QString() );
53 
54  ~QgsColorRampButton() override;
55 
56  QSize sizeHint() const override;
57 
62  QgsColorRamp *colorRamp() const SIP_FACTORY;
63 
69  void setColorRampDialogTitle( const QString &title );
70 
76  QString colorRampDialogTitle() const;
77 
83  bool acceptLiveUpdates() const { return mAcceptLiveUpdates; }
84 
91  void setAcceptLiveUpdates( const bool accept ) { mAcceptLiveUpdates = accept; }
92 
99  void setShowMenu( bool showMenu );
100 
106  bool showMenu() const;
107 
115  void setDefaultColorRamp( QgsColorRamp *colorramp );
116 
124  QgsColorRamp *defaultColorRamp() const SIP_FACTORY;
125 
131  void setShowRandomColorRamp( bool showRandom ) { mShowRandomColorRamp = showRandom; }
132 
137  bool showRandomColorRamp() const { return mShowRandomColorRamp; }
138 
144  bool isRandomColorRamp() const;
145 
152  void setShowNull( bool showNull );
153 
159  bool showNull() const;
160 
166  bool isNull() const;
167 
175  void setContext( const QString &context ) { mContext = context; }
176 
184  QString context() const { return mContext; }
185 
191  void setShowGradientOnly( bool gradientonly ) { mShowGradientOnly = gradientonly; }
192 
197  bool showGradientOnly() const { return mShowGradientOnly; }
198 
204  void setColorRampName( const QString &name ) { mColorRampName = name; }
205 
210  QString colorRampName() const { return mColorRampName; }
211 
212  public slots:
213 
220  void setColorRamp( QgsColorRamp *colorramp );
221 
227  void setRandomColorRamp();
228 
235  void setColorRampFromName( const QString &name = QString() );
236 
242  void setButtonBackground( QgsColorRamp *colorramp = nullptr );
243 
250  void setToDefaultColorRamp();
251 
256  void setToNull();
257 
258  signals:
259 
265 
266  private slots:
267 
268  void rampWidgetUpdated();
269 
270  protected:
271 
272  bool event( QEvent *e ) override;
273  void changeEvent( QEvent *e ) override;
274  void showEvent( QShowEvent *e ) override;
275  void resizeEvent( QResizeEvent *event ) override;
276 
280  void mousePressEvent( QMouseEvent *e ) override;
281 
282  private:
283 
284  QString mColorRampDialogTitle;
285  bool mShowGradientOnly = false;
286  std::unique_ptr< QgsColorRamp > mColorRamp;
287  QString mColorRampName;
288  QgsStyle *mStyle = nullptr;
289 
290  std::unique_ptr< QgsColorRamp > mDefaultColorRamp;
291  QString mContext;
292  bool mAcceptLiveUpdates = true;
293  bool mShowRandomColorRamp = false;
294  bool mShowNull = false;
295 
296  QMenu *mMenu = nullptr;
297  QMenu *mAllRampsMenu = nullptr;
298 
299  QSize mIconSize;
300 
305  QPixmap createMenuIcon( QgsColorRamp *colorramp );
306 
307  private slots:
308 
309  void buttonClicked();
310 
314  void showColorRampDialog();
315 
319  void createColorRamp();
320 
324  void saveColorRamp();
325 
329  void invertColorRamp();
330 
334  void loadColorRamp();
335 
339  void prepareMenu();
340 };
341 
342 #endif
QgsColorRampButton::~QgsColorRampButton
~QgsColorRampButton() override
QgsColorRamp
Abstract base class for color ramps.
Definition: qgscolorramp.h:32
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
QgsColorRampButton::context
QString context() const
Returns the context string for the color ramp button.
Definition: qgscolorrampbutton.h:184
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
QgsPanelWidget
Base class for any widget that can be shown as a inline panel.
Definition: qgspanelwidget.h:30
QgsColorRampButton::showRandomColorRamp
bool showRandomColorRamp() const
Returns whether random colors option is shown in the button's drop-down menu.
Definition: qgscolorrampbutton.h:137
qgis_sip.h
QgsColorRampButton::setAcceptLiveUpdates
void setAcceptLiveUpdates(const bool accept)
Sets whether the button accepts live updates from QgsColorRampDialog.
Definition: qgscolorrampbutton.h:91
QgsColorRampButton
A cross platform button subclass for selecting color ramps.
Definition: qgscolorrampbutton.h:37
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
QgsColorRampButton::showGradientOnly
bool showGradientOnly() const
Returns true if the color ramp button only shows gradient type ramps.
Definition: qgscolorrampbutton.h:197
QgsStyle
Definition: qgsstyle.h:160
SIP_TRANSFERTHIS
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
QgsColorRampButton::setShowGradientOnly
void setShowGradientOnly(bool gradientonly)
Sets whether the color ramp button only shows gradient type ramps.
Definition: qgscolorrampbutton.h:191
QgsColorRampButton::colorRampChanged
void colorRampChanged()
Emitted whenever a new color ramp is set for the button.
QgsColorRampButton::setContext
void setContext(const QString &context)
Sets the context string for the color ramp button.
Definition: qgscolorrampbutton.h:175