Fri, 01 Jul 2022 16:46:43 +0300
Fix right click to delete not really working properly
Instead of removing the point that had been added, it would remove
the point that is being drawn, which would cause it to overwrite the
previous point using the new point, causing a bit of a delay
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
1 | #ifndef SETTINGS_H |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
2 | #define SETTINGS_H |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
3 | #include <QSettings> |
221
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
4 | #include <QMdiArea> |
264
76a025db4948
Convert all includes to be relative to project root directory. Files that cannot be found in this manner use angle brackets.
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
259
diff
changeset
|
5 | #include "src/libraries.h" |
76a025db4948
Convert all includes to be relative to project root directory. Files that cannot be found in this manner use angle brackets.
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
259
diff
changeset
|
6 | #include "src/gl/common.h" |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
7 | |
233 | 8 | template<class> |
220
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
9 | struct SettingInfo{}; |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
10 | |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
11 | #define SETTING(NAME, DEFVALUE) \ |
233 | 12 | namespace Setting { class NAME; } \ |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
13 | template<> \ |
220
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
14 | struct SettingInfo<Setting::NAME> \ |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
15 | { \ |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
16 | using type = decltype((DEFVALUE)); \ |
220
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
17 | static constexpr char name[] = #NAME; \ |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
18 | static const auto& defaultValue() { \ |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
19 | static const auto value = DEFVALUE; \ |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
20 | return value; \ |
250
2837b549e616
I felt that the compiler was too kind to me, so I enabled a big pile of warnings
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
240
diff
changeset
|
21 | } \ |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
22 | }; |
221
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
23 | |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
24 | // ----------------------------------------------------------------------------- |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
25 | // Setting definitions |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
26 | |
264
76a025db4948
Convert all includes to be relative to project root directory. Files that cannot be found in this manner use angle brackets.
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
259
diff
changeset
|
27 | Q_DECLARE_METATYPE(QMdiArea::ViewMode) |
76a025db4948
Convert all includes to be relative to project root directory. Files that cannot be found in this manner use angle brackets.
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
259
diff
changeset
|
28 | |
221
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
29 | // Rendering options |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
30 | SETTING(BackgroundColor, (QColor{48, 48, 48})) |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
31 | SETTING(MainColor, (QColor{255, 255, 64})) |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
32 | SETTING(SelectedColor, (QColor{32, 32, 224})) |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
33 | SETTING(LineThickness, 2.0f) |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
34 | SETTING(LineAntiAliasing, true) |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
35 | SETTING(RenderStyle, gl::RenderStyle::Normal) |
231
a9bf6bab5ea2
Add wireframe button
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
224
diff
changeset
|
36 | SETTING(Wireframe, false) |
221
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
37 | SETTING(DrawAxes, true) |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
38 | SETTING(MainWindowGeometry, QByteArray{}) |
240
414d392b9ae6
some improvements to dock widget handling
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
237
diff
changeset
|
39 | SETTING(MainWindowState, QByteArray{}) |
221
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
40 | SETTING(MainSplitterState, QByteArray{}) |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
41 | SETTING(RecentFiles, QStringList{}) |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
42 | SETTING(ViewMode, QMdiArea::TabbedView) |
237
10a6298f636f
Add an option to log opengl messages
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
233
diff
changeset
|
43 | SETTING(LogOpenGLDebugMessages, false) |
221
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
44 | |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
45 | // File management options |
259
c27612f0eac0
- Made it build under Qt6
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
250
diff
changeset
|
46 | SETTING(Libraries, Libraries{}) |
221
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
47 | |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
48 | // End of setting definitions |
e28f89b8ccdf
simplify settings further
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
220
diff
changeset
|
49 | // ----------------------------------------------------------------------------- |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
50 | #undef SETTING |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
51 | |
233 | 52 | template<class X> |
220
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
53 | using SettingType_t = typename SettingInfo<X>::type; |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
54 | static_assert(std::is_same_v<SettingType_t<Setting::DrawAxes>, bool>); |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
55 | |
233 | 56 | template<class X> |
220
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
57 | const char* settingName = SettingInfo<X>::name; |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
58 | |
233 | 59 | template<class X> |
220
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
60 | inline auto settingDefaultValue() |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
61 | { |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
62 | return SettingInfo<X>::defaultValue(); |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
63 | } |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
64 | |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
65 | // get() - get setting by enumerator |
233 | 66 | template<class X> |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
67 | inline SettingType_t<X> setting() |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
68 | { |
220
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
69 | static const QVariant defvariant = QVariant::fromValue(settingDefaultValue<X>()); |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
70 | const QVariant var = QSettings{}.value(settingName<X>, defvariant); |
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
71 | return var.value<SettingType_t<X>>(); |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
72 | } |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
73 | |
219 | 74 | // setSetting() - set value of setting |
233 | 75 | template<class X> |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
76 | inline void setSetting(const SettingType_t<X>& value) |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
77 | { |
259
c27612f0eac0
- Made it build under Qt6
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
250
diff
changeset
|
78 | if (false/*value == settingDefaultValue<X>()*/) { |
220
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
79 | QSettings{}.remove(settingName<X>); |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
80 | } |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
81 | else { |
220
a6d937f8c0ac
Further reduce settings.h
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
219
diff
changeset
|
82 | QSettings{}.setValue(settingName<X>, QVariant::fromValue(value)); |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
83 | } |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
84 | } |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
85 | |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff
changeset
|
86 | #endif // SETTINGS_H |