--- a/src/ui/objecteditor.cpp Mon Jul 04 00:19:18 2022 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -#include <QCheckBox> -#include <QLineEdit> -#include <QFormLayout> -#include "src/ui/objecteditor.h" -#include "src/widgets/colorindexinput.h" -#include "widgets/colorbutton.h" -#include "widgets/vec3editor.h" - -using PropertyPointer = std::variant< - glm::vec3*, - glm::mat4*, - QString*, - ldraw::Color*, - CircularFraction*>; - -enum class PropertyKey -{ - Point1, - Point2, - Point3, - Point4, - Control1, - Control2, - Color, - Transformation, - Name, - Text, - Code, - Fraction, -}; - -constexpr std::size_t NUM_PROPERTIES = static_cast<int>(PropertyKey::Fraction) + 1; - -static QString propertyName(PropertyKey key) -{ - switch (key) { - case PropertyKey::Point1: - return ObjectEditor::tr("Vertex 1"); - case PropertyKey::Point2: - return ObjectEditor::tr("Vertex 2"); - case PropertyKey::Point3: - return ObjectEditor::tr("Vertex 3"); - case PropertyKey::Point4: - return ObjectEditor::tr("Vertex 4"); - case PropertyKey::Control1: - return ObjectEditor::tr("Control point 1"); - case PropertyKey::Control2: - return ObjectEditor::tr("Control point 2"); - case PropertyKey::Color: - return ObjectEditor::tr("Colour"); - case PropertyKey::Transformation: - return ObjectEditor::tr("Transformation"); - case PropertyKey::Name: - return ObjectEditor::tr("Name"); - case PropertyKey::Text: - return ObjectEditor::tr("Text"); - case PropertyKey::Code: - return ObjectEditor::tr("Code"); - case PropertyKey::Fraction: - return ObjectEditor::tr("Fraction"); - } - return ""; -} - -static std::map<PropertyKey, PropertyPointer> collectProperties(ModelElement& element) -{ - std::map<PropertyKey, PropertyPointer> result; - std::visit<void>(overloaded{ - [&](Colored<LineSegment>& edge) { - result[PropertyKey::Point1] = &edge.p1; - result[PropertyKey::Point2] = &edge.p2; - result[PropertyKey::Color] = &edge.color; - }, - [&](Colored<Triangle>& tri) { - result[PropertyKey::Point1] = &tri.p1; - result[PropertyKey::Point2] = &tri.p2; - result[PropertyKey::Point3] = &tri.p3; - result[PropertyKey::Color] = &tri.color; - }, - [&](Colored<Quadrilateral>& quad) { - result[PropertyKey::Point1] = &quad.p1; - result[PropertyKey::Point2] = &quad.p2; - result[PropertyKey::Point3] = &quad.p3; - result[PropertyKey::Point4] = &quad.p4; - result[PropertyKey::Color] = &quad.color; - }, - [&](Colored<ConditionalEdge>& cedge) { - result[PropertyKey::Point1] = &cedge.p1; - result[PropertyKey::Point2] = &cedge.p2; - result[PropertyKey::Control1] = &cedge.c1; - result[PropertyKey::Control2] = &cedge.c2; - result[PropertyKey::Color] = &cedge.color; - }, - [&](Colored<SubfileReference>& ref) { - result[PropertyKey::Transformation] = &ref.transformation; - result[PropertyKey::Name] = &ref.name; - result[PropertyKey::Color] = &ref.color; - }, - [&](Colored<CircularPrimitive>& circ) { - result[PropertyKey::Transformation] = &circ.transformation; - result[PropertyKey::Fraction] = &circ.fraction; - result[PropertyKey::Color] = &circ.color; - }, - [&](Empty) {}, - [&](Comment& comment) { - result[PropertyKey::Text] = &comment.text; - }, - [&](ParseError& parseError) { - result[PropertyKey::Code] = &parseError.code; - }, - }, element); - return result; -} - - -ObjectEditor::ObjectEditor(QWidget* parent) : - QWidget{parent} -{ - this->ui.setupUi(this); -}