IUP

Материал из Википедии — свободной энциклопедии
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 15 марта 2021 года; проверки требуют9 правок.
Перейти к навигацииПерейти к поиску
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].

Примечания

[править |править код]
  1. The iup Open Source Project on Open Hub: Languages Page — 2006.
  2. Проект IupCocoa на сайтеGitHub
  3. Проект IupCocoaTouch на сайтеGitHub
  4. Проект IupAndroid на сайтеGitHub
  5. Проект IupEmscripten на сайтеGitHub
  6. Lua Workshop 2017: IUP Next - Eric Wing & Chris Matzenbach наYouTube
  7. Часть разработчиков IUP являются также разработчиками Lua
  8. Ruby-IUPАрхивная копия от 14 апреля 2011 наWayback Machine (репозиторий исходного кодаАрхивная копия от 11 июня 2018 наWayback Machine наgithub)
  9. EuIup  (неопр.). Дата обращения: 26 апреля 2011. Архивировано 14 июля 2012 года.
  10. Portable GUI toolkit (IUP) version 3.0 (RC2)Архивная копия от 4 февраля 2010 наWayback Machine на форуме FreeBasic
  11. perl-iup  (неопр.). Дата обращения: 26 апреля 2011. Архивировано 11 июня 2018 года.
  12. IUP: IUP  (неопр.). Дата обращения: 29 мая 2012. Архивировано изоригинала 9 марта 2011 года.Архивировано 9 марта 2011 года.
  13. eiffel-iupАрхивная копия от 26 сентября 2019 наWayback Machine — IUP toolkit library for GOBO Eiffel
  14. IUP-wrapperявляетсяАрхивная копия от 26 января 2017 наWayback Machine частью стандартной библиотеки Nim
  15. 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 года.
  16. Tecgraf Library License  (неопр.). Дата обращения: 15 сентября 2009. Архивировано 22 октября 2009 года.

Ссылки

[править |править код]
Перейти к шаблону «Lua (язык)»
КомпиляторыФреймворки иDLLПорты и дистрибутивыIDEsПриложения
Перейти к шаблону «Инструментарии виджетов»
Инструментарии (наборы)элементов графического интерфейса
Низко-
уровневые
Высоко-
уровневые
Amiga OS
Mac OS и
macOS
Windows
UNIX, подX
Кросс-
платфор-
менные
На основе Flash
На основе XML,
AJAX или SVG
На основе Java
На основе
C или C++
На основе Common Lisp
На основе Pascal
На основе Python
На основе Objective C
Источник —https://ru.wikipedia.org/w/index.php?title=IUP&oldid=140586287
Категории:
Скрытые категории: