]> git.tdb.fi Git - r2c2.git/blob - source/engineer/traindialog.h
Some refactoring in preparation for UI persistence
[r2c2.git] / source / engineer / traindialog.h
1 #ifndef TRAINDIALOG_H_
2 #define TRAINDIALOG_H_
3
4 #include <msp/gltk/button.h>
5 #include <msp/gltk/dialog.h>
6 #include <msp/gltk/hslider.h>
7 #include <msp/gltk/label.h>
8 #include <msp/gltk/toggle.h>
9 #include "libr2c2/train.h"
10
11 class Engineer;
12
13 class TrainDialog: public Msp::GLtk::Dialog, public sigc::trackable
14 {
15 private:
16         Engineer &engineer;
17         R2C2::Train &train;
18         Msp::GLtk::Label *lbl_title;
19         Msp::GLtk::Button *btn_expand;
20         Msp::GLtk::Label *lbl_speed;
21         Msp::GLtk::Slider *sld_speed;
22         Msp::GLtk::Toggle *tgl_forward;
23         Msp::GLtk::Label *lbl_status;
24         Msp::GLtk::Panel *pnl_expander;
25         std::list<Msp::GLtk::Panel *> panels;
26         bool updating;
27
28 public:
29         TrainDialog(Engineer &, R2C2::Train &);
30
31 private:
32         virtual void autosize_special(const Msp::GLtk::Part &, Msp::GLtk::Geometry &) const;
33
34         void ai_event(R2C2::TrainAI &, const R2C2::TrainAI::Message &);
35         void update_speed_display(float);
36         void ui_speed_changed(double);
37         void update_forward(bool);
38         void ui_forward_toggled(bool);
39         void expand_clicked();
40         void set_expanded(bool);
41         void toggle_panel(bool, Msp::GLtk::Panel *);
42 };
43
44 #endif