File: colorbutton.cpp

package info (click to toggle)
olive-editor 20181223-2
  • links: PTS
  • area: main
  • in suites: buster
  • size: 2,844 kB
  • sloc: cpp: 20,147; xml: 315; ansic: 16; makefile: 11
file content (51 lines) | stat: -rw-r--r-- 1,112 bytes parent folder | download
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
#include "colorbutton.h"

#include "project/undo.h"

#include <QColorDialog>

ColorButton::ColorButton(QWidget *parent)
    : QPushButton(parent), color(Qt::white) {
    set_button_color();
    connect(this, SIGNAL(clicked(bool)), this, SLOT(open_dialog()));
}

QColor ColorButton::get_color() {
    return color;
}

void ColorButton::set_color(QColor c) {
	previousColor = color;
    color = c;
	set_button_color();
}

const QColor &ColorButton::getPreviousValue() {
	return previousColor;
}

void ColorButton::set_button_color() {
    QPalette pal = palette();
    pal.setColor(QPalette::Button, color);
    setPalette(pal);
}

void ColorButton::open_dialog() {
    QColor new_color = QColorDialog::getColor(color, NULL, "Set Color");
	if (new_color.isValid() && color != new_color) {
		set_color(new_color);
        set_button_color();
		emit color_changed();
    }
}

ColorCommand::ColorCommand(ColorButton* s, QColor o, QColor n)
    : sender(s), old_color(o), new_color(n) {}

void ColorCommand::undo() {
    sender->set_color(old_color);
}

void ColorCommand::redo() {
    sender->set_color(new_color);
}