IUP
IUP | |
---|---|
Тип | SDK |
Авторы | Tecgraf/PUC-Rio в сотрудничестве сPetrobras |
Написана на | Си[1] |
Операционные системы | Кроссплатформенное программное обеспечение (Linux иMicrosoft Windows) |
Последняя версия | 3.31 (13 октября2023) |
Лицензия | 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], простаяRADIDE, позволяющая редактировать GUI-диалоги в режиме, близком кWYSIWYG. IupVisualLED также позволяет экспорт полученного кода на LED, Lua или C. Для работы с Lua-скриптами в состав IUP входит IupLuaScripter — редактор Lua-кода с поддержкой отладки.
IUP имеет достаточно минималистичныйAPI (около ста C-функций) и отличается от других аналогичных библиотек способом реализации 4 важных концепций:
- Время создание управляющих элементов. При созданиивиджета не происходит его немедленного отображения вОС. Оно выполняется при показе содержащего виджет диалога или путём ручного вызова функции
IupMap
для этого диалога. - Система атрибутов. В IUP очень мало функций, поскольку основным способом работы с виджетами является доступ к их атрибутам (текстового типа) с помощью функций IupSetAttribute и IupGetAttribute.
- Абстрактное позиционирование макета. Виджеты в IUP никогда не позиционируются путём явного задания координат; их позиции рассчитываются динамически, в соответствии с абстрактной иерархией макета, задаваемой с помощью виджетов-контейнеров
IupFill
,IupHbox
,IupVbox
и т. д. (впрочем, явное позиционирование допускается внутри виджетов-контейнеров специального типа). - Система обратных вызовов. ЯзыкLED поддерживает косвенное задание связи виджетов с функциямиобратного вызова. Для связывания Си-функции используется конструкция
IupSetFunction имя
с последующим связыванием атрибутов обратного вызова с использованиемIupSetAttribute
. Также можно осуществлять прямое связывание виджета с callback-функцией с помощьюIupSetCallback
.
При проектировании IUP удалены ограничения на класс/тип экземпляров объекта, но сохранена иерархия наследования в стиле Lua (см.прототипное программирование).
Начиная с версии 3.9, IUP поддерживает работу со строками в форматеUTF-8.
Дополнительные функции
[править |править код]Кроме функций создания виджетов, IUP предлагает ряд дополнительных возможностей:
- рисование;
- создание массивов и хеш-таблиц;
- работа со строками;
- получение информации о шрифтах;
- получение информации о системе.
Лицензия
[править |править код]IUP доступно для скачивания, бесплатного использования, модификации, использования в коммерческих целях и распространения под лицензией MIT[16].
Примечания
[править |править код]- ↑The iup Open Source Project on Open Hub: Languages Page — 2006.
- ↑Проект IupCocoa на сайтеGitHub
- ↑Проект IupCocoaTouch на сайтеGitHub
- ↑Проект IupAndroid на сайтеGitHub
- ↑Проект IupEmscripten на сайтеGitHub
- ↑Lua Workshop 2017: IUP Next - Eric Wing & Chris Matzenbach наYouTube
- ↑Часть разработчиков IUP являются также разработчиками Lua
- ↑Ruby-IUPАрхивная копия от 14 апреля 2011 наWayback Machine (репозиторий исходного кодаАрхивная копия от 11 июня 2018 наWayback Machine наgithub)
- ↑EuIup (неопр.). Дата обращения: 26 апреля 2011. Архивировано 14 июля 2012 года.
- ↑Portable GUI toolkit (IUP) version 3.0 (RC2)Архивная копия от 4 февраля 2010 наWayback Machine на форуме FreeBasic
- ↑perl-iup (неопр.). Дата обращения: 26 апреля 2011. Архивировано 11 июня 2018 года.
- ↑IUP: IUP (неопр.). Дата обращения: 29 мая 2012. Архивировано изоригинала 9 марта 2011 года.Архивировано 9 марта 2011 года.
- ↑eiffel-iupАрхивная копия от 26 сентября 2019 наWayback Machine — IUP toolkit library for GOBO Eiffel
- ↑IUP-wrapperявляетсяАрхивная копия от 26 января 2017 наWayback Machine частью стандартной библиотеки Nim
- ↑Oliveira Prates, R.; Gattass, M. ;and Figueiredo, L. H. Visual LED: uma ferramenta interativa para geração de interfaces gráficas (порт.) // M.Sc. dissertation, Computer Science Department. —PUC-Rio, 1994. Архивировано 2 сентября 2009 года.
- ↑Tecgraf Library License (неопр.). Дата обращения: 15 сентября 2009. Архивировано 22 октября 2009 года.
Ссылки
[править |править код]- Проект IUP
- IUP-UsersАрхивная копия от 26 февраля 2010 наWayback Machine
- Scuri, A. «IUP - Portable User Interface».Software Developer's Journal. Dec/2005.iup_sdj2005.pdf
- Википедия:Cite web (заменить webcitation-архив: deadlink no)
- Википедия:Cite web (не указан язык)
- Википедия:Статьи с источниками из Викиданных
- Википедия:Статьи без изображений (тип: программное обеспечение)
- Страницы с неизвестными параметрами шаблона Программа
- ПРО:ИТ:Статьи по алфавиту
- ПРО:ИТ:Последняя правка: в прошлом году