3 This file is part of the MSP Märklin suite
4 Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
8 #include <msp/gltk/button.h>
10 #include "mainpanel.h"
11 #include "trainproperties.h"
16 MainPanel::MainPanel(Engineer &e, GLtk::Resources &r):
25 add(*(btn=new GLtk::Button(res, "Off")));
26 btn->set_geometry(GLtk::Geometry(10, 53, 40, 25));
27 btn->set_style("red");
28 btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::power_off));
30 add(*(ind_off=new GLtk::Indicator(res)));
31 ind_off->set_geometry(GLtk::Geometry(10, 78, 40, 12));
32 ind_off->set_style("red");
34 add(*(btn=new GLtk::Button(res, "On")));
35 btn->set_geometry(GLtk::Geometry(50, 53, 40, 25));
36 btn->set_style("green");
37 btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::power_on));
39 add(*(ind_on=new GLtk::Indicator(res)));
40 ind_on->set_geometry(GLtk::Geometry(50, 78, 40, 12));
41 ind_on->set_style("green");
43 add(*(btn=new GLtk::Button(res, "Quit")));
44 btn->set_geometry(GLtk::Geometry(150, 53, 40, 25));
45 btn->set_style("red");
46 btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::quit));
48 add(*(btn=new GLtk::Button(res, "+Loc")));
49 btn->set_geometry(GLtk::Geometry(90, 53, 40, 25));
50 btn->signal_clicked.connect(sigc::mem_fun(this, &MainPanel::new_loc));
52 add(*(lbl_status=new GLtk::Label(res)));
53 lbl_status->set_geometry(GLtk::Geometry(10, 10, 180, 24));
54 lbl_status->set_style("digital");
56 if(engineer.get_control().get_power())
57 ind_on->set_active(true);
59 ind_off->set_active(true);
61 engineer.get_control().signal_power_event.connect(sigc::mem_fun(this, &MainPanel::power_event));
64 void MainPanel::set_status_text(const string &txt)
66 lbl_status->set_text(txt);
69 void MainPanel::power_on()
71 engineer.get_control().set_power(true);
72 ind_on->set_active(true);
73 ind_off->set_active(false);
76 void MainPanel::power_off()
78 engineer.get_control().set_power(false);
79 ind_on->set_active(false);
80 ind_off->set_active(true);
83 void MainPanel::new_loc()
85 TrainProperties *dialog = new TrainProperties(engineer, res, 0);
86 engineer.get_root().add(*dialog);
87 dialog->set_position(geom.x+geom.w, geom.y+geom.h-dialog->get_geometry().h);
88 dialog->set_visible(true);
91 void MainPanel::quit()
96 void MainPanel::power_event(bool p)
98 ind_on->set_active(p);
99 ind_off->set_active(!p);