#include <msp/gltk/button.h>
+#include <msp/strings/format.h>
+#include "libr2c2/clock.h"
#include "libr2c2/driver.h"
+#include "clockdialog.h"
#include "engineer.h"
#include "mainwindow.h"
+#include "telemetrydialog.h"
#include "trainlistdialog.h"
using namespace std;
ind_off = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_off"));
ind_halt = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_halt"));
lbl_status = dynamic_cast<GLtk::Label *>(get_item(widgets, "lbl_status"));
+ lbl_clock = dynamic_cast<GLtk::Label *>(get_item(widgets, "lbl_clock"));
dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_on"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::on_clicked));
dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_off"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::off_clicked));
dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_halt"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::halt_clicked));
dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_trains"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::trains_clicked));
+ dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_telemetry"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::telemetry_clicked));
dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_quit"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::quit_clicked));
+ dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_clock"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::clock_clicked));
R2C2::Driver &driver = engineer.get_layout().get_driver();
if(driver.get_power())
driver.signal_power.connect(sigc::mem_fun(this, &MainWindow::power_event));
driver.signal_halt.connect(sigc::mem_fun(this, &MainWindow::halt_event));
+
+ engineer.get_layout().get_clock().signal_minute.connect(sigc::mem_fun(this, &MainWindow::clock_minute));
}
void MainWindow::set_status_text(const string &txt)
{
TrainListDialog *dlg = new TrainListDialog(engineer);
find_ancestor<GLtk::Root>()->add(*dlg);
- dlg->autosize();
+}
+
+void MainWindow::telemetry_clicked()
+{
+ TelemetryDialog *dlg = new TelemetryDialog(engineer);
+ find_ancestor<GLtk::Root>()->add(*dlg);
}
void MainWindow::quit_clicked()
engineer.quit();
}
+void MainWindow::clock_clicked()
+{
+ ClockDialog *dlg = new ClockDialog(engineer);
+ find_ancestor<GLtk::Root>()->add(*dlg);
+}
+
void MainWindow::power_event(bool p)
{
ind_on->set_active(p);
{
ind_halt->set_active(h);
}
+
+void MainWindow::clock_minute()
+{
+ const Time::TimeDelta &time = engineer.get_layout().get_clock().get_current_time();
+ unsigned minute = time/Time::min;
+ unsigned hour = minute/60;
+ minute %= 60;
+ lbl_clock->set_text(format("%02d:%02d", hour, minute));
+}