Sat, 05 Oct 2019 23:47:03 +0300
added the settings editor
#pragma once #include <QPointF> #include <QString> #include <QStringView> #include "main.h" #include "colors.h" #include "vertex.h" namespace modelobjects { enum class Property; class BaseObject; class ColoredBaseObject; } enum class modelobjects::Property { Color, Text, Point1, Point2, Point3, Point4, ControlPoint1, ControlPoint2, Position, Transformation, ReferenceName, IsInverted, }; class modelobjects::BaseObject { public: enum class SetPropertyResult { Success = 0, PropertyNotHandled, InvalidValue }; BaseObject(); BaseObject(const BaseObject&) = delete; virtual ~BaseObject(); const unsigned int id; //virtual void toString(QTextStream &out) = 0; virtual bool hasColor() const; virtual QVariant getProperty(Property id) const; virtual SetPropertyResult setProperty(Property id, const QVariant& value); virtual QString textRepresentation() const = 0; virtual QBrush textRepresentationForeground() const; virtual QBrush textRepresentationBackground() const; virtual QFont textRepresentationFont() const; }; class modelobjects::ColoredBaseObject : public BaseObject { public: ColoredBaseObject(const Color color_index = colors::main); bool hasColor() const override final; QVariant getProperty(Property id) const override; SetPropertyResult setProperty(Property id, const QVariant& value) override; private: Color color_index = colors::main; }; namespace modelobjects { using Id = std::remove_const_t<decltype(BaseObject::id)>; }