src/dialogs/subfilereferenceeditor.cpp

changeset 1297
389516787a4c
child 1298
dbc8bb2a4d84
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/dialogs/subfilereferenceeditor.cpp	Sun Mar 18 12:00:39 2018 +0200
@@ -0,0 +1,69 @@
+#include "subfilereferenceeditor.h"
+#include "ui_subfilereferenceeditor.h"
+#include "../linetypes/modelobject.h"
+#include "../primitives.h"
+#include "../guiutilities.h"
+
+SubfileReferenceEditor::SubfileReferenceEditor(LDSubfileReference* reference, QWidget* parent) :
+	QDialog {parent},
+	reference {reference},
+	ui {*new Ui::SubfileReferenceEditor}
+{
+	this->ui.setupUi(this);
+	this->ui.referenceName->setText(reference->referenceName());
+	this->color = reference->color();
+	this->ui.positionX->setValue(reference->position().x());
+	this->ui.positionY->setValue(reference->position().y());
+	this->ui.positionZ->setValue(reference->position().z());
+	::setupColorButton(parent, this->ui.colorButton, &this->color);
+	for (int i : {0, 1, 2})
+	for (int j : {0, 1, 2})
+	{
+		QLayoutItem* item = this->ui.matrixLayout->itemAtPosition(i, j);
+		QDoubleSpinBox* spinbox = item ? qobject_cast<QDoubleSpinBox*>(item->widget()) : nullptr;
+		spinbox->setValue(reference->transformationMatrix()(i, j));
+	}
+	connect(
+		this->ui.primitivesTreeView,
+		&QTreeView::clicked,
+		[&](const QModelIndex& index)
+		{
+			QAbstractItemModel* model = this->ui.primitivesTreeView->model();
+			QVariant primitiveName = model->data(index, PrimitiveManager::PrimitiveNameRole);
+
+			if (primitiveName.isValid())
+				this->ui.referenceName->setText(primitiveName.toString());
+		}
+	);
+}
+
+void SubfileReferenceEditor::accept()
+{
+	this->reference->setReferenceName(this->ui.referenceName->text());
+	Matrix transformationMatrix;
+	for (int i : {0, 1, 2})
+	for (int j : {0, 1, 2})
+	{
+		QLayoutItem* item = this->ui.matrixLayout->itemAtPosition(i, j);
+		QDoubleSpinBox* spinbox = item ? qobject_cast<QDoubleSpinBox*>(item->widget()) : nullptr;
+		transformationMatrix(i, j) = spinbox->value();
+	}
+	this->reference->setTransformationMatrix(transformationMatrix);
+	this->reference->setPosition({
+		this->ui.positionX->value(),
+		this->ui.positionY->value(),
+		this->ui.positionZ->value()
+	});
+	this->reference->setColor(this->color);
+	QDialog::accept();
+}
+
+void SubfileReferenceEditor::setPrimitivesTree(PrimitiveManager* primitives)
+{
+	this->ui.primitivesTreeView->setModel(primitives);
+}
+
+SubfileReferenceEditor::~SubfileReferenceEditor()
+{
+	delete &this->ui;
+}

mercurial