3 This file is part of the MSP Märklin suite
4 Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
8 #include <msp/gltk/button.h>
10 #include "mainpanel.h"
15 MainPanel::MainPanel(Engineer &e, GLtk::Resources &r):
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));
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");
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));
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");
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));
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));
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");
54 if(engineer.get_control().get_power())
55 ind_on->set_active(true);
57 ind_off->set_active(true);
59 engineer.get_control().signal_power_event.connect(sigc::mem_fun(this, &MainPanel::power_event));
62 void MainPanel::set_status_text(const string &txt)
64 lbl_status->set_text(txt);
67 void MainPanel::power_on()
69 engineer.get_control().set_power(true);
70 ind_on->set_active(true);
71 ind_off->set_active(false);
74 void MainPanel::power_off()
76 engineer.get_control().set_power(false);
77 ind_on->set_active(false);
78 ind_off->set_active(true);
81 void MainPanel::new_loc()
86 void MainPanel::quit()
91 void MainPanel::power_event(bool p)
93 ind_on->set_active(p);
94 ind_off->set_active(!p);