Interested Article - IUP

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 .

Примечания

  1. — 2006.
  2. на сайте GitHub
  3. на сайте GitHub
  4. на сайте GitHub
  5. на сайте GitHub
  6. на YouTube
  7. Часть разработчиков IUP являются также разработчиками Lua
  8. от 14 апреля 2011 на Wayback Machine ( от 11 июня 2018 на Wayback Machine на github )
  9. . Дата обращения: 26 апреля 2011. 14 июля 2012 года.
  10. от 4 февраля 2010 на Wayback Machine на форуме FreeBasic
  11. . Дата обращения: 26 апреля 2011. 11 июня 2018 года.
  12. . Дата обращения: 29 мая 2012. Архивировано из 9 марта 2011 года. 9 марта 2011 года.
  13. от 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. (порт.) // M.Sc. dissertation, Computer Science Department. — , 1994. 2 сентября 2009 года.
  16. . Дата обращения: 15 сентября 2009. 22 октября 2009 года.

Ссылки

  • от 26 февраля 2010 на Wayback Machine
  • Scuri, A. «IUP - Portable User Interface».
Источник —

Same as IUP