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++ под названием (Простая новая couting flatness значение например)

Итак, как реализовать такую ​​вещь с Adobe Adam и Eve и Boost ofcourse?

Обновить

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

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 с выражением аргументов. Обычно вы используете bind_layout_proc для обратного вызова, который будет обрабатывать оценку аргумента для вашего и вызывать упрощенный обратный вызов, который принимает словарь с аргументами.

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

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

Другие вопросы по тегам