--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/widgets/colorindexinput.cpp Sun Mar 13 14:51:39 2022 +0200 @@ -0,0 +1,43 @@ +#include "colorindexinput.h" +#include "ui_colorindexinput.h" +#include "colorselectdialog.h" +#include "uiutilities.h" + +ColorIndexInput::ColorIndexInput(Document *document, ldraw::Color color, QWidget *parent) : + QWidget{parent}, + document{document}, + ui{*new Ui_ColorIndexInput} +{ + this->ui.setupUi(this); + connect(this->ui.button, &QPushButton::clicked, [this]() + { + ColorSelectDialog dialog{this->document->colorTable, this->document}; + const int result = dialog.exec(); + if (result == QDialog::Accepted) + { + this->ui.index->setValue(dialog.currentColor().index); + } + }); + connect(this->ui.index, qOverload<int>(&QSpinBox::valueChanged), [this](int value) + { + this->ui.button->setText(ldraw::colorDisplayName({value}, this->document->colorTable)); + uiutilities::colorizeWidget(this->ui.button, ldraw::colorFace({value}, this->document->colorTable)); + Q_EMIT this->colorChanged({value}); + }); + this->ui.index->setValue(color.index); +} + +ColorIndexInput::~ColorIndexInput() +{ + delete &this->ui; +} + +ldraw::Color ColorIndexInput::selectedColor() const +{ + return {this->ui.index->value()}; +} + +void ColorIndexInput::setSelectedColor(ldraw::Color color) +{ + this->ui.index->setValue(color.index); +}