1 #include <msp/gltk/button.h>
2 #include "libr2c2/driver.h"
4 #include "mainwindow.h"
5 #include "trainlistdialog.h"
10 MainWindow::MainWindow(Engineer &e):
13 Loader::WidgetMap widgets;
14 DataFile::load(*this, "data/mainwindow.ui", widgets);
16 ind_on = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_on"));
17 ind_off = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_off"));
18 ind_halt = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_halt"));
19 lbl_status = dynamic_cast<GLtk::Label *>(get_item(widgets, "lbl_status"));
21 dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_on"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::on_clicked));
22 dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_off"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::off_clicked));
23 dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_halt"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::halt_clicked));
24 dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_trains"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::trains_clicked));
25 dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_quit"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::quit_clicked));
27 R2C2::Driver &driver = engineer.get_layout().get_driver();
28 if(driver.get_power())
29 ind_on->set_active(true);
31 ind_off->set_active(true);
33 driver.signal_power.connect(sigc::mem_fun(this, &MainWindow::power_event));
34 driver.signal_halt.connect(sigc::mem_fun(this, &MainWindow::halt_event));
37 void MainWindow::set_status_text(const string &txt)
39 lbl_status->set_text(txt);
42 void MainWindow::on_clicked()
44 engineer.get_layout().get_driver().set_power(true);
47 void MainWindow::off_clicked()
49 engineer.get_layout().get_driver().set_power(false);
52 void MainWindow::halt_clicked()
54 R2C2::Driver &driver = engineer.get_layout().get_driver();
55 driver.halt(!driver.is_halted());
58 void MainWindow::trains_clicked()
60 TrainListDialog *dlg = new TrainListDialog(engineer);
61 find_ancestor<GLtk::Root>()->add(*dlg);
64 void MainWindow::quit_clicked()
69 void MainWindow::power_event(bool p)
71 ind_on->set_active(p);
72 ind_off->set_active(!p);
75 void MainWindow::halt_event(bool h)
77 ind_halt->set_active(h);