]> git.tdb.fi Git - r2c2.git/blob - source/engineer/mainpanel.cpp
Add Id tags and copyright notices to files
[r2c2.git] / source / engineer / mainpanel.cpp
1 /* $Id$
2
3 This file is part of the MSP Märklin suite
4 Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
6 */
7
8 #include <msp/gltk/button.h>
9 #include "engineer.h"
10 #include "mainpanel.h"
11
12 using namespace std;
13 using namespace Msp;
14
15 MainPanel::MainPanel(Engineer &e, GLtk::Resources &r):
16         Panel(r),
17         engineer(e)
18 {
19         set_size(200, 100);
20
21         GLtk::Button *btn;
22
23         add(*(btn=new GLtk::Button(res, "Off")));
24         btn->set_geometry(GLtk::Geometry(10, 53, 40, 25));
25         btn->set_style("red");
26         btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::power_off));
27
28         add(*(ind_off=new GLtk::Indicator(res)));
29         ind_off->set_geometry(GLtk::Geometry(10, 78, 40, 12));
30         ind_off->set_style("red");
31
32         add(*(btn=new GLtk::Button(res, "On")));
33         btn->set_geometry(GLtk::Geometry(50, 53, 40, 25));
34         btn->set_style("green");
35         btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::power_on));
36
37         add(*(ind_on=new GLtk::Indicator(res)));
38         ind_on->set_geometry(GLtk::Geometry(50, 78, 40, 12));
39         ind_on->set_style("green");
40
41         add(*(btn=new GLtk::Button(res, "Quit")));
42         btn->set_geometry(GLtk::Geometry(150, 53, 40, 25));
43         btn->set_style("red");
44         btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::quit));
45
46         add(*(btn=new GLtk::Button(res, "+Loc")));
47         btn->set_geometry(GLtk::Geometry(90, 53, 40, 25));
48         btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::new_loc));
49
50         add(*(lbl_status=new GLtk::Label(res)));
51         lbl_status->set_geometry(GLtk::Geometry(10, 10, 180, 24));
52         lbl_status->set_style("digital");
53
54         if(engineer.get_control().get_power())
55                 ind_on->set_active(true);
56         else
57                 ind_off->set_active(true);
58
59         engineer.get_control().signal_power_event.connect(sigc::mem_fun(this, &MainPanel::power_event));
60 }
61
62 void MainPanel::set_status_text(const string &txt)
63 {
64         lbl_status->set_text(txt);
65 }
66
67 void MainPanel::power_on()
68 {
69         engineer.get_control().set_power(true);
70         ind_on->set_active(true);
71         ind_off->set_active(false);
72 }
73
74 void MainPanel::power_off()
75 {
76         engineer.get_control().set_power(false);
77         ind_on->set_active(false);
78         ind_off->set_active(true);
79 }
80
81 void MainPanel::new_loc()
82 {
83         engineer.add_train();
84 }
85
86 void MainPanel::quit()
87 {
88         engineer.quit();
89 }
90
91 void MainPanel::power_event(bool p)
92 {
93         ind_on->set_active(p);
94         ind_off->set_active(!p);
95 }