Здравствуйте, night beast, Вы писали:
NB>в целом понятно.
NB>выбор цифр в качестве имени несколько сбивает с току.
Да, язык не запрещает этого (хотя можно было и добавить какой-то префикс явно). Это удобно, потому что потом это имя используется в качестве инициализатора для других полей объекта:
option : sui.button
{
category =step(-3)
value =step(-2)
command @.category + "(" + @.value + ")"
}
Поле
value рассчитывается как второй с конца элемент пути (то есть это и будет та цифра 8, 16 и т.д.), а поле
command потом автоматически рассчитывается как имя категории плюс эта цифра в скобках, то есть перечисляемые кнопки автоматически привязываются к командам size(8), size(16) и т.д. А потом где-то в коде С++ пишем:
dialog.command("size")
.bind<Int>([&](Int value){info.size.set_all(value);})
.bind_status<Int>([&](AutomationCommand::Status& status, Int value){status.checked = info.size.x == value;});
И все, полученные кнопки управляют значением переменной
info.size подобно Radio Button.