--- /dev/null
+#ifndef TRAINPANEL_H_
+#define TRAINPANEL_H_
+
+#include <msp/gltk/indicator.h>
+#include <msp/gltk/panel.h>
+#include <msp/gltk/slider.h>
+#include <msp/gltk/toggle.h>
+#include "network/train.h"
+
+class TrainPanel: public Msp::GLtk::Panel, public sigc::trackable
+{
+private:
+ R2C2::NetTrain &train;
+ Msp::GLtk::Indicator *ind_forward;
+ Msp::GLtk::Indicator *ind_reverse;
+ Msp::GLtk::Slider *sld_speed;
+ Msp::GLtk::Label *lbl_speed;
+ Msp::GLtk::Label *lbl_status;
+ std::map<unsigned, Msp::GLtk::Toggle *> tgl_functions;
+ bool updating;
+
+public:
+ TrainPanel(R2C2::NetTrain &);
+
+private:
+ void update_reverse(bool);
+ void update_speed(float);
+ void ui_speed_changed(float);
+ void function_changed(unsigned, bool);
+ void ui_function_toggled(bool, unsigned);
+ void status_changed(const std::string &);
+};
+
+#endif