IUP | |
---|---|
Тип | SDK |
Авторы | Tecgraf/PUC-Rio в сотрудничестве с Petrobras |
Написана на | Си[1] |
Операционные системы | Кроссплатформенное программное обеспечение (Linux и Microsoft Windows) |
Последняя версия | 3.30 (30 июля 2020) |
Лицензия | MIT |
Сайт | IUP |
IUP — кроссплатформенная библиотека базовых элементов графического пользовательского интерфейса с использованием языков C и Lua. С её помощью можно создавать быстрые, не требующие компиляции графические приложения.
В среде Linux и других Unix-подобных операционных систем работает посредством Gtk, Motif/Lesstif или непосредственно взаимодействуя с X-сервером. В Windows использует графические средства данной операционной системы. В 2017 году были представлены бэкэнды, позволяющие разрабатывать с помощью IUP нативные приложения для MacOS[2], iOS[3], Android[4], а также веб-приложения с использованием Emscripten[5][6].
Библиотека написана на C, её архитектура позволяет достаточно естественным образом использовать её из объектно-ориентированного кода на C++. Будучи, как и Lua, разработанной в Католическом университете Рио-де-Жанейро[7], она «из коробки» поддерживает интеграцию с этим скриптовым языком.
Доступны также библиотеки-обвязки для использования IUP во множестве языков, таких как Ruby[8], Euphoria[9], FreeBasic[10], Perl[11], Scheme[12], Eiffel[13], Nim[14] и других.
Для описания файлов ресурсов в IUP традиционно используется язык LED, который в современных версиях библиотеки считается устаревшим и заменяется языком Lua. Можно создавать IUP-приложения и без использования LED или Lua, пользуясь только C API.
В поставку библиотеки входит также разработанная в 1994 году IupVisualLED[15], простая RAD IDE, позволяющая редактировать GUI-диалоги в режиме, близком к WYSIWYG. IupVisualLED также позволяет экспорт полученного кода на LED, Lua или C. Для работы с Lua-скриптами в состав IUP входит IupLuaScripter — редактор Lua-кода с поддержкой отладки.
IUP имеет достаточно минималистичный API (около ста C-функций) и отличается от других аналогичных библиотек способом реализации 4 важных концепций:
IupMap
для этого диалога.IupFill
, IupHbox
, IupVbox
и т. д. (впрочем, явное позиционирование допускается внутри виджетов-контейнеров специального типа).IupSetFunction имя
с последующим связыванием атрибутов обратного вызова с использованием IupSetAttribute
. Также можно осуществлять прямое связывание виджета с callback-функцией с помощью IupSetCallback
.При проектировании IUP удалены ограничения на класс/тип экземпляров объекта, но сохранена иерархия наследования в стиле Lua (см. прототипное программирование).
Начиная с версии 3.9, IUP поддерживает работу со строками в формате UTF-8.
Кроме функций создания виджетов, IUP предлагает ряд дополнительных возможностей:
IUP доступно для скачивания, бесплатного использования, модификации, использования в коммерческих целях и распространения под лицензией MIT[16].
Инструментарии (наборы) элементов графического интерфейса | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Низко- уровневые |
| ||||||||||||||||||||||||||
Высоко- уровневые |
|