]> git.tdb.fi Git - r2c2.git/blob - source/remote/statusbar.cpp
Add a new remote control program with GLtk-based UI
[r2c2.git] / source / remote / statusbar.cpp
1 #include <msp/core/maputils.h>
2 #include <msp/gltk/button.h>
3 #include "statusbar.h"
4
5 using namespace std;
6 using namespace Msp;
7 using namespace R2C2;
8
9 StatusBar::StatusBar(Client &c):
10         client(c)
11 {
12         Loader::WidgetMap widgets;
13         DataFile::load(*this, "data/remote/statusbar.ui", widgets);
14
15         Msp::GLtk::Button *btn = dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_power_on"));
16         btn->signal_clicked.connect(sigc::bind(sigc::mem_fun(&client, &Client::set_power), true));
17         btn = dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_power_off"));
18         btn->signal_clicked.connect(sigc::bind(sigc::mem_fun(&client, &Client::set_power), false));
19         btn = dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_halt"));
20         btn->signal_clicked.connect(sigc::mem_fun(this, &StatusBar::ui_halt_clicked));
21
22         ind_power_on = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_power_on"));
23         ind_power_off = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_power_off"));
24         ind_halt = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_halt"));
25
26         lbl_status = dynamic_cast<GLtk::Label *>(get_item(widgets, "lbl_status"));
27
28         client.signal_power_changed.connect(sigc::mem_fun(this, &StatusBar::power_changed));
29         client.signal_halt_changed.connect(sigc::mem_fun(this, &StatusBar::halt_changed));
30         client.signal_emergency.connect(sigc::mem_fun(this, &StatusBar::emergency));
31 }
32
33 void StatusBar::ui_halt_clicked()
34 {
35         //client.set_halt(!client.get_halt());
36 }
37
38 void StatusBar::power_changed(bool p)
39 {
40         ind_power_on->set_active(p);
41         ind_power_off->set_active(!p);
42 }
43
44 void StatusBar::halt_changed(bool h)
45 {
46         ind_halt->set_active(h);
47 }
48
49 void StatusBar::emergency(const string &e)
50 {
51         lbl_status->set_text(e);
52 }