]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/route.cpp
Don't leave removed tracks in routes
[r2c2.git] / source / libmarklin / route.cpp
index fa2286cc65aef625848101bc7b7c77c9d020d055..364509c8714d4b1aa94fc1340e3f4cbf993181ea 100644 (file)
@@ -5,18 +5,21 @@ Copyright © 2007-2009  Mikkosoft Productions, Mikko Rasa
 Distributed under the GPL
 */
 
+#include "layout.h"
+#include "route.h"
 #include "track.h"
 #include "tracktype.h"
-#include "route.h"
 
 using namespace std;
 using namespace Msp;
 
 namespace Marklin {
 
-Route::Route(const string &n):
+Route::Route(Layout &layout, const string &n):
        name(n)
-{ }
+{
+       layout.signal_track_removed.connect(sigc::mem_fun(this, &Route::track_removed));
+}
 
 int Route::get_turnout(unsigned id) const
 {
@@ -171,6 +174,11 @@ unsigned Route::check_validity(const Track &trk) const
        return result;
 }
 
+void Route::track_removed(Track &t)
+{
+       tracks.erase(&t);
+}
+
 
 Route::Loader::Loader(Route &r):
        DataFile::BasicLoader<Route>(r)