]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/designer.cpp
Major architecture rework
[r2c2.git] / source / designer / designer.cpp
index 9e99a1d99d4b20c7e91ebf9e6db49bb5d4232db4..b0971c25271be9d65390ff08ca5841614e7c84b6 100644 (file)
@@ -25,6 +25,7 @@ Distributed under the GPL
 #include <msp/strings/utils.h>
 #include <msp/time/units.h>
 #include <msp/time/utils.h>
+#include "libmarklin/route.h"
 #include "libmarklin/tracktype.h"
 #include "designer.h"
 #include "input.h"
@@ -165,7 +166,7 @@ void Designer::new_track()
 void Designer::set_turnout_id()
 {
        Track *track = selection.get_track();
-       if(selection.size()==1 && track->get_type().get_n_paths()>1)
+       if(selection.size()==1 && track->get_type().is_turnout())
        {
                InputDialog *input = new InputDialog(*this, "Turnout ID", lexical_cast(track->get_turnout_id()));
                input->signal_accept.connect(sigc::mem_fun(this, &Designer::turnout_id_accept));
@@ -179,7 +180,7 @@ void Designer::set_sensor_id()
        int id = -1;
        for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
        {
-               if((*i)->get_type().get_n_paths()==1)
+               if(!(*i)->get_type().is_turnout())
                        ok = true;
                if(static_cast<int>((*i)->get_sensor_id())!=id)
                {
@@ -354,9 +355,8 @@ void Designer::button_press(int x, int y, unsigned btn, unsigned mod)
                        Track3D *ctrack = pick_track(x, y);
                        if(ctrack)
                        {
-                               Track *track = ctrack->get_track().copy();
+                               Track *track = new Track(*layout, ctrack->get_track().get_type());
                                track->set_position(ground);
-                               layout->add_track(*track);
 
                                selection.clear();
                                selection.add_track(track);