QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgscolorschemelist.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscolorschemelist.h
3 --------------------
4 Date : August 2014
5 Copyright : (C) 2014 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#ifndef QGSCOLORSCHEMELIST_H
16#define QGSCOLORSCHEMELIST_H
17
18#include "qgscolorscheme.h"
19#include <QTreeView>
20#include <QAbstractItemModel>
21#include <QItemDelegate>
22#include <QFile>
23#include "qgis_gui.h"
24#include "qgis_sip.h"
25
26class QMimeData;
27class QgsPanelWidget;
28
36class GUI_EXPORT QgsColorSwatchDelegate : public QAbstractItemDelegate
37{
38 Q_OBJECT
39
40 public:
41 QgsColorSwatchDelegate( QWidget *parent SIP_TRANSFERTHIS = nullptr );
42 void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
43 QSize sizeHint( const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
44 bool editorEvent( QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index ) override;
45
46 private slots:
47
48 void colorChanged();
49
50 private:
51 QWidget *mParent = nullptr;
52
57 QPixmap transparentBackground() const;
58};
59
60
68class GUI_EXPORT QgsColorSchemeModel: public QAbstractItemModel
69{
70 Q_OBJECT
71
72 public:
73
81 explicit QgsColorSchemeModel( QgsColorScheme *scheme, const QString &context = QString(), const QColor &baseColor = QColor(), QObject *parent SIP_TRANSFERTHIS = nullptr );
82
83 //reimplemented QAbstractItemModel methods
84 QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const override;
85 QModelIndex parent( const QModelIndex &index ) const override;
86 int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
87 int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
88 QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
89 Qt::ItemFlags flags( const QModelIndex &index ) const override;
90 bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole ) override;
91 QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
92 Qt::DropActions supportedDropActions() const override;
93 QStringList mimeTypes() const override;
94 bool removeRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
95 bool insertRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
96 QMimeData *mimeData( const QModelIndexList &indexes ) const override;
97 bool dropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent ) override;
98
103 QgsNamedColorList colors() const { return mColors; }
104
111 void setScheme( QgsColorScheme *scheme, const QString &context = QString(), const QColor &baseColor = QColor() );
112
118 QString context() const { return mContext; }
119
125 QColor baseColor() const { return mBaseColor; }
126
133 void addColor( const QColor &color, const QString &label = QString(), bool allowDuplicate = false );
134
139 bool isDirty() const { return mIsDirty; }
140
141 private:
142
143 enum Columns
144 {
145 ColorSwatch = 0,
146 ColorLabel
147 };
148
149 QgsNamedColorList mColors;
150 QgsColorScheme *mScheme = nullptr;
151 QString mContext;
152 QColor mBaseColor;
153 bool mIsDirty;
154};
155
163class GUI_EXPORT QgsColorSchemeList: public QTreeView
164{
165 Q_OBJECT
166
167 public:
168
176 QgsColorSchemeList( QWidget *parent SIP_TRANSFERTHIS = nullptr, QgsColorScheme *scheme = nullptr, const QString &context = QString(), const QColor &baseColor = QColor() );
177
183 bool saveColorsToScheme();
184
190 bool importColorsFromGpl( QFile &file );
191
197 bool exportColorsToGpl( QFile &file );
198
203 bool isDirty() const;
204
210 QgsColorScheme *scheme();
211
212 public slots:
213
221 void setScheme( QgsColorScheme *scheme, const QString &context = QString(), const QColor &baseColor = QColor() );
222
226 void removeSelection();
227
234 void addColor( const QColor &color, const QString &label = QString(), bool allowDuplicate = false );
235
240 void pasteColors();
241
246 void copyColors();
247
253 void showImportColorsDialog();
254
260 void showExportColorsDialog();
261
262 signals:
263
268 void colorSelected( const QColor &color );
269
270 protected:
271
272 void keyPressEvent( QKeyEvent *event ) override;
273
274 void mousePressEvent( QMouseEvent *event ) override;
275
276 void mouseReleaseEvent( QMouseEvent *event ) override;
277
278 private:
279 QgsColorScheme *mScheme = nullptr;
280 QgsColorSchemeModel *mModel = nullptr;
281 QgsColorSwatchDelegate *mSwatchDelegate = nullptr;
282
283 QPoint mDragStartPosition;
284
285};
286
287#endif
An editable list of color swatches, taken from an associated QgsColorScheme.
void colorSelected(const QColor &color)
Emitted when a color is selected from the list.
A model for colors in a color scheme.
QgsNamedColorList colors() const
Returns a list of colors shown in the widget.
QColor baseColor() const
Gets the base color for the color scheme used by the model.
bool isDirty() const
Returns whether the color scheme model has been modified.
QString context() const
Gets the current color scheme context for the model.
Abstract base class for color schemes.
A delegate for showing a color swatch in a list.
Base class for any widget that can be shown as a inline panel.
QList< QPair< QColor, QString > > QgsNamedColorList
List of colors paired with a friendly display name identifying the color.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53