diff -r a6d937f8c0ac -r e28f89b8ccdf src/settings.h --- a/src/settings.h Tue Jun 14 20:44:07 2022 +0300 +++ b/src/settings.h Tue Jun 14 22:31:39 2022 +0300 @@ -1,13 +1,20 @@ #ifndef SETTINGS_H #define SETTINGS_H #include -#include "settingdefs.h" +#include +#include "libraries.h" +#include "gl/common.h" // SettingType - get type of setting by enumerator -template +template +struct SettingId{}; + +template struct SettingInfo{}; #define SETTING(NAME, DEFVALUE) \ + namespace SettingIdTypes { class NAME; } \ + namespace Setting { constexpr SettingId NAME; } \ template<> \ struct SettingInfo \ { \ @@ -18,24 +25,47 @@ return value; \ }; \ }; -#include "settingdefs.h" + +// ----------------------------------------------------------------------------- +// Setting definitions + +// Rendering options +SETTING(Locale, QStringLiteral("system")) +SETTING(BackgroundColor, (QColor{48, 48, 48})) +SETTING(MainColor, (QColor{255, 255, 64})) +SETTING(SelectedColor, (QColor{32, 32, 224})) +SETTING(LineThickness, 2.0f) +SETTING(LineAntiAliasing, true) +SETTING(RenderStyle, gl::RenderStyle::Normal) +SETTING(DrawWireframe, false) +SETTING(DrawAxes, true) +SETTING(MainWindowGeometry, QByteArray{}) +SETTING(MainSplitterState, QByteArray{}) +SETTING(RecentFiles, QStringList{}) +SETTING(ViewMode, QMdiArea::TabbedView) + +// File management options +SETTING(Libraries, QVector{}) + +// End of setting definitions +// ----------------------------------------------------------------------------- #undef SETTING -template +template using SettingType_t = typename SettingInfo::type; static_assert(std::is_same_v, bool>); -template +template const char* settingName = SettingInfo::name; -template +template inline auto settingDefaultValue() { return SettingInfo::defaultValue(); } // get() - get setting by enumerator -template +template inline SettingType_t setting() { static const QVariant defvariant = QVariant::fromValue(settingDefaultValue()); @@ -44,7 +74,7 @@ } // setSetting() - set value of setting -template +template inline void setSetting(const SettingType_t& value) { if (value == settingDefaultValue()) {