Кросс-разработка GUI в OCaml с естественным внешним видом

Я хотел бы создать графический интерфейс для приложения OCaml, которое я пишу. Моей первой идеей было использовать GTK+. Я хотел бы, чтобы мое приложение работало на Mac, Linux, Windows с естественным внешним видом. Я знаю, что, хотя GTK+ по умолчанию использует X11 на Mac (что выглядит ужасно), есть gtk-osx-приложение, которое использует кварц и выглядит естественно, и которое я только что установил с помощью macports.

У меня три вопроса:

(1) действительно ли возможно использовать gtk-osx-application +quartz+no_x11 с OCaml? (Моя установка GODI, которая ранее (с gtk2 на базе x11) установила lablgtk2 без проблем, теперь (с gtk-osx-application +quartz+no_x11 а предыдущий x11 на базе gtk2 удален) жалуется на то что не нашел /opt/local/lib/libgtk-x11-2.0.0.dylib, что связано с x11. Но, насколько я знаю, при установке lablgtk2 через GODI невозможно выбрать кварц вместо x11.)

(2) Если я разрабатываю свой код на моем Mac с помощью gtk-osx-application, могу ли я использовать этот код для компиляции на других платформах, использующих разные GTK, или это может вызвать проблемы?

(3) Если это вызывает проблемы, знаете ли вы о какой-либо другой среде для разработки графических интерфейсов в OCaml, которая потенциально может быть полезной как с точки зрения внешнего вида, так и с точки зрения удобства использования? (Я знаю о labltk, но я бы предпочел что-то с более широкими возможностями, например, возможность использовать ноутбуки, панели с вкладками и возможность использовать Glade для быстрого проектирования графического интерфейса).

Спасибо за любую помощь!

Ура, Surikator

1 ответ

Решение

Предполагая, что вы можете заставить lablgtk работать, это, вероятно, ваш лучший выбор в настоящее время.

Чтобы заставить его работать: вы пытались пересобрать lablgtk после удаления X11 GTK и установки Quartz GTK? LablGTK, построенный на X11 GTK, естественно, не будет работать на Quartz GTK, поскольку он будет связан с неверной библиотекой, но восстановление может быть успешным. Также может быть, что LablGTK не сможет правильно определить, что интеграционные вызовы X11 не работают и, следовательно, не могут быть собраны, но я ожидаю, что это будет не слишком сложно исправить, поскольку LablGTK действительно поддерживает Windows.

Если вы разрабатываете код для GTK на Mac, он должен отлично работать на других платформах. Конечно, вы захотите проверить это, но это должно сработать. Будьте осторожны, чтобы использовать средства GTK для правильной работы порядка кнопок диалога.

Я думаю, что когда-то был набор привязок OCaml к wxWidgets, но, похоже, они не используются широко, и с моим опытом работы с wx больно. Также была проделана некоторая работа по созданию привязок Qt, что было бы замечательно, но я не думаю, что есть какие-либо проекты с хорошим прогрессом в этом направлении.

Если пользовательский интерфейс представляет собой небольшую часть вашего проекта, вы можете взглянуть на его отделение от бэкэнда и написание пользовательского интерфейса на C++ с помощью Qt или на создание собственных платформенных пользовательских интерфейсов и на то, чтобы пользовательский интерфейс вызывал код OCaml во встроенном время выполнения, чтобы получить реальную работу. Но это, вероятно, больше работы и может не принести вам много пользы, в зависимости от вашего приложения.

Итак: GTK - ваш лучший вариант в нынешнем ландшафте.

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