X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Fmainpanel.cpp;h=49750bfc32af7abee5f5a83a78b366fccdfcde7f;hb=dc3b2bce73df40ea885a1960a825e5cd3a33c045;hp=8c3718b9176fa025bcda7087633cf8357a10522e;hpb=e375f8bf215058398795be1010ffec89d0150114;p=r2c2.git diff --git a/source/engineer/mainpanel.cpp b/source/engineer/mainpanel.cpp index 8c3718b..49750bf 100644 --- a/source/engineer/mainpanel.cpp +++ b/source/engineer/mainpanel.cpp @@ -1,11 +1,12 @@ /* $Id$ This file is part of the MSP Märklin suite -Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa +Copyright © 2006-2010 Mikkosoft Productions, Mikko Rasa Distributed under the GPL */ #include +#include "libmarklin/driver.h" #include "engineer.h" #include "mainpanel.h" #include "trainproperties.h" @@ -18,47 +19,56 @@ MainPanel::MainPanel(Engineer &e, GLtk::Resources &r): Panel(r), engineer(e) { - set_size(200, 100); + set_size(200, 133); GLtk::Button *btn; add(*(btn=new GLtk::Button(res, "Off"))); - btn->set_geometry(GLtk::Geometry(10, 53, 40, 25)); + btn->set_geometry(GLtk::Geometry(10, 86, 40, 25)); btn->set_style("red"); btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::power_off)); add(*(ind_off=new GLtk::Indicator(res))); - ind_off->set_geometry(GLtk::Geometry(10, 78, 40, 12)); + ind_off->set_geometry(GLtk::Geometry(10, 111, 40, 12)); ind_off->set_style("red"); add(*(btn=new GLtk::Button(res, "On"))); - btn->set_geometry(GLtk::Geometry(50, 53, 40, 25)); + btn->set_geometry(GLtk::Geometry(50, 86, 40, 25)); btn->set_style("green"); btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::power_on)); add(*(ind_on=new GLtk::Indicator(res))); - ind_on->set_geometry(GLtk::Geometry(50, 78, 40, 12)); + ind_on->set_geometry(GLtk::Geometry(50, 111, 40, 12)); ind_on->set_style("green"); add(*(btn=new GLtk::Button(res, "Quit"))); - btn->set_geometry(GLtk::Geometry(150, 53, 40, 25)); + btn->set_geometry(GLtk::Geometry(150, 86, 40, 25)); btn->set_style("red"); btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::quit)); add(*(btn=new GLtk::Button(res, "+Loc"))); - btn->set_geometry(GLtk::Geometry(90, 53, 40, 25)); + btn->set_geometry(GLtk::Geometry(90, 86, 40, 25)); btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::new_loc)); + add(*(ind_halt=new GLtk::Indicator(res))); + ind_halt->set_geometry(GLtk::Geometry(10, 69, 40, 12)); + + add(*(btn=new GLtk::Button(res, "Halt"))); + btn->set_geometry(GLtk::Geometry(10, 44, 40, 25)); + btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::toggle_halt)); + add(*(lbl_status=new GLtk::Label(res))); lbl_status->set_geometry(GLtk::Geometry(10, 10, 180, 24)); lbl_status->set_style("digital"); - if(engineer.get_control().get_power()) + Marklin::Driver &driver = engineer.get_layout().get_driver(); + if(driver.get_power()) ind_on->set_active(true); else ind_off->set_active(true); - engineer.get_control().signal_power_event.connect(sigc::mem_fun(this, &MainPanel::power_event)); + driver.signal_power.connect(sigc::mem_fun(this, &MainPanel::power_event)); + driver.signal_halt.connect(sigc::mem_fun(this, &MainPanel::halt_event)); } void MainPanel::set_status_text(const string &txt) @@ -68,16 +78,18 @@ void MainPanel::set_status_text(const string &txt) void MainPanel::power_on() { - engineer.get_control().set_power(true); - ind_on->set_active(true); - ind_off->set_active(false); + engineer.get_layout().get_driver().set_power(true); } void MainPanel::power_off() { - engineer.get_control().set_power(false); - ind_on->set_active(false); - ind_off->set_active(true); + engineer.get_layout().get_driver().set_power(false); +} + +void MainPanel::toggle_halt() +{ + Marklin::Driver &driver = engineer.get_layout().get_driver(); + driver.halt(!driver.is_halted()); } void MainPanel::new_loc() @@ -98,3 +110,8 @@ void MainPanel::power_event(bool p) ind_on->set_active(p); ind_off->set_active(!p); } + +void MainPanel::halt_event(bool h) +{ + ind_halt->set_active(h); +}