QGIS API Documentation  3.4.15-Madeira (e83d02e274)
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.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 mousePressEvent( QMouseEvent *e ) override;
140 
141  void mouseMoveEvent( QMouseEvent *e ) override;
142 
143  void mouseReleaseEvent( QMouseEvent *e ) override;
144 
145  void keyPressEvent( QKeyEvent *e ) override;
146 
147  private slots:
148 
149  void mHueRadio_toggled( bool checked );
150  void mSaturationRadio_toggled( bool checked );
151  void mValueRadio_toggled( bool checked );
152  void mRedRadio_toggled( bool checked );
153  void mGreenRadio_toggled( bool checked );
154  void mBlueRadio_toggled( bool checked );
155 
156  void mAddColorToSchemeButton_clicked();
157 
158  void importPalette();
159  void removePalette();
160  void newPalette();
161 
162  void schemeIndexChanged( int index );
163  void listSelectionChanged( const QItemSelection &selected, const QItemSelection &deselected );
164 
165  void mAddCustomColorButton_clicked();
166 
167  void mSampleButton_clicked();
168  void mTabWidget_currentChanged( int index );
169 
170  private slots:
171 
172  void mActionShowInButtons_toggled( bool state );
173 
174  private:
175 
176  static QScreen *findScreenAt( QPoint pos );
177 
178  bool mAllowAlpha = true;
179 
180  int mLastCustomColorIndex = 0;
181 
182  bool mPickingColor = false;
183 
184  bool mDiscarded = false;
185 
189  void saveSettings();
190 
197  void stopPicking( QPoint eventPos, bool takeSample = true );
198 
204  QColor averageColor( const QImage &image ) const;
205 
211  QColor sampleColor( QPoint point ) const;
212 
216  void refreshSchemeComboBox();
217 
221  static QString gplFilePath();
222 
224  void updateActionsForCurrentScheme();
225 };
226 
227 #endif // QGSCOMPOUNDCOLORWIDGET_H
A color scheme which stores its colors in a gpl palette file within the "palettes" subfolder off the ...
void setDiscarded(bool discarded)
Sets whether the widget's color has been "discarded" and the selected color should not be stored in t...
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:46
Base class for any widget that can be shown as a inline panel.
A custom QGIS widget for selecting a color, including options for selecting colors via hue wheel...
void keyPressEvent(QKeyEvent *event) override
Overridden key press event to handle the esc event on the widget.
Use a narrower, vertically stacked layout.