@@ -32,6 +32,8 @@ ProjectLoader::ProjectLoader(QObject *parent) :
32
32
}
33
33
});
34
34
35
+ connect (qApp, &QCoreApplication::aboutToQuit, this , &ProjectLoader::clear);
36
+
35
37
initTimer ();
36
38
37
39
// Register pen blocks
@@ -64,45 +66,7 @@ void ProjectLoader::setFileName(const QString &newFileName)
64
66
65
67
m_fileName = newFileName;
66
68
67
- // Stop the project
68
- if (m_engine)
69
- m_engine->stop ();
70
-
71
- // Reset stage model
72
- m_stage.init (nullptr );
73
-
74
- if (m_stage.renderedTarget ())
75
- m_stage.renderedTarget ()->update ();
76
-
77
- // Delete old sprites
78
- for (SpriteModel *sprite : m_sprites)
79
- sprite->deleteLater ();
80
-
81
- m_sprites.clear ();
82
- emit spritesChanged ();
83
-
84
- // Delete old clones
85
- for (SpriteModel *clone : m_clones)
86
- deleteCloneObject (clone);
87
-
88
- m_clones.clear ();
89
- emit clonesChanged ();
90
-
91
- // Delete old monitors
92
- for (MonitorModel *monitor : m_monitors) {
93
- emit monitorRemoved (monitor);
94
- monitor->deleteLater ();
95
- }
96
-
97
- m_monitors.clear ();
98
- emit monitorsChanged ();
99
-
100
- // Clear the engine
101
- if (m_engine)
102
- m_engine->clear ();
103
-
104
- m_engine = nullptr ;
105
- emit engineChanged ();
69
+ clear ();
106
70
107
71
m_project.setFileName (m_fileName.toStdString ());
108
72
m_loadStatus = false ;
@@ -248,6 +212,49 @@ void ProjectLoader::callLoad(ProjectLoader *loader)
248
212
loader->load ();
249
213
}
250
214
215
+ void ProjectLoader::clear ()
216
+ {
217
+ // Stop the project
218
+ if (m_engine)
219
+ m_engine->stop ();
220
+
221
+ // Reset stage model
222
+ m_stage.init (nullptr );
223
+
224
+ if (m_stage.renderedTarget ())
225
+ m_stage.renderedTarget ()->update ();
226
+
227
+ // Delete old sprites
228
+ for (SpriteModel *sprite : m_sprites)
229
+ sprite->deleteLater ();
230
+
231
+ m_sprites.clear ();
232
+ emit spritesChanged ();
233
+
234
+ // Delete old clones
235
+ for (SpriteModel *clone : m_clones)
236
+ deleteCloneObject (clone);
237
+
238
+ m_clones.clear ();
239
+ emit clonesChanged ();
240
+
241
+ // Delete old monitors
242
+ for (MonitorModel *monitor : m_monitors) {
243
+ emit monitorRemoved (monitor);
244
+ monitor->deleteLater ();
245
+ }
246
+
247
+ m_monitors.clear ();
248
+ emit monitorsChanged ();
249
+
250
+ // Clear the engine
251
+ if (m_engine)
252
+ m_engine->clear ();
253
+
254
+ m_engine = nullptr ;
255
+ emit engineChanged ();
256
+ }
257
+
251
258
void ProjectLoader::load ()
252
259
{
253
260
m_unpositionedMonitors.clear ();
0 commit comments