--- /dev/null
+#ifndef TRAINDIALOG_H_
+#define TRAINDIALOG_H_
+
+#include <msp/gltk/button.h>
+#include <msp/gltk/dialog.h>
+#include <msp/gltk/hslider.h>
+#include <msp/gltk/label.h>
+#include <msp/gltk/toggle.h>
+#include "libr2c2/train.h"
+
+class Engineer;
+
+class TrainDialog: public Msp::GLtk::Dialog, public sigc::trackable
+{
+private:
+ Engineer &engineer;
+ R2C2::Train &train;
+ Msp::GLtk::Label *lbl_title;
+ Msp::GLtk::Button *btn_expand;
+ Msp::GLtk::Label *lbl_speed;
+ Msp::GLtk::Slider *sld_speed;
+ Msp::GLtk::Toggle *tgl_forward;
+ Msp::GLtk::Label *lbl_status;
+ Msp::GLtk::Panel *pnl_expander;
+ std::list<Msp::GLtk::Panel *> panels;
+ bool updating;
+
+public:
+ TrainDialog(Engineer &, R2C2::Train &);
+
+private:
+ void ai_event(R2C2::TrainAI &, const R2C2::TrainAI::Message &);
+ void update_speed_display(float);
+ void ui_speed_changed(double);
+ void update_forward(bool);
+ void ui_forward_toggled(bool);
+ void expand_clicked();
+ void toggle_panel(bool, Msp::GLtk::Panel *);
+};
+
+#endif