--- /dev/null
+#ifndef DEMOSELECTOR_H_
+#define DEMOSELECTOR_H_
+
+#include <msp/gltk/list.h>
+#include <msp/gltk/panel.h>
+
+class DemoSelector: public Msp::GLtk::Panel
+{
+private:
+ struct Demo
+ {
+ std::string title;
+ Msp::GLtk::Panel *panel;
+ };
+
+ Msp::GLtk::List list;
+ Msp::GLtk::FunctionListData<Demo> demos;
+ const Demo *current_demo;
+
+public:
+ DemoSelector();
+
+ void add_demo(const std::string &, Msp::GLtk::Panel *);
+private:
+ void item_selected(unsigned);
+
+ static std::string get_demo_title(const Demo &);
+};
+
+#endif