Sat, 08 Apr 2023 16:12:12 +0300
Use explicit captures in main
| 24 | 1 | /* | 
| 2 | * LDForge: LDraw parts authoring CAD | |
| 3 | * Copyright (C) 2013 - 2020 Teemu Piippo | |
| 4 | * | |
| 5 | * This program is free software: you can redistribute it and/or modify | |
| 6 | * it under the terms of the GNU General Public License as published by | |
| 7 | * the Free Software Foundation, either version 3 of the License, or | |
| 8 | * (at your option) any later version. | |
| 9 | * | |
| 10 | * This program is distributed in the hope that it will be useful, | |
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 13 | * GNU General Public License for more details. | |
| 14 | * | |
| 15 | * You should have received a copy of the GNU General Public License | |
| 16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 17 | */ | |
| 18 | ||
| 
208
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
19 | #include <QPixmap> | 
| 
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: 
251 
diff
changeset
 | 
20 | #include "src/model.h" | 
| 3 | 21 | |
| 
232
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
22 | constexpr unsigned int gcd(unsigned int a, unsigned int b) | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
23 | { | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
24 | while (a != b) { | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
25 | if (b > a) { | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
26 | b -= a; | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
27 | } | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
28 | else if (a > b) { | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
29 | a -= b; | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
30 | } | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
31 | } | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
32 | return a; | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
33 | } | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
34 | |
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
35 | static_assert(gcd(16, 15) == 1); | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
36 | static_assert(gcd(16, 4) == 4); | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
37 | static_assert(gcd(272, 192) == 16); | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
38 | |
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
39 | static constexpr const char* circularPrimitiveTypeString(const CircularPrimitive& circ) | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
40 | { | 
| 
242
 
16855456992d
Substitute circular primitives in during file parsing
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
232 
diff
changeset
 | 
41 | return circularPrimitiveStems[circ.type]; | 
| 
232
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
42 | } | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
43 | |
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
44 | static QString circularPrimitiveFilePath(const CircularPrimitive& circ) | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
45 | { | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
46 | QString result; | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
47 | if (circ.fraction.divisions != 16) { | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
48 | result += QString::number(circ.fraction.divisions) + QStringLiteral("\\"); | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
49 | } | 
| 
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: 
242 
diff
changeset
 | 
50 | const unsigned int factor = gcd(circ.fraction.segments, circ.fraction.divisions); | 
| 
 
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: 
242 
diff
changeset
 | 
51 | unsigned int num = circ.fraction.segments / factor; | 
| 
 
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: 
242 
diff
changeset
 | 
52 | unsigned int denom = circ.fraction.divisions / factor; | 
| 
232
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
53 | if (denom < 4) { | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
54 | num *= 4 / denom; | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
55 | denom = 4; | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
56 | } | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
57 | result += QStringLiteral("%1-%2").arg(num).arg(denom); | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
58 | result += QString::fromLatin1(circularPrimitiveTypeString(circ)); | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
59 | result += QStringLiteral(".dat"); | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
60 | return result; | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
61 | } | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
62 | |
| 
208
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
63 | static const char* iconPathForElement(const ModelElement& element) | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
64 | { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
65 | return std::visit(overloaded{ | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
66 | [](const Colored<SubfileReference>&) { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
67 | return ":/icons/linetype-subfile.png"; | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
68 | }, | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
69 | [](const Colored<LineSegment>&) { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
70 | return ":/icons/linetype-edgeline.png"; | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
71 | }, | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
72 | [](const Colored<Triangle>&) { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
73 | return ":/icons/linetype-triangle.png"; | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
74 | }, | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
75 | [](const Colored<Quadrilateral>&) { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
76 | return ":/icons/linetype-quadrilateral.png"; | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
77 | }, | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
78 | [](const Colored<ConditionalEdge>&) { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
79 | return ":/icons/linetype-conditionaledge.png"; | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
80 | }, | 
| 
232
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
81 | [](const Colored<CircularPrimitive>&) { | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
82 | return ":/icons/linetype-circularprimitive.png"; | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
83 | }, | 
| 
208
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
84 | [](const Comment&) { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
85 | return ":/icons/chatbubble-ellipses-outline.png"; | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
86 | }, | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
87 | [](const Empty&) { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
88 | return ""; | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
89 | }, | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
90 | [](const ParseError&) { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
91 | return ":/icons/linetype-errorline.png"; | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
92 | }, | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
93 | }, element); | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
94 | } | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
95 | |
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
96 | static QPixmap iconForElement(const ModelElement& element) | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
97 | { | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
98 | // We avoid processing the same image over and over again by storing it | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
99 | // in a static constant. However, we need one per each possible type | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
100 | // of ModelElement, so we put the pixmap constant inside a templated lambda, | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
101 | // which gets instiated once for each type of ModelElement. | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
102 | return std::visit([](auto&& element){ | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
103 | static const QPixmap pixmap = QPixmap::fromImage( | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
104 | QImage{iconPathForElement(element)} | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
105 | .scaledToHeight(24, Qt::SmoothTransformation) | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
106 | ); | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
107 | return pixmap; | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
108 | }, element); | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
109 | } | 
| 
 
930928b760a2
Add model icons back into the list view
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
204 
diff
changeset
 | 
110 | |
| 200 | 111 | QString modelElementToString(const ModelElement &element) | 
| 112 | { | |
| 113 | return std::visit(overloaded{ | |
| 114 | [](const Colored<SubfileReference>& ref) { | |
| 
326
 
65dbfcb859a7
Add missing 0 BFC INVERTNEXT when writing out subfile references
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
309 
diff
changeset
 | 
115 | QString result; | 
| 
 
65dbfcb859a7
Add missing 0 BFC INVERTNEXT when writing out subfile references
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
309 
diff
changeset
 | 
116 | result += QStringLiteral("1 %1 %2 %3") | 
| 200 | 117 | .arg(ref.color.index) | 
| 118 | .arg(transformToString(ref.transformation)) | |
| 119 | .arg(ref.name); | |
| 
326
 
65dbfcb859a7
Add missing 0 BFC INVERTNEXT when writing out subfile references
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
309 
diff
changeset
 | 
120 | return result; | 
| 200 | 121 | }, | 
| 122 | [](const Colored<LineSegment>& seg) { | |
| 123 | return QStringLiteral("2 %1 %2 %3") | |
| 124 | .arg(seg.color.index) | |
| 125 | .arg(vertexToString(seg.p1)) | |
| 126 | .arg(vertexToString(seg.p2)); | |
| 127 | }, | |
| 128 | [](const Colored<Triangle>& triangle) { | |
| 129 | return QStringLiteral("3 %1 %2 %3 %4") | |
| 130 | .arg(triangle.color.index) | |
| 131 | .arg(vertexToString(triangle.p1)) | |
| 132 | .arg(vertexToString(triangle.p2)) | |
| 133 | .arg(vertexToString(triangle.p3)); | |
| 134 | }, | |
| 135 | [](const Colored<Quadrilateral>& quad) { | |
| 136 | return QStringLiteral("4 %1 %2 %3 %4 %5") | |
| 137 | .arg(quad.color.index) | |
| 138 | .arg(vertexToString(quad.p1)) | |
| 139 | .arg(vertexToString(quad.p2)) | |
| 140 | .arg(vertexToString(quad.p3)) | |
| 141 | .arg(vertexToString(quad.p4)); | |
| 142 | }, | |
| 143 | [](const Colored<ConditionalEdge>& cedge) { | |
| 144 | return QStringLiteral("5 %1 %2 %3 %4 %5") | |
| 145 | .arg(cedge.color.index) | |
| 146 | .arg(vertexToString(cedge.p1)) | |
| 147 | .arg(vertexToString(cedge.p2)) | |
| 148 | .arg(vertexToString(cedge.c1)) | |
| 149 | .arg(vertexToString(cedge.c2)); | |
| 150 | }, | |
| 
232
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
151 | [](const Colored<CircularPrimitive>& circ) { | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
152 | return QStringLiteral("1 %1 %2 %3") | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
153 | .arg(circ.color.index) | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
154 | .arg(transformToString(circ.transformation)) | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
155 | .arg(circularPrimitiveFilePath(circ)); | 
| 
 
8efa3a33172e
Add base code for circular primitives
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
208 
diff
changeset
 | 
156 | }, | 
| 200 | 157 | [](const Comment& comment) { | 
| 158 | return "0 " + comment.text; | |
| 159 | }, | |
| 160 | [](const Empty&) { | |
| 161 | return QStringLiteral(""); | |
| 162 | }, | |
| 163 | [](const ParseError& parseError) { | |
| 164 | return parseError.code; | |
| 165 | }, | |
| 166 | }, element); | |
| 167 | } | |
| 168 | ||
| 
204
 
52e10e8d88cc
Concentrate model editing into one coroutine inside main()
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
200 
diff
changeset
 | 
169 | template<typename K, typename V> | 
| 
 
52e10e8d88cc
Concentrate model editing into one coroutine inside main()
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
200 
diff
changeset
 | 
170 | void removeFromMap(std::map<K, V>& map, const K& key) | 
| 
 
52e10e8d88cc
Concentrate model editing into one coroutine inside main()
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
200 
diff
changeset
 | 
171 | { | 
| 
 
52e10e8d88cc
Concentrate model editing into one coroutine inside main()
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
200 
diff
changeset
 | 
172 | const auto it = map.find(key); | 
| 
 
52e10e8d88cc
Concentrate model editing into one coroutine inside main()
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
200 
diff
changeset
 | 
173 | if (it != map.end()) { | 
| 
 
52e10e8d88cc
Concentrate model editing into one coroutine inside main()
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
200 
diff
changeset
 | 
174 | map.erase(it); | 
| 
 
52e10e8d88cc
Concentrate model editing into one coroutine inside main()
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
200 
diff
changeset
 | 
175 | } | 
| 
 
52e10e8d88cc
Concentrate model editing into one coroutine inside main()
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
200 
diff
changeset
 | 
176 | } | 
| 
 
52e10e8d88cc
Concentrate model editing into one coroutine inside main()
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
200 
diff
changeset
 | 
177 | |
| 
137
 
fb9990772357
Add documentation to model.cpp
 
Teemu Piippo <teemu@hecknology.net> 
parents: 
133 
diff
changeset
 | 
178 | /** | 
| 141 | 179 | * @brief Sets the path to the model | 
| 180 | * @param path New path to use | |
| 181 | */ | |
| 338 | 182 | void updateHeaderNameField(QTextDocument& model, const QString &name) | 
| 141 | 183 | { | 
| 
333
 
07e65a4c6611
Experiment to delete the Model class and rely solely on text documents
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
329 
diff
changeset
 | 
184 | #if 0 | 
| 141 | 185 | // Update the "Name: 1234.dat" comment | 
| 200 | 186 | if (model.size() >= 2) { | 
| 187 | if (const Comment* nameObject = std::get_if<Comment>(&model[1])) { | |
| 188 | if (nameObject->text.startsWith("Name: ")) { | |
| 189 | model[1] = Comment{"Name: " + name}; | |
| 141 | 190 | } | 
| 191 | } | |
| 192 | } | |
| 
333
 
07e65a4c6611
Experiment to delete the Model class and rely solely on text documents
 
Teemu Piippo <teemu.s.piippo@gmail.com> 
parents: 
329 
diff
changeset
 | 
193 | #endif | 
| 141 | 194 | } |