]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/trainproperties.cpp
Major code refactoring:
[r2c2.git] / source / engineer / trainproperties.cpp
index 1aebea029eb2506e070e87c650f5d0f345422f27..9b46ce41af96c6551d0bf59f29aa69278adf08c7 100644 (file)
@@ -1,26 +1,45 @@
 #include <msp/gltk/button.h>
+#include <msp/strings/lexicalcast.h>
+#include "engineer.h"
 #include "trainproperties.h"
 
 using namespace Msp;
 using namespace Marklin;
 
-TrainProperties::TrainProperties(GLtk::Resources &r, Train &t):
+TrainProperties::TrainProperties(Engineer &e, GLtk::Resources &r, Train *t):
        Panel(r),
+       engineer(e),
        train(t)
 {
        set_size(200, 75);
 
-       add(*(ent_name=new GLtk::Entry(res, train.get_name())));
-       ent_name->set_geometry(GLtk::Geometry(5, geom.h-25, geom.w-10, 20));
+       add(*(ent_addr=new GLtk::Entry(res)));
+       ent_addr->set_geometry(GLtk::Geometry(10, geom.h-25, 40, 20));
 
-       add(*(ent_name=new GLtk::Entry(res, train.get_name())));
-       ent_name->set_geometry(GLtk::Geometry(5, geom.h-50, geom.w-10, 20));
+       add(*(ent_name=new GLtk::Entry(res, "Train")));
+       ent_name->set_geometry(GLtk::Geometry(10, geom.h-50, geom.w-20, 20));
 
        GLtk::Button *btn;
 
        add(*(btn=new GLtk::Button(res, "OK")));
-       btn->set_geometry(GLtk::Geometry(geom.w-45, 5, 40, 25));
+       btn->set_style("green");
+       btn->set_geometry(GLtk::Geometry(geom.w-40, 10, 30, 25));
+       btn->signal_clicked.connect(sigc::mem_fun(this, &TrainProperties::ok_clicked));
 
        add(*(btn=new GLtk::Button(res, "Cncl")));
-       btn->set_geometry(GLtk::Geometry(geom.w-90, 5, 40, 25));
+       btn->set_style("red");
+       btn->set_geometry(GLtk::Geometry(geom.w-80, 10, 30, 25));
+}
+
+void TrainProperties::ok_clicked()
+{
+       if(train)
+       {
+       }
+       else
+       {
+               train=engineer.add_train(lexical_cast<unsigned>(ent_addr->get_text()));
+               train->set_name(ent_name->get_text());
+       }
+       signal_ok.emit();
 }