用户界面-AdobeAdamandEve(C++ASL):如何绑定Eve变量,以便在C++应用程序中更新它

user interface - Adobe Adam and Eve (C++ ASL): how to bind Eve variable so to get it updated inside C++ application?

本文关键字:C++ 更新 应用程序 Eve C++ASL -AdobeAdamandEve 何绑定 用户界面 绑定 变量      更新时间:2023-10-16

所以我们知道如何编译它,我们看过它的演示,也很喜欢它。我们可能只见过一个基于它的真实开源项目。所以我看了一些示例,只看到了3个相当长的C++应用程序,它们可以是我最感兴趣的ASLtestadam_tutorialASLtestadam_smokeASLtesteve_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);
}

在它中,Adam文件绑定到它(理论上,因为我不太明白如何将Eve绑定到Adam,也看不到tutorialon如何做到这一点),带有

sheet clipping_path
{
output:
result          <== { path: path, flatness: flatness };
interface:
unlink flatness : 0.0 <== (path == empty) ? 0.0 : flatness;
path            : 1;
}

在它中,使每次flatness变量改变我的一些C++函数称为(例如一个简单的新flatness值的定制)

那个么,如何用AdobeAdamandEve和Boost来实现这样的东西呢?

更新

我们在这里尝试过,它起到了作用,但不是以实时反馈的方式——只是在对话框关闭时。除此之外,由于我们对linux缺席的编译反思,我们暂停了ASL编程的开发,并开始在linux操作系统上投入时间进行ASL编译。

ASL开发者邮件列表中是询问有关ASL问题的好地方:http://sourceforge.net/mail/?group_id=132417.

你可能想看看"开始"测试应用程序。虽然这只运行Mac和Win,但它确实展示了如何将事情连接起来。

其基本思想是,当解析布局描述(Eve)时,它将调用您的add_view_prochttp://stlab.adobe.com/structadobe_1_1eve__callback__suite__t.html#a964b55af7417ae24aacbf552d1efbda4带有arguments表达式。通常,您使用bind_layout_proc进行回调,该回调将处理您的参数求值,并调用一个带有参数的字典的简化回调。

当调用回调时,通常会创建一个适当的小部件,并将字典与小部件关联,或者从字典中提取感兴趣的参数并将其存储在结构中。使用bind参数,可以使用sheet_t上的monitor_xxxx函数设置与关联工作表(Adam)的回调。通常使用monitor_value和monitor_enabled。调用时,您可以在小部件上设置值或启用状态。当用户更改小部件的值,并调用小部件时(可以通过事件处理程序、回调或UI工具包支持的任何机制),您可以调用sheet_t::set()来设置单元格的值,然后调用sheet_t::update()来重新计算表。

仅此而已——当试图让亚当/夏娃使用一个新的UI框架时——从小处着手。我通常只从一个包含两个复选框的窗口开始,然后先连接伊芙。一旦完成,添加Adam和一个连接两个布尔单元格的简单表格,这样你就可以看到事情是否正确。一旦你做到了这一点,你会发现连接更复杂的UI非常简单。