Interested Article - IUP
- 2021-08-28
- 1
IUP — кроссплатформенная библиотека базовых элементов графического пользовательского интерфейса с использованием языков C и Lua . С её помощью можно создавать быстрые, не требующие компиляции графические приложения.
Поддерживаемые языки и платформы
В среде Linux и других Unix-подобных операционных систем работает посредством Gtk , Motif / Lesstif или непосредственно взаимодействуя с X-сервером . В Windows использует графические средства данной операционной системы. В 2017 году были представлены бэкэнды, позволяющие разрабатывать с помощью IUP нативные приложения для MacOS , iOS , Android , а также веб-приложения с использованием Emscripten .
Библиотека написана на C , её архитектура позволяет достаточно естественным образом использовать её из объектно-ориентированного кода на C++ . Будучи, как и Lua , разработанной в , она «из коробки» поддерживает интеграцию с этим скриптовым языком.
Доступны также библиотеки-обвязки для использования IUP во множестве языков, таких как Ruby , Euphoria , FreeBasic , Perl , Scheme , Eiffel , Nim и других.
Особенности
Для описания файлов ресурсов в IUP традиционно используется язык LED , который в современных версиях библиотеки считается устаревшим и заменяется языком Lua . Можно создавать IUP-приложения и без использования LED или Lua, пользуясь только C API.
В поставку библиотеки входит также разработанная в 1994 году IupVisualLED , простая 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 .
Примечания
- — 2006.
- на сайте GitHub
- на сайте GitHub
- на сайте GitHub
- на сайте GitHub
- на YouTube
- Часть разработчиков IUP являются также разработчиками Lua
- от 14 апреля 2011 на Wayback Machine ( от 11 июня 2018 на Wayback Machine на github )
- . Дата обращения: 26 апреля 2011. 14 июля 2012 года.
- от 4 февраля 2010 на Wayback Machine на форуме FreeBasic
- . Дата обращения: 26 апреля 2011. 11 июня 2018 года.
- . Дата обращения: 29 мая 2012. Архивировано из 9 марта 2011 года. 9 марта 2011 года.
- от 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. (порт.) // M.Sc. dissertation, Computer Science Department. — , 1994. 2 сентября 2009 года.
- . Дата обращения: 15 сентября 2009. 22 октября 2009 года.
Ссылки
- от 26 февраля 2010 на Wayback Machine
- Scuri, A. «IUP - Portable User Interface».
- 2021-08-28
- 1