]> git.tdb.fi Git - r2c2.git/blob - source/engineer/mainpanel.cpp
Convert engineer to use mspgbase instead of SDL
[r2c2.git] / source / engineer / mainpanel.cpp
1 #include <msp/gltk/button.h>
2 #include "engineer.h"
3 #include "mainpanel.h"
4
5 using namespace std;
6 using namespace Msp;
7
8 MainPanel::MainPanel(Engineer &e, GLtk::Resources &r):
9         Panel(r),
10         engineer(e)
11 {
12         set_size(200, 100);
13
14         GLtk::Button *btn;
15
16         add(*(btn=new GLtk::Button(res, "Off")));
17         btn->set_geometry(GLtk::Geometry(10, 53, 40, 25));
18         btn->set_style("red");
19         btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::power_off));
20
21         add(*(ind_off=new GLtk::Indicator(res)));
22         ind_off->set_geometry(GLtk::Geometry(10, 78, 40, 12));
23         ind_off->set_style("red");
24
25         add(*(btn=new GLtk::Button(res, "On")));
26         btn->set_geometry(GLtk::Geometry(50, 53, 40, 25));
27         btn->set_style("green");
28         btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::power_on));
29
30         add(*(ind_on=new GLtk::Indicator(res)));
31         ind_on->set_geometry(GLtk::Geometry(50, 78, 40, 12));
32         ind_on->set_style("green");
33
34         add(*(btn=new GLtk::Button(res, "Quit")));
35         btn->set_geometry(GLtk::Geometry(150, 53, 40, 25));
36         btn->set_style("red");
37         btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::quit));
38
39         add(*(btn=new GLtk::Button(res, "+Loc")));
40         btn->set_geometry(GLtk::Geometry(90, 53, 40, 25));
41         btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::new_loc));
42
43         add(*(lbl_status=new GLtk::Label(res)));
44         lbl_status->set_geometry(GLtk::Geometry(10, 10, 180, 24));
45         lbl_status->set_style("digital");
46
47         if(engineer.get_control().get_power())
48                 ind_on->set_active(true);
49         else
50                 ind_off->set_active(true);
51 }
52
53 void MainPanel::set_status_text(const string &txt)
54 {
55         lbl_status->set_text(txt);
56 }
57
58 void MainPanel::power_on()
59 {
60         engineer.get_control().set_power(true);
61         ind_on->set_active(true);
62         ind_off->set_active(false);
63 }
64
65 void MainPanel::power_off()
66 {
67         engineer.get_control().set_power(false);
68         ind_on->set_active(false);
69         ind_off->set_active(true);
70 }
71
72 void MainPanel::new_loc()
73 {
74         engineer.add_train(0);
75 }
76
77 void MainPanel::quit()
78 {
79         engineer.quit();
80 }