forked from rossy/mpc-qt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpaletteeditor.h
71 lines (55 loc) · 1.67 KB
/
paletteeditor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef PALETTEEDITOR_H
#define PALETTEEDITOR_H
#include <QMap>
#include <QWidget>
#include <QVariant>
class PaletteBox : public QWidget
{
Q_OBJECT
Q_PROPERTY(QColor value READ value WRITE setValue NOTIFY valueChanged)
public:
explicit PaletteBox(QWidget *parent = nullptr);
QColor value();
signals:
void valueChanged(QColor c);
void valueSelected(QColor c);
public slots:
void setValue(const QColor &c);
protected:
void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent *event);
private:
QColor color;
};
class PaletteEditor : public QWidget
{
Q_OBJECT
Q_PROPERTY(QPalette palette READ palette WRITE setPalette NOTIFY paletteChanged RESET resetPalette)
Q_PROPERTY(QVariant value READ variant WRITE setVariant)
public:
typedef QPair<QPalette::ColorGroup,QPalette::ColorRole> ColorPair;
typedef QMap<ColorPair,PaletteBox*> BoxMap;
typedef QMap<ColorPair,QColor> PaletteEntries;
explicit PaletteEditor(QWidget *parent = nullptr);
QPalette palette();
QPalette systemPalette();
// custom variant et al routines are needed for json serialisation
QVariant variant();
QPalette variantToPalette(const QVariant &v);
QVariant paletteToVariant(const QPalette &p);
signals:
void paletteChanged(QPalette pal);
public slots:
void setPalette(const QPalette &pal);
void setVariant(const QVariant &value);
void resetPalette();
private slots:
void colorField_valueSelected(ColorPair entry, QColor color);
void generateButton_clicked();
void generateButtonWindow_clicked();
private:
QPalette system;
QPalette selected;
BoxMap boxes;
};
#endif // PALETTEEDITOR_H