X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Ftrainview.cpp;h=ad534acee085872161d030ae6742fc909029a330;hb=b261812f040caed52bc3de783e8bcb86b222a9ed;hp=dffa04dde651be1768bda8b6ee20ed9cf4840ab6;hpb=fcc044d4eb24820af9acf1431042e4c422366915;p=r2c2.git diff --git a/source/engineer/trainview.cpp b/source/engineer/trainview.cpp index dffa04d..ad534ac 100644 --- a/source/engineer/trainview.cpp +++ b/source/engineer/trainview.cpp @@ -1,6 +1,9 @@ +#include #include #include #include +#include +#include #include "libr2c2/vehicle.h" #include "libr2c2/vehicletype.h" #include "engineer.h" @@ -14,16 +17,22 @@ TrainView::TrainView(Engineer &e, const Train &t): train(t), mode(SIDE), forward(true), - pipeline(280, 280, false), - stale(false) + pipeline(400, 300, false) { - set_size(300, 330); + Loader::WidgetMap widgets; + DataFile::load(*this, "data/trainview.ui", widgets); + + dynamic_cast(get_item(widgets, "lbl_title"))->set_text(format("View of %s", train.get_name())); + dynamic_cast(get_item(widgets, "tgl_forward"))->signal_toggled.connect(sigc::mem_fun(this, &TrainView::set_forward)); + dynamic_cast(get_item(widgets, "tgl_roof"))->signal_toggled.connect(sigc::bind(sigc::mem_fun(this, &TrainView::ui_mode_toggled), ROOF)); + dynamic_cast(get_item(widgets, "tgl_side"))->signal_toggled.connect(sigc::bind(sigc::mem_fun(this, &TrainView::ui_mode_toggled), SIDE)); + dynamic_cast(get_item(widgets, "tgl_head"))->signal_toggled.connect(sigc::bind(sigc::mem_fun(this, &TrainView::ui_mode_toggled), HEAD)); tex.set_min_filter(GL::LINEAR); - tex.storage(GL::RGB, 280, 280); + tex.storage(GL::RGB, 400, 300); tex.image(0, GL::RGB, GL::UNSIGNED_BYTE, 0); fbo.attach(GL::COLOR_ATTACHMENT0, tex, 0); - depth.storage(GL::DEPTH_COMPONENT, 280, 280); + depth.storage(GL::DEPTH_COMPONENT, 400, 300); fbo.attach(GL::DEPTH_ATTACHMENT, depth); camera.set_up_direction(GL::Vector3(0, 0, 1)); @@ -37,32 +46,7 @@ TrainView::TrainView(Engineer &e, const Train &t): pass->set_depth_test(&GL::DepthTest::lequal()); pass->set_lighting(&engineer.get_lighting()); - GLtk::Image *image; - 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("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("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("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(*(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)); + dynamic_cast(get_item(widgets, "img_view"))->set_image(&tex); engineer.add_train_view(*this); } @@ -77,6 +61,12 @@ void TrainView::set_mode(Mode m) mode = m; } +void TrainView::ui_mode_toggled(bool v, Mode m) +{ + if(v) + set_mode(m); +} + void TrainView::set_forward(bool f) { forward = f; @@ -113,15 +103,3 @@ void TrainView::prepare() fbo.clear(GL::COLOR_BUFFER_BIT|GL::DEPTH_BUFFER_BIT); pipeline.render(); } - -void TrainView::button_release(int x, int y, unsigned btn) -{ - GLtk::Panel::button_release(x, y, btn); - if(stale) - delete this; -} - -void TrainView::close_clicked() -{ - stale = true; -}