QGIS API Documentation  3.21.0-Master (909859188c)
qgscompoundcolorwidget.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscompoundcolorwidget.h
3  ------------------------
4  begin : April 2016
5  copyright : (C) 2016 by Nyall Dawson
6  email : nyall dot dawson 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 #ifndef QGSCOMPOUNDCOLORWIDGET_H
17 #define QGSCOMPOUNDCOLORWIDGET_H
18 
19 #include "qgsguiutils.h"
20 #include "qgis_sip.h"
21 #include "qgspanelwidget.h"
22 #include "ui_qgscompoundcolorwidget.h"
23 #include "qgis_gui.h"
24 
33 class GUI_EXPORT QgsCompoundColorWidget : public QgsPanelWidget, private Ui::QgsCompoundColorWidgetBase
34 {
35 
36  Q_OBJECT
37 
38  public:
39 
41  enum Layout
42  {
43  LayoutDefault = 0,
45  };
46 
53  QgsCompoundColorWidget( QWidget *parent SIP_TRANSFERTHIS = nullptr, const QColor &color = QColor(), Layout layout = LayoutDefault );
54 
55  ~QgsCompoundColorWidget() override;
56 
61  QColor color() const;
62 
69  void setAllowOpacity( bool allowOpacity );
70 
77  void setDiscarded( bool discarded ) { mDiscarded = discarded; }
78 
89  static QgsUserColorScheme *importUserPaletteFromFile( QWidget *parent );
90 
101  static QgsUserColorScheme *createNewUserPalette( QWidget *parent );
102 
113  static bool removeUserPalette( QgsUserColorScheme *scheme, QWidget *parent );
114 
115  signals:
116 
121  void currentColorChanged( const QColor &color );
122 
123  public slots:
124 
129  void setColor( const QColor &color );
130 
135  void setPreviousColor( const QColor &color );
136 
137  protected:
138 
139  void hideEvent( QHideEvent *e ) override;
140 
141  void mousePressEvent( QMouseEvent *e ) override;
142 
143  void mouseMoveEvent( QMouseEvent *e ) override;
144 
145  void mouseReleaseEvent( QMouseEvent *e ) override;
146 
147  void keyPressEvent( QKeyEvent *e ) override;
148 
149  private slots:
150 
151  void mHueRadio_toggled( bool checked );
152  void mSaturationRadio_toggled( bool checked );
153  void mValueRadio_toggled( bool checked );
154  void mRedRadio_toggled( bool checked );
155  void mGreenRadio_toggled( bool checked );
156  void mBlueRadio_toggled( bool checked );
157 
158  void mAddColorToSchemeButton_clicked();
159 
160  void importPalette();
161  void removePalette();
162  void newPalette();
163 
164  void schemeIndexChanged( int index );
165  void listSelectionChanged( const QItemSelection &selected, const QItemSelection &deselected );
166 
167  void mAddCustomColorButton_clicked();
168 
169  void mSampleButton_clicked();
170  void mTabWidget_currentChanged( int index );
171 
172  private slots:
173 
174  void mActionShowInButtons_toggled( bool state );
175 
176  private:
177 
178  static QScreen *findScreenAt( QPoint pos );
179 
180  bool mAllowAlpha = true;
181 
182  int mLastCustomColorIndex = 0;
183 
184  bool mPickingColor = false;
185 
186  bool mDiscarded = false;
187 
191  void saveSettings();
192 
199  void stopPicking( QPoint eventPos, bool takeSample = true );
200 
206  QColor averageColor( const QImage &image ) const;
207 
213  QColor sampleColor( QPoint point ) const;
214 
218  void refreshSchemeComboBox();
219 
223  static QString gplFilePath();
224 
226  void updateActionsForCurrentScheme();
227 };
228 
229 #endif // QGSCOMPOUNDCOLORWIDGET_H
A custom QGIS widget for selecting a color, including options for selecting colors via hue wheel,...
@ LayoutVertical
Use a narrower, vertically stacked layout.
void currentColorChanged(const QColor &color)
Emitted when the dialog's color changes.
void setDiscarded(bool discarded)
Sets whether the widget's color has been "discarded" and the selected color should not be stored in t...
Base class for any widget that can be shown as a inline panel.
void keyPressEvent(QKeyEvent *event) override
Overridden key press event to handle the esc event on the widget.
A color scheme which stores its colors in a gpl palette file within the "palettes" subfolder off the ...
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53