const Option& o = it.second;
os << "\noption name " << it.first << " type " << o.type;
- if (o.type != "button")
+ if (o.type == "string" || o.type == "check" || o.type == "combo")
os << " default " << o.defaultValue;
if (o.type == "spin")
- os << " min " << o.min << " max " << o.max;
+ os << " default " << int(stof(o.defaultValue))
+ << " min " << o.min
+ << " max " << o.max;
break;
}
Option::Option(OnChange f) : type("button"), min(0), max(0), on_change(f)
{}
-Option::Option(int v, int minv, int maxv, OnChange f) : type("spin"), min(minv), max(maxv), on_change(f)
+Option::Option(double v, int minv, int maxv, OnChange f) : type("spin"), min(minv), max(maxv), on_change(f)
{ defaultValue = currentValue = std::to_string(v); }
Option::Option(const char* v, const char* cur, OnChange f) : type("combo"), min(0), max(0), on_change(f)
{ defaultValue = v; currentValue = cur; }
-Option::operator int() const {
+Option::operator double() const {
assert(type == "check" || type == "spin");
- return (type == "spin" ? stoi(currentValue) : currentValue == "true");
+ return (type == "spin" ? stof(currentValue) : currentValue == "true");
}
Option::operator std::string() const {
if ( (type != "button" && v.empty())
|| (type == "check" && v != "true" && v != "false")
- || (type == "spin" && (stoi(v) < min || stoi(v) > max)))
+ || (type == "spin" && (stof(v) < min || stof(v) > max)))
return *this;
if (type != "button")