+ struct Control
+ {
+ enum Type
+ {
+ BINARY,
+ DISCRETE,
+ CONTINUOUS
+ };
+
+ std::string name;
+ Type type;
+ float min_value;
+ float max_value;
+ float step;
+ float value;
+
+ private:
+ Control() { }
+
+ public:
+ void set(float);
+
+ static Control binary(const std::string &);
+ static Control discrete(const std::string &, float, float, float);
+ static Control continuous(const std::string &, float, float);
+ };
+
+ sigc::signal<void, const Control &> signal_control_changed;