Adobe Eve ASL: как сделать файл Eve в окне графического интерфейса? - PullRequest
1 голос
/ 23 июня 2011

Итак, у нас есть простые .eve и .adam файлы, скомпилированные ASL , и все включено для boost и adobe. Нам нужна кроссплатформенная функция, чтобы сделать наш макет визуализированным и перемещаемым как реальное окно на нашей платформе (нам это нужно для Mac OS X, Windows, Linux). Как это сделать?

Мы начали пытаться двигаться в направлении упрощения некоторых учебных пособий, которые мы нашли в папке ASL (begin), и получили некоторые результаты , которые вы можете увидеть здесь . Но наш подход не кроссплатформенный или какой-либо другой способ получить = (поэтому мы просим вас помочь в том, чтобы отобразить простое окно с кнопкой «ОК», определенной файлами adam и eve?

Вот пример простого Адама и простых файлов накануне

layout my_dialog
{
    view dialog(name: localize(\"<xstr id='my_dialog_name'>My Dialog</xstr>\"))
    {
        slider(bind: @my_value, format: {first: 0, last: 100});
        edit_number(name: 'Value:', bind: @my_value, format: '#', alt: 'Alters the value of the slider');
        button (items: [
                           { name: localize(\"<xstr id='ok'>OK</xstr>\"), action: @ok, bind: @result, alt: 'Perform the command with the current settings' },
                           { name: localize(\"<xstr id='reset'>Reset</xstr>\"), action: @reset, modifiers: @opt, alt: 'Reset the dialog settings' }
                       ]);
    }
}

sheet my_sheet
{
interface:
   my_value: 42;
output:
   result <== { value: my_value };
}

, который должен генерировать подобное окно на окнах:

enter image description here

Пожалуйста, помогите.

1 Ответ

1 голос
/ 30 июня 2011

Мы сделали это здесь!) это действительно просто.

Источник:

#include <boost/thread/tss.hpp>
#include <adobe/future/modal_dialog_interface.hpp>
#include <boost/filesystem/path.hpp>

using namespace std;

inline bool always_break(adobe::name_t, const adobe::any_regular_t&)
    { return true; }

void dialog()
{
    stringstream       sheet;
    stringstream       layout;
    boost::filesystem::path icon_directory_path;

    // The sheet for the dialog
    sheet <<
                        "sheet my_sheet\n"
                        "{\n"
                        "interface:\n"
                        "   my_value: 42;\n"
                        "output:\n"
                        "   result <== { value: my_value };\n"
                        "}\n"
    ;

    // the layout
    layout <<
                                "layout my_dialog\n"
                                "{\n"
                                "    view dialog(name: 'My Dialog')\n"
                                "    {\n"
                                "        slider(bind: @my_value, format: {first: 0, last: 100});\n"
                                "        edit_number(name: 'Value:', bind: @my_value, format: '#', alt: 'Alters the value of the slider');\n"
                                "        button (items: [\n"
                                "                           { name: 'OK', action: @ok, bind: @result, alt: 'Perform the command with the current settings' },\n"
                                "                           { name: 'Reset', action: @reset, modifiers: @opt, alt: 'Reset the dialog settings' }\n"
                                "                       ]);\n"
                                "    }\n"
                                "}\n"
        ;

    // finally set up the params for the modal dialog interface call
    adobe::dialog_result_t result(adobe::handle_dialog(adobe::dictionary_t(),
                                                       adobe::dictionary_t(),
                                                       adobe::dictionary_t(),
                                                       adobe::dialog_display_s,
                                                       layout,
                                                       sheet,
                                                       &always_break,
                                                       icon_directory_path));

    int is_checked(result.command_m[adobe::static_name_t("value")].cast<int>());
        cout << "return value: " << is_checked << endl;
}

int  main(  )
{
        dialog();
        cin.get();
    return 0;
} 
...