X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Ftrainview.cpp;h=f282b4e07487c6ad24f479bc02a8de7fb39b0ff5;hb=1ff06c5bc46a677fa389ef86c6b26664368f1653;hp=b27136c59a7e9d6887b0e278f5ac83445e4b8935;hpb=fcaa883538f98bac71ba1a90f98950bb2aa08d88;p=r2c2.git diff --git a/source/engineer/trainview.cpp b/source/engineer/trainview.cpp index b27136c..f282b4e 100644 --- a/source/engineer/trainview.cpp +++ b/source/engineer/trainview.cpp @@ -1,6 +1,6 @@ /* $Id$ -This file is part of the MSP Märklin suite +This file is part of R²C² Copyright © 2010 Mikkosoft Productions, Mikko Rasa Distributed under the GPL */ @@ -8,20 +8,19 @@ Distributed under the GPL #include #include #include -#include "libmarklin/vehicle.h" -#include "libmarklin/vehicletype.h" +#include "libr2c2/vehicle.h" +#include "libr2c2/vehicletype.h" #include "engineer.h" #include "trainview.h" using namespace Msp; -using namespace Marklin; +using namespace R2C2; TrainView::TrainView(Engineer &e, const Train &t): - GLtk::Widget(e.get_ui_resources()), - GLtk::Panel(e.get_ui_resources()), engineer(e), train(t), mode(SIDE), + forward(true), pipeline(280, 280, false), stale(false) { @@ -46,24 +45,29 @@ TrainView::TrainView(Engineer &e, const Train &t): pass->lighting = &engineer.get_lighting(); GLtk::Image *image; - add(*(image = new GLtk::Image(res, &tex))); + add(*(image = new GLtk::Image(&tex))); image->set_geometry(GLtk::Geometry(10, 40, geom.w-20, geom.h-50)); GLtk::Button *btn; - add(*(btn = new GLtk::Button(res, "Roof"))); + add(*(btn = new GLtk::Button("Roof"))); btn->set_geometry(GLtk::Geometry(10, 10, 36, 25)); btn->signal_clicked.connect(sigc::bind(sigc::mem_fun(this, &TrainView::set_mode), ROOF)); - add(*(btn = new GLtk::Button(res, "Side"))); + add(*(btn = new GLtk::Button("Side"))); btn->set_geometry(GLtk::Geometry(46, 10, 36, 25)); btn->signal_clicked.connect(sigc::bind(sigc::mem_fun(this, &TrainView::set_mode), SIDE)); - add(*(btn = new GLtk::Button(res, "Head"))); + add(*(btn = new GLtk::Button("Head"))); btn->set_geometry(GLtk::Geometry(82, 10, 36, 25)); btn->signal_clicked.connect(sigc::bind(sigc::mem_fun(this, &TrainView::set_mode), HEAD)); - add(*(btn = new GLtk::Button(res, "Close"))); + add(*(tgl_forward = new GLtk::Toggle("Fwd"))); + tgl_forward->set_geometry(GLtk::Geometry(118, 8, 36, 27)); + tgl_forward->set_value(true); + tgl_forward->signal_toggled.connect(sigc::mem_fun(this, &TrainView::set_forward)); + + add(*(btn = new GLtk::Button("Close"))); btn->set_geometry(GLtk::Geometry(geom.w-46, 10, 36, 25)); btn->signal_clicked.connect(sigc::mem_fun(this, &TrainView::close_clicked)); @@ -80,11 +84,18 @@ void TrainView::set_mode(Mode m) mode = m; } +void TrainView::set_forward(bool f) +{ + forward = f; +} + void TrainView::prepare() { const Vehicle &veh = train.get_vehicle(0); const Point &pos = veh.get_position(); float angle = veh.get_direction(); + if(!forward) + angle += M_PI; float c = cos(angle); float s = sin(angle); float l = veh.get_type().get_length();