Меню
Главная
Случайная статья
Настройки
|
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 для этого диалога.
- Система атрибутов. В 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 года.
- 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 gerao de interfaces grficas (порт.) // M.Sc. dissertation, Computer Science Department. — PUC-Rio, 1994. Архивировано 2 сентября 2009 года.
- Tecgraf Library License (неопр.). Дата обращения: 15 сентября 2009. Архивировано 22 октября 2009 года.
Ссылки
|
|