]> git.tdb.fi Git - r2c2.git/blob - source/engineer/timetablepanel.h
New timetable system, which works like an actual timetable
[r2c2.git] / source / engineer / timetablepanel.h
1 #ifndef TIMETABLEPANEL_H_
2 #define TIMETABLEPANEL_H_
3
4 #include <msp/gltk/dropdown.h>
5 #include <msp/gltk/entry.h>
6 #include <msp/gltk/label.h>
7 #include <msp/gltk/list.h>
8 #include <msp/gltk/panel.h>
9 #include "libr2c2/timetable.h"
10 #include "libr2c2/train.h"
11 #include "3d/trackchain.h"
12
13 class Engineer;
14
15 class TimetablePanel: public Msp::GLtk::Panel, public sigc::trackable
16 {
17 private:
18         Engineer &engineer;
19         R2C2::Train &train;
20         R2C2::Timetable *timetable;
21         Msp::GLtk::List *lst_timetable;
22         Msp::GLtk::Dropdown *drp_type;
23         R2C2::Zone *zone;
24         Msp::GLtk::Label *lbl_zone;
25         Msp::GLtk::Entry *ent_time;
26         Msp::GLtk::BasicListData<const R2C2::Timetable::Row *> rows;
27
28         bool zone_pick;
29         R2C2::Zone *picked_zone;
30         R2C2::TrackChain3D *pick_highlight;
31
32 public:
33         TimetablePanel(Engineer &, R2C2::Train &);
34
35 private:
36         void row_added(unsigned, const R2C2::Timetable::Row &);
37         void row_modified(unsigned, const R2C2::Timetable::Row &);
38         void row_removed(unsigned);
39         R2C2::Timetable::Row create_row();
40
41         void row_selected(unsigned);
42         void pick_clicked();
43         void insert_clicked();
44         void delete_clicked();
45         void apply_clicked();
46
47         virtual void button_press(int, int, unsigned);
48         virtual void pointer_motion(int, int);
49 };
50
51 #endif