用户界面-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?
所以我们知道如何编译它,我们看过它的演示,也很喜欢它。我们可能只见过一个基于它的真实开源项目。所以我看了一些示例,只看到了3个相当长的C++应用程序,它们可以是我最感兴趣的ASLtestadam_tutorial
、ASLtestadam_smoke
和ASLtesteve_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非常简单。
- 从C++本机插件更新Vector3数组
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- cmake更新缓存的变量
- 更新到莫哈韦后出现cmath错误
- OpenMP:并行更新数组总是需要减少数组吗
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 指针没有更新它在void函数内部指向的值
- 如何在c++中获取要更新的值
- 已修改的LinkedList未在文本文件本身中更新
- Qt:当QListView获得新条目时,如何更新QStringList
- 更新的矢量元素不打印
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 如何在ECS框架中更新组件数据和通知系统
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- 如果我想在没有更新编译器的情况下使用新功能,该怎么办?
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 在 emscripten 网页汇编正在运行期间更新进度条?
- 在运行时使用范围更新结果
- 用非原子更新原子变量,反之亦然