Adobe Adam and Eve (C++ ASL): как связать переменную Eve, чтобы она обновлялась внутри приложения C++?

Итак, мы знаем, , как компилировать это, мы видели его демо и нам понравилось. Мы видели, вероятно, только один реальный проект с открытым исходным кодом, основанный на нем. Итак, я смотрю на примеры и вижу только 3 довольно длинных приложения на C++, которые могут меня заинтересовать ASL\test\adam_tutorial\, ASL\test\adam_smoke\, ASL\test\eve_smoke\. Но я до сих пор не понимаю, как сделать простой файл Eve с помощью:

dialog(name: "Clipping Path")
{
 column(child_horizontal: align_fill)
 {
   popup(name: "Path:", bind: @path, items:
     [
     { name: "None", value: empty },
     { name: "Path 1", value: 1 },
     { name: "Path 2", value: 2 }
     ]);
   edit_number(name: "Flatness:", digits: 9, bind: @flatness);
  }
 button(name: "OK", default: true, bind: @result);
}

в нем файл Адама привязан к нему (теоретически, потому что я не совсем понимаю, как привязать Еву к Адаму и не вижу учебника, как это сделать), с

sheet clipping_path
{
output:
result          <== { path: path, flatness: flatness };

interface:
unlink flatness : 0.0 <== (path == empty) ? 0.0 : flatness;
path            : 1;
}

в нем каждый раз, когда переменная flatness изменяется, вызывается какая-то моя функция C++ (например, простая функция, определяющая новое значение flatness)

Итак, как реализовать это с помощью Adobe Adam и Eve и, конечно же, Boost?

Обновить

Мы пытались это сделать здесь, и это сработало, но не в режиме прямой обратной связи - только при закрытии диалога. А затем здесь, но из-за нашего компилировать все на linux absession мы приостановили наши разработки в области программирования ASL и начали вкладывать время в компиляцию ASL в ОС Linux.


person Rella    schedule 22.06.2011    source источник
comment
И я не хочу играть ни с Wx... ни с Qt. Я очень хотел бы получить учебник по Adobe A&E, потому что мне нравится его структура, логика, идея, размер, производитель, лицензия (MIT), кроссплатформенный стиль и, конечно, хотя бы теоретическая простота. =)   -  person Rella    schedule 22.06.2011
comment
Если вам попадутся какие-либо хорошие ресурсы/учебники по ASL, пожалуйста, разместите их здесь, так как мне тоже очень любопытно. :-]   -  person ildjarn    schedule 22.06.2011


Ответы (1)


Задавать вопросы о ASL лучше всего в списке рассылки разработчиков ASL: http://sourceforge.net/mail/?group_id=132417.

Возможно, вы захотите взглянуть на тестовое приложение «Начало». Хотя это работает только с Mac и Win, оно демонстрирует, как все подключить.

Основная идея заключается в том, что при анализе описания макета (Eve) он вызывает ваш add_view_proc http://stlab.adobe.com/structadobe_1_1eve__callback__suite__t.html#a964b55af7417ae24aacbf552d1efbda4 с выражением arguments. Обычно вы используете bind_layout_proc для обратного вызова, который обрабатывает оценку аргумента для вас и вызывает упрощенный обратный вызов, который принимает словарь с аргументами.

Когда ваш обратный вызов вызывается, вы обычно создаете соответствующий виджет и связываете словарь с виджетом или извлекаете интересующие аргументы из словаря и сохраняете их в структуре. Используя аргумент привязки, вы можете настроить обратные вызовы со связанным листом (Адамом), используя функции monitor_xxxx на листе_t. Обычно вы будете использовать monitor_value и monitor_enabled. При вызове вы устанавливаете значение или включенное состояние виджета. Когда значение виджета изменяется пользователем и виджет вызывается (это может быть через обработчик событий, обратный вызов или любой другой механизм, поддерживаемый вашим набором инструментов пользовательского интерфейса), вы вызываете sheet_t::set(), чтобы установить значение ячейки а затем sheet_t::update() для пересчета листа.

Вот и все. Пытаясь заставить Адама/Еву работать с новой структурой пользовательского интерфейса, начните с малого. Обычно я начинаю с окна, содержащего два флажка, и сначала подключаю Еву. Как только это будет сделано, добавьте Адама и простой лист, соединяющий две логические ячейки, чтобы вы могли видеть, все ли происходит правильно. Как только вы это сделаете, вы обнаружите, что довольно просто подключить гораздо более сложные пользовательские интерфейсы.

person Sean Parent    schedule 11.11.2011