QGIS API Documentation  3.4.15-Madeira (e83d02e274)
qgscolorbutton.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscolorbutton.h - Color button
3  --------------------------------------
4  Date : 12-Dec-2006
5  Copyright : (C) 2006 by Tom Elwertowski
6  Email : telwertowski at users dot sourceforge dot net
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 QGSCOLORBUTTON_H
16 #define QGSCOLORBUTTON_H
17 
18 #include <QColorDialog>
19 #include <QToolButton>
20 #include "qgis_gui.h"
21 #include "qgis.h"
22 
23 class QMimeData;
25 class QgsPanelWidget;
26 
35 class GUI_EXPORT QgsColorButton : public QToolButton
36 {
37 
38 #ifdef SIP_RUN
40  if ( qobject_cast<QgsColorButton *>( sipCpp ) )
41  sipType = sipType_QgsColorButton;
42  else
43  sipType = NULL;
44  SIP_END
45 #endif
46 
47 
48  Q_OBJECT
49  Q_PROPERTY( QString colorDialogTitle READ colorDialogTitle WRITE setColorDialogTitle )
50  Q_PROPERTY( QColor color READ color WRITE setColor )
51  Q_PROPERTY( bool allowOpacity READ allowOpacity WRITE setAllowOpacity )
52  Q_PROPERTY( bool showMenu READ showMenu WRITE setShowMenu )
53  Q_PROPERTY( Behavior behavior READ behavior WRITE setBehavior )
54  Q_PROPERTY( QColor defaultColor READ defaultColor WRITE setDefaultColor )
55  Q_PROPERTY( bool showNoColor READ showNoColor WRITE setShowNoColor )
56  Q_PROPERTY( QString noColorString READ noColorString WRITE setNoColorString )
57  Q_PROPERTY( QString context READ context WRITE setContext )
58 
59  public:
60 
64  enum Behavior
65  {
66  ShowDialog = 0,
67  SignalOnly
68  };
69  Q_ENUM( Behavior )
70 
71 
78  QgsColorButton( QWidget *parent SIP_TRANSFERTHIS = nullptr, const QString &cdt = QString(), QgsColorSchemeRegistry *registry = nullptr );
79 
80  QSize minimumSizeHint() const override;
81  QSize sizeHint() const override;
82 
88  QColor color() const;
89 
97  void setAllowOpacity( bool allowOpacity );
98 
106  bool allowOpacity() const { return mAllowOpacity; }
107 
113  void setColorDialogTitle( const QString &title );
114 
120  QString colorDialogTitle() const;
121 
128  void setShowMenu( bool showMenu );
129 
135  bool showMenu() const { return menu() ? true : false; }
136 
143  void setBehavior( Behavior behavior );
144 
150  Behavior behavior() const { return mBehavior; }
151 
159  void setDefaultColor( const QColor &color );
160 
168  QColor defaultColor() const { return mDefaultColor; }
169 
179  void setShowNoColor( const bool showNoColorOption ) { mShowNoColorOption = showNoColorOption; }
180 
190  bool showNoColor() const { return mShowNoColorOption; }
191 
200  void setNoColorString( const QString &noColorString ) { mNoColorString = noColorString; }
201 
209  void setShowNull( bool showNull );
210 
217  bool showNull() const;
218 
225  bool isNull() const;
226 
235  QString noColorString() const { return mNoColorString; }
236 
244  void setContext( const QString &context ) { mContext = context; }
245 
253  QString context() const { return mContext; }
254 
262  void setColorSchemeRegistry( QgsColorSchemeRegistry *registry ) { mColorSchemeRegistry = registry; }
263 
271  QgsColorSchemeRegistry *colorSchemeRegistry() { return mColorSchemeRegistry; }
272 
273  public slots:
274 
281  void setColor( const QColor &color );
282 
291  void setButtonBackground( const QColor &color = QColor() );
292 
297  void copyColor();
298 
304  void pasteColor();
305 
309  void activatePicker();
310 
317  void setToNoColor();
318 
325  void setToDefaultColor();
326 
333  void setToNull();
334 
335  signals:
336 
342  void colorChanged( const QColor &color );
343 
350  void colorClicked( const QColor &color );
351 
352  protected:
353 
354  bool event( QEvent *e ) override;
355  void changeEvent( QEvent *e ) override;
356  void showEvent( QShowEvent *e ) override;
357  void resizeEvent( QResizeEvent *event ) override;
358 
362  static const QPixmap &transparentBackground();
363 
367  void mousePressEvent( QMouseEvent *e ) override;
368 
372  void mouseMoveEvent( QMouseEvent *e ) override;
373 
377  void mouseReleaseEvent( QMouseEvent *e ) override;
378 
382  void keyPressEvent( QKeyEvent *e ) override;
383 
387  void dragEnterEvent( QDragEnterEvent *e ) override;
388 
392  void dragLeaveEvent( QDragLeaveEvent *e ) override;
393 
397  void dropEvent( QDropEvent *e ) override;
398 
399  private:
400 
401 
402  QColor sampleColor( QPoint point ) const;
403 
404  static QScreen *findScreenAt( QPoint pos );
406  QString mColorDialogTitle;
407  QColor mColor;
408  QSize mMinimumSize;
409 
410  QgsColorSchemeRegistry *mColorSchemeRegistry = nullptr;
411 
412  QColor mDefaultColor;
413 
415  QColor mCurrentColor;
416 
417  QString mContext;
418  bool mAllowOpacity = false;
419  bool mColorSet = false;
420 
421  bool mShowNoColorOption = false;
422  QString mNoColorString;
423  bool mShowNull = false;
424 
425  QPoint mDragStartPosition;
426  bool mPickingColor = false;
427 
428  QMenu *mMenu = nullptr;
429 
430  QSize mIconSize;
431 
440  bool colorFromMimeData( const QMimeData *mimeData, QColor &resultColor );
441 
448  void stopPicking( QPoint eventPos, bool samplingColor = true );
449 
456  QPixmap createMenuIcon( const QColor &color, bool showChecks = true );
457 
458  private slots:
459 
460  void buttonClicked();
461 
462  void showColorDialog();
463 
467  void setValidColor( const QColor &newColor );
468 
473  void setValidTemporaryColor( const QColor &newColor );
474 
479  void addRecentColor( const QColor &color );
480 
484  void prepareMenu();
485 };
486 
487 #endif
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:46
Registry of color schemes.
QColor defaultColor() const
Returns the default color for the button, which is shown in the button&#39;s drop-down menu for the "defa...
void setNoColorString(const QString &noColorString)
Sets the string to use for the "no color" option in the button&#39;s drop-down menu.
Show a color picker dialog when clicked.
bool showNoColor() const
Returns whether the "no color" option is shown in the button&#39;s drop-down menu.
A cross platform button subclass for selecting colors.
Base class for any widget that can be shown as a inline panel.
void setContext(const QString &context)
Sets the context string for the color button.
QString context() const
Returns the context string for the color button.
Behavior
Specifies the behavior when the button is clicked.
void setShowNoColor(const bool showNoColorOption)
Sets whether the "no color" option should be shown in the button&#39;s drop-down menu.
QString noColorString() const
Returns the string used for the "no color" option in the button&#39;s drop-down menu. ...
#define SIP_END
Definition: qgis_sip.h:182
Behavior behavior() const
Returns the behavior for when the button is clicked.
void setColorSchemeRegistry(QgsColorSchemeRegistry *registry)
Sets the color scheme registry for the button, which controls the color swatch grids that are shown i...
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition: qgis_sip.h:165
bool showMenu() const
Returns whether the drop-down menu is shown for the button.
QgsColorSchemeRegistry * colorSchemeRegistry()
Returns the color scheme registry for the button, which controls the color swatch grids that are show...