]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/timetablepanel.h
New timetable system, which works like an actual timetable
[r2c2.git] / source / engineer / timetablepanel.h
diff --git a/source/engineer/timetablepanel.h b/source/engineer/timetablepanel.h
new file mode 100644 (file)
index 0000000..a0f5be8
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef TIMETABLEPANEL_H_
+#define TIMETABLEPANEL_H_
+
+#include <msp/gltk/dropdown.h>
+#include <msp/gltk/entry.h>
+#include <msp/gltk/label.h>
+#include <msp/gltk/list.h>
+#include <msp/gltk/panel.h>
+#include "libr2c2/timetable.h"
+#include "libr2c2/train.h"
+#include "3d/trackchain.h"
+
+class Engineer;
+
+class TimetablePanel: public Msp::GLtk::Panel, public sigc::trackable
+{
+private:
+       Engineer &engineer;
+       R2C2::Train &train;
+       R2C2::Timetable *timetable;
+       Msp::GLtk::List *lst_timetable;
+       Msp::GLtk::Dropdown *drp_type;
+       R2C2::Zone *zone;
+       Msp::GLtk::Label *lbl_zone;
+       Msp::GLtk::Entry *ent_time;
+       Msp::GLtk::BasicListData<const R2C2::Timetable::Row *> rows;
+
+       bool zone_pick;
+       R2C2::Zone *picked_zone;
+       R2C2::TrackChain3D *pick_highlight;
+
+public:
+       TimetablePanel(Engineer &, R2C2::Train &);
+
+private:
+       void row_added(unsigned, const R2C2::Timetable::Row &);
+       void row_modified(unsigned, const R2C2::Timetable::Row &);
+       void row_removed(unsigned);
+       R2C2::Timetable::Row create_row();
+
+       void row_selected(unsigned);
+       void pick_clicked();
+       void insert_clicked();
+       void delete_clicked();
+       void apply_clicked();
+
+       virtual void button_press(int, int, unsigned);
+       virtual void pointer_motion(int, int);
+};
+
+#endif