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);
}
|