]> git.tdb.fi Git - r2c2.git/blobdiff - source/remote/trainpanel.h
Add a new remote control program with GLtk-based UI
[r2c2.git] / source / remote / trainpanel.h
diff --git a/source/remote/trainpanel.h b/source/remote/trainpanel.h
new file mode 100644 (file)
index 0000000..02b0b06
--- /dev/null
@@ -0,0 +1,34 @@
+#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