src/widgets/colorindexinput.cpp

changeset 178
a23024fc98e0
child 200
ca23936b455b
--- /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);
+}

mercurial