Кросс-разработка GUI в OCaml с естественным внешним видом - PullRequest
5 голосов
/ 28 января 2011

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

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

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

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

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

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

Ура, Surikator

1 Ответ

3 голосов
/ 28 января 2011

Предполагая, что вы можете заставить 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 - ваш лучший вариант в текущей среде.

...