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