【问题标题】:Adobe Adam and Eve (C++ ASL): how to bind Eve variable so to get it updated inside C++ application?Adobe Adam and Eve (C++ ASL):如何绑定 Eve 变量以便在 C++ 应用程序中更新它?
【发布时间】:2011-09-20 03:32:54
【问题描述】:

所以我们知道how to compile it,我们已经看过它的演示并喜欢它。我们可能只看到了基于它的one real life opensource project。所以我查看了示例,只看到了 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);
}

在其中,Adam 文件绑定到它(理论上,因为我不太明白如何将 Eve 绑定到 adam,也没有看到如何做到这一点的教程),与

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

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

在其中,每次将flatness 变量更改为我调用的一些C++ 函数(例如一个简单的计算新flatness 值)

那么如何用 Adob​​e Adam 和 Eve 以及 Boost 来实现这样的东西呢?

更新

我们已经尝试做到这一点here 并且它有效但不是以实时反馈方式 - 仅在对话关闭操作时。与here 相比,但由于我们的compile evrething on linux absession,我们暂停了 ASL 编程的开发,并开始投入时间在 Linux 操作系统上进行 ASL 编译。

【问题讨论】:

  • 我不想玩 Wx... 也不想玩 Qt。我真的很想获得有关 Adob​​e A&E 的教程,因为我喜欢它的结构、逻辑、想法、大小、制造商、许可证 (MIT)、跨平台风格,当然至少还有理论上的一致性。=)
  • 如果您确实遇到了任何好的 ASL 资源/教程,请将它们发布在这里,因为我也很好奇。 :-]

标签: c++ user-interface boost adam asl


【解决方案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。通常,您将 bind_layout_proc 用于回调,该回调将为您处理参数评估并调用一个简化的回调,该回调采用带有参数的字典。

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

就是这样 - 当尝试让 Adam/Eve 使用新的 UI 框架时 - 从小处着手。我通常只从一个包含两个复选框的窗口开始,然后先连接 Eve。完成后,添加 Adam 和一个连接两个布尔单元格的简单表格,这样您就可以查看事情是否正确发生。完成后,您会发现连接更复杂的 UI 非常简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    相关资源
    最近更新 更多